中断初始化设置,,要求外部中断1下降沿触发,高优先级,将P1.6上的发光二极管交替点亮。设计硬件,编写程序
时间: 2023-07-15 17:11:05 浏览: 53
硬件设计:
1.外部中断1引脚(INT1)连到P3.3引脚。
2.发光二极管(LED1和LED2)分别连到P1.6和P1.7引脚。
3.在INT1引脚和地之间加上一个下降沿触发的触发器。
程序设计:
```
#include <reg52.h>
sbit LED1=P1^6;
sbit LED2=P1^7;
void delay(unsigned int i)
{
while(i--);
}
void INT1_ISR() interrupt 2
{
static bit flag=0;
if(flag==0)
{
LED1=1;
LED2=0;
flag=1;
}
else
{
LED1=0;
LED2=1;
flag=0;
}
delay(50000); //延时,防止抖动触发
}
void main()
{
IT1=1; //设置INT1下降沿触发
EX1=1; //开启INT1中断
EA=1; //开启总中断
while(1);
}
```
程序说明:
1.在程序中使用了一个静态变量flag来记录当前是哪个LED亮。
2.INT1_ISR()函数用来处理外部中断1的中断服务程序,其中通过flag变量控制LED的交替点亮。
3.在main()函数中,先设置INT1下降沿触发,再开启INT1中断和总中断。最后进入死循环,等待中断触发。
4.delay()函数用来延时,防止抖动触发。这里未做精确计算,只是大概估算了一个时间。如果需要更精确的延时,可以使用定时器或者其他方法。