中断函数是硬件或者 *** 作系统自动调用的,也就是说只要满足触发条件,就会自动调用中断函数(此时主函数是停止的)。当中断函数执行完毕,又返回主函数继续执行主函数。然后这样不断的循环,反正只要是触发中断的条件一满足。就会自动进入中断(前提是你的中断的配置是正确的)
二、中断函数的定义
1、中断函数定义的格式为:
函数类型 函数名 interrupt n using n
其中: Interrupt后面的n是中断号。
关键字using后面的n是所选择的寄存器组,取值范围是0-3.
定义中断函数时,using是一个选项,可以省略不用。如果不用则由编译器选择一个寄存器组作为绝对寄存器组。
2、8051的中断过程通过使用interrupt关键字和中断号来实现,中断号告诉编译器中断程序的入口地址。中断号对应着IE寄存器中的使能位,换句话说,IE寄存器中的0位对应着外部中断0,相应的外部中断0的中断号是0. IE寄存器中的使能位与外部中断对应关系:
中断号中断源
0 外部中断0
1 定时器0
2 外部中断1
3定时器1中断
4串行口中断
5定时器2中断
外部中断0设置为低电平触发,去掉while循环后一直按下按键实际代码为delay()
P1=0xfe
delay()
EX0=0
P1=_crol_(P1,1)
delay()
EX0=1
P1=0X00
一直重复.
之前的代码进入中断后会一直循环,并不会退出中断。正确做法中断应该改为:
void
tx0()
interrupt
0
using
0
{
unsigned
char
i
delay()
P1=0xfe
delay()
EX0=0
while(1)
{
P1=_crol_(P1,1)
delay()
if(P3&0x04)
//判断是否松开中断0的按键
{
break
}
}
EX0=1
P1=0X00
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)