首先看数据手册关于外部中断的说明:
这个就是GICR寄存器的内部了,当那个位置1的时候则表示开启允许位。
上图是我们的中断总允许位。
这个主要是控制外部中断的触发方式是低电平或是任何电平变化或是上升沿还是下降沿,在本程序中我们采用了默认的方式低电平触发方式来触发中断的。
上程序了:
#include<iom16v.h>
#include<macros.h>//引用此头文件主要是调用开总中断的函数
#define uint8 unsigned char
#define uint16 unsigned int
void delay(uint16 z)
{
uint16 x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
////////////////////////////////////////////////////////////////////////////
void port_init(void)
{
DDRB=0xff;//配置为输出
PORTB=0x00;//全亮
DDRD=0x00;//配置为输入状态
PORTD=0xff;//配置为上拉状态
}
/////////////////////////////////////////////////////////////////////////////
#pragma interrupt_handler Int0:2
void Int0(void)
{
uint8 temp=0x01;
while(1)
{
if(temp==0x00)
{
temp=0x01;
}
PORTB=~temp;
temp<<=1;
delay(500);
}
}
/////////////////////////////////////////////////////////////////////////////
void main(void)
{
port_init();//端口初始化操作
GICR |=(1<<INT0);//确定为外部中断0使能
SEI();//开总中断允许
while(1);//等待中断的到来
}
文章评论(0条评论)
登录后参与讨论