采用外部中断编写程序控制数码管显示从00到99,S1控制加计数,S2控制减计数。keil
时间: 2023-12-31 17:03:45 浏览: 112
数码管显示00-99计数器
5星 · 资源好评率100%
首先,需要连接数码管和两个按键到单片机的外部中断引脚。具体的接线方法可以参考芯片手册或者开发板的原理图。
然后,在Keil中新建一个工程,选择对应的单片机型号,并进行硬件配置,包括时钟频率、IO口和外部中断等。
下面是示例代码:
```c
#include<reg52.h>
#include<intrins.h>
sbit S1=P1^0;
sbit S2=P1^1;
unsigned char code Display[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char Count=0;
void delay(unsigned int t)
{
while(t--);
}
void display(unsigned char num)
{
P0=Display[num/10];
P2=0xfe;
_nop_();
_nop_();
P2=0xff;
P0=Display[num%10];
P2=0xfd;
_nop_();
_nop_();
P2=0xff;
}
void key() interrupt 0
{
delay(1000);
if(S1==0) {
Count++;
if(Count>99) Count=0;
}
if(S2==0) {
Count--;
if(Count<0) Count=99;
}
}
void main()
{
EA=1;
EX0=1;
IT0=1;
while(1) {
display(Count);
}
}
```
这段代码中,我们定义了两个外部中断引脚S1和S2,并将它们连接到P1口的0和1号引脚上。同时,我们定义了一个数码管显示的数组和一个计数器Count,用于记录当前显示的数字。
在主函数中,我们开启了全局中断和外部中断0,并将外部中断0设置为下降沿触发。然后在一个死循环中,不断调用display函数来显示Count的值。
在按键中断函数中,我们首先加入了一个延时函数,来消除按键抖动的影响。然后判断按下的是S1还是S2,分别对Count进行加减操作,并进行边界处理。
最后,我们需要在keil中进行编译、烧录和调试,即可实现从00到99的计数,并通过外部中断实现加减计数的功能。
阅读全文