目的
实现:按键数码管数字加减,运用外部中断函数,消除按键抖动
isis仿真
c代码
#include<reg52.h>
code unsigned char SEG[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
char i=97,j,key1_s,key2_s;
sbit key1=P1^2;
sbit key2=P3^2;
/*延时函数*/
void delay(unsigned int x)
{
while(x--);
}
/*按键*/
void key()
{
/*函数加*/
if(key1==0)
{
delay(300);/*消除按键抖动现象*/
if(key1==0);
key1_s=1;/*按键被按下状态*/
}
if(key1==1&&key1_s==1)/*弹起且被按下过*/
{
key1_s=0;
i++;
}
if(i>99)i=0;
/*函数减*/
if(key2==0)
{
delay(300);/*消除按键抖动现象*/
if(key2==0);
key2_s=1;/*按键被按下状态*/
}
if(key2==1&&key2_s==1)/*弹起且被按下过*/
{
key2_s=0;
i--;
}
if(i<0)i=99;
}
/*数码管显示*/
void shu()
{
P0=0xff;/*清屏*/
switch(j)/*显示*/
{
case 0: P2=0xfe;P0=SEG[i%10]; break;
case 1: P2=0xfd;P0=SEG[i/10]; break;
}
j++;
if(j>1)j=0;
delay(3000);
}
/*主函数*/
void main (void)
{
while(1){
shu();
key();
}
}