首页 > 编程知识 正文

delay延时函数冲突(单片机按键扫描函数)

时间:2023-05-04 12:16:51 阅读:75147 作者:4795

不使用键扫描——delay函数的抖动校正方法优点不用delay函数来进行数码管的刷新有利于提高单片机的执行效率。

# include ' ST c15 f2k 60s2. h '/* debug总结: */unsignedcharcodesmg _ Duan ma [ ]={0xc 0,0x F9,0x a4,0xb 0,0x 99,0x 990 voidselecthc 573 (统一通道交换机)通道) case 0: p2=(p20x1f )| 0X00; 布雷克; case4:p2=(p20x1f )| 0X80; 布雷克; case5:p2=(p20x1f )| 0Xa0; 布雷克; case6:p2=(p20x1f )| 0Xc0; 布雷克; case7:P2=(P20x1F )| 0Xe0; 布雷克; } } Void Init系统() selectHC573 ) 5; P0=0x00; 选择HC 573 (0; P0=0xFF; } voiddispalysmg _ bit (unsignedcharpos,unsigned char dat )/* * * * * * * * * * * * * * * * * * * * * *。 //所有段选择SelectHC573(6 (关闭6 ); P0=0x01 pos; 选择HC 573 (0; P0=0xff; 选择HC 573 (7; P0=dat;//不加入//selectHC573(0)/******消隐效果最好的* * * * * * * * * * * * * * * */} void timer0_ init () { tmot th0=(65536-1000 )/256; TL0=(65536-1000 ) 256; EA=1; ET0=1; TR0=1; }无符号char count=0; bit Keysta=1; //抖动去除后的关键值void KeyScan () {静态位备份=1; //保存上次的关键值if (key sta!=backup((/if ) backup==0) ) /放手检测,松开钥匙后(/)//{//count; //if (计数==10 )//计数=0; //(if ) backup==1)//放手检测,按下按钮立即动作) {count; if (计数==10 )计数=0; }backup=Keysta; }}void Display () { Segbuff[0]=0xff; Segbuff[1]=0xff; Segbuff[2]=0xff; Segbuff[3]=SMG_duanma[16]; Segbuff[4]=SMG_duanma[count]; Segbuff[5]=SMG_duanma[16]; Segbuff[6]=0xff; Segbuff[7]=0xff; }void main () {InitSystem ); Timer0_Init (; wile(1) {KeyScan ); 显示(; }voidtimeR0_service(interrupt1) staticunsignedintcount_1ms=0; 静态统一char pos=0; 静态统一char key buf=0x ff; count_1ms;/* * * * * * * * * * * * * * * * * * *交换机(pos ) case0:dispalySMG_bit(pos,segbuff(0) ) 销售点; 布雷克; case1:dispalySMG_bit(pos,Segbuff[1]; 销售点; 布雷克; case2:dispalySMG_bit(pos,Segbuff[2]; 销售点; 布雷克; case3:dispalySMG_bit(pos,Segbuff[3]; 销售点; 布雷克; case4:dispalySMG_bit(pos,Segbuff[4]; 销售点; 布雷克; case5:dispalySMG_bit(pos,Segbuff[5]; 销售点; 布雷克; case6:dispalySMG_bit(pos,Segbuff[6]; 销售点; 布雷克; case7:dispalySMG_bit(pos,Segbuff[7]; pos=0; 布雷克; //********按钮消除抖动************if(count_1ms==2) {count_1ms=0; keybuf=(keybuf1)| P33; if(keybuf==0x00 ) {Keysta=0; (elseif ) keybuf==0xff ) {Keysta=1; } else { }//* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。