
sbit k1=P3^0
sbit k2=P3^1
unsigned char shi,ge
unsigned char code 敬做tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90} //共阳极数码管亮春衡
void 森脊delay(unsigned int z)
{
unsigned int x,y
for(x=zx>0x--)
for(y=110y>0y--)
}
void display()
{
P2=0x01
P0=tab[shi]
delay(10)
P2=0x02
P0=tab[ge]
delay(10)
}
void keyscan()
{
if(k1==0)
{
delay(2)
if(k1==0)
{
while(!k1)
shi++
if(shi==10)
shi=0
}
}
if(k2==0)
{
delay(2)
if(k2==0)
{
while(!k2)
ge++
if(ge==10)
{
ge=0
shi++
if(shi==10)
shi=0
}
}
}
}
void main()
{
while(1)
{
display()
keyscan()
}
}
1、在主程序绝握中一直扫描显示程序2、通过按键触发中断 在中好行断里面进行计数
3、每有一次中断触发 计数指针加一
4、并袜庆加够10次后指针恢复初始状态 即清零
这个实现有好几中方法,你可以用定时器的计数功能,枯银扮比如说用定时器0方式2,设置初值为TH0=#0F5H,TL0=#0F5H.还可以用外部中断实现:在主程序中对按键次数计数,到了10软件触发外部中断(CLR P3.2),在中断搏告服务子程序中将没灶p3.2置1,返回后再跳去统计按键次数。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)