C51中断函数在什么情况下被调用?

C51中断函数在什么情况下被调用?,第1张

一、中断函数的调用

中断函数是硬件或者 *** 作系统自动调用的,也就是说只要满足触发条件,就会自动调用中断函数(此时主函数是停止的)。当中断函数执行完毕,又返回主函数继续执行主函数。然后这样不断的循环,反正只要是触发中断的条件一满足。就会自动进入中断(前提是你的中断的配置是正确的)

二、中断函数的定义

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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11048070.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存