板子上运行现象:烧录程序后,led灯管做二进制加法形式的亮,当我用导线连接 INT0 即P3^2口与P0^0
时候,中断响应了,led灯管停住在当前的状态(锁存原因),而蜂鸣器响了。
大致的编程思路:首先得把总中断打开,接着是需求的中断类型的中断打开(这里的打开,其实就是控制
中断允许寄存器的相关标志位),接着是选择引脚中断触发的方式(电平触发|边沿触发),然后是写
中断处理函数。
中断响应条件:(三个条件同时满足,方能有中断响应)
1.中断源有中断请求;
2.此中断源的中断允许位为1;
3.CPU开中断(即EA=1)。
代码如下:
#include <reg51.h>
#define uint unsigned int
sbit beep=P1^5;
sbit p0_0 = P0^0;
void delay(uint milliSec);
void main()
{ uint NUM = 0xFF;
EA = 1; //开总中断
EX0 = 1; //开外部中断0
IT0 = 0; //设置为电平触发
p0_0 = 0;
while(1)
{
P2=NUM--;
delay(1000);//延时
}
}
//中断处理函数,中断响应时候,系统自己会调用这个方法,这个C51单片机编程设计好的,为用C语言
//开放中断程序带来很大方便。
void exter0() interrupt 0
{
while(1){
beep = 1;
delay(1000);//延时
beep = 0;
}
}