单片机程序、通过外部中断0来响应按键功能。每当按键按下时,进入外部中断0的中断服务程序,对按键的按下次数进行计数,并将计数结果在2位LED上显示出来。
时间: 2023-05-31 07:06:43 浏览: 41
以下是一份基于8051单片机的程序,使用外部中断0来响应按键功能。当按键按下时,程序进入外部中断0的中断服务程序,对按键的按下次数进行计数,并将计数结果在2位LED上显示出来。
```
#include <reg51.h>
sbit LED1 = P1^0; //定义LED1的IO口
sbit LED2 = P1^1; //定义LED2的IO口
sbit KEY = P3^2; //定义按键的IO口
unsigned char count = 0; //按键按下次数的计数器
void main()
{
EA = 1; //开启总中断
EX0 = 1; //开启外部中断0
IT0 = 1; //设置外部中断0为下降沿触发
while(1);
}
void INT0_ISR() interrupt 0 //外部中断0的中断服务程序
{
if(KEY == 0) //检测按键是否按下
{
count++; //计数器加1
if(count > 99) //如果计数器超过99,则清零
{
count = 0;
}
LED1 = count/10; //将计数器的十位数显示在LED1上
LED2 = count%10; //将计数器的个位数显示在LED2上
}
while(!KEY); //等待按键松开
}
```
在上述程序中,首先开启了总中断和外部中断0,并将外部中断0设置为下降沿触发。然后进入一个无限循环,在循环中等待外部中断0的触发。
当按键按下时,程序进入外部中断0的中断服务程序,检测按键是否按下,如果按下,则将计数器加1,然后将计数器的十位数显示在LED1上,将计数器的个位数显示在LED2上。
最后,程序等待按键松开,然后返回主程序继续等待外部中断0的触发。