单片机程序、通过外部中断0来响应按键功能。每当按键按下时,进入外部中断0的中断服务程序,对按键的按下次数进行计数,并将计数结果在2位LED上显示出来。
时间: 2023-05-31 19:07:07 浏览: 86
以下是一个8051单片机程序的示例,可以通过外部中断0来响应按键功能:
```
#include <reg52.h>
sbit LED1 = P1^0; //第一个LED灯连接在P1.0口
sbit LED2 = P1^1; //第二个LED灯连接在P1.1口
unsigned char count = 0; //按键按下次数计数器
void External0_ISR() interrupt 0 //外部中断0的中断服务程序
{
count++; //计数器加1
if(count > 99) //计数器最大值为99
count = 0;
LED1 = count / 10; //将十位数值显示在第一个LED上
LED2 = count % 10; //将个位数值显示在第二个LED上
}
void main()
{
EX0 = 1; //使能外部中断0
EA = 1; //使能总中断
IT0 = 1; //设置外部中断0为下降沿触发
while(1); //程序不断循环等待中断发生
}
```
在这个程序中,我们定义了两个LED灯连接在P1.0口和P1.1口,用于显示按键按下次数的十位数和个位数。我们还定义了一个计数器变量count,用于保存按键按下次数。
在程序的主函数中,我们使能了外部中断0,并设置了外部中断0为下降沿触发。然后程序进入一个无限循环,等待中断发生。
当按键按下时,外部中断0的中断服务程序External0_ISR()将被调用。在这个中断服务程序中,我们将计数器count加1,并检查计数器是否超过了99。如果超过了99,则将计数器重置为0。
然后我们将count的十位数值和个位数值分别计算出来,并将它们显示在LED1和LED2上。我们通过将count除以10来获得十位数值,将count取模10来获得个位数值。
这样,当按键按下时,程序就可以实现对按键按下次数的计数,并将计数结果在两个LED上显示出来。
阅读全文