c51单片机使用外部中断方式来统计独立按键S4或S5按下的次数,并通过LED数码管的低2位来显示按键次数。代码
时间: 2024-02-27 18:57:59 浏览: 137
C51单片机按键与数码管显示
以下是一个简单的c51单片机程序,用于使用外部中断方式来统计独立按键S4或S5按下的次数,并通过LED数码管的低2位来显示按键次数。这个程序使用了P0口作为按键输入引脚,P1口作为LED数码管输出引脚。
```
#include<reg52.h>
sbit S4 = P0^0; // 定义S4按键引脚
sbit S5 = P0^1; // 定义S5按键引脚
sbit LED1 = P1^0; // 定义LED数码管第一位引脚
sbit LED2 = P1^1; // 定义LED数码管第二位引脚
unsigned int count = 0; // 定义按键次数变量
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for(i=0; i<t; i++)
for(j=0; j<1275; j++);
}
void count_isr() interrupt 0 // 外部中断服务函数
{
if(S4 == 0 || S5 == 0) // 判断触发中断的按键是否为S4或S5
count++; // 如果是,则按键次数加1
}
void main()
{
IE = 0x81; // 开启外部中断,并设置中断优先级
IT0 = 1; // 设置中断触发方式为下降沿触发
EA = 1; // 全局中断使能
while(1)
{
LED1 = count % 10; // 将按键次数的个位数输出到LED数码管的第一位
LED2 = count / 10; // 将按键次数的十位数输出到LED数码管的第二位
delay(1000); // 延时1秒钟
}
}
```
这个程序中,我们首先定义了S4和S5按键引脚,LED1和LED2数码管输出引脚,以及按键次数计数变量count。然后,在主函数中启用了外部中断,并设置中断触发方式为下降沿触发。在中断服务函数中,我们判断触发中断的按键是否为S4或S5,如果是,则按键次数加1。最后,我们在主函数中不断读取按键次数,并将次数转换为LED数码管的显示格式,即将次数取模10得到个位数,再将次数除以10取模得到十位数。然后将个位数和十位数分别输出到LED数码管的低2位,即可完成按键次数的显示。程序中的delay函数用于延时1秒钟,以便让人能够看清按键次数的变化。
阅读全文