在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
大二上学期做过8051单片机的按键程序,当时项目要求实现按键控制LED屏显示并且接收GPRS传来的数据。当时为了节省成本,就去大西电子市场买来8*8的LED块,然后自己一点一点的拼接成128*16的。做完之后虽然可以运行,但是很勉强,尤其是按键扫描程序没有下面这位哥写得简洁缜密,所以就贴过来,以后用到的时候直接研究:
unsigned char key,key_h,kpush;
unsigned int key_l; //按键连接到p1.0、p1.1、p1.2 void int_t0(void) interrupt 1 { unsigned char dd,i; TL0=TL0+30;TH0=0xfb; //800 /* 按键判别 */ if ((P1&0x7)==0x7) { if ((key_l>30)&&(key_l<800)&&(key_h>30)) { //释放按键,如果之前按键时间少于1秒,读入键值 key=kpush; } if ((++key_h)>200) key_h=200; key_l=0; if (key>=0x80) key=0; //如果之前的按键为长按1秒,清除键值 } else { kpush=P1&0x7; key_l++; if ((key_l>800)&&(key_h>30)) { //如果按键超过1秒,键值加0x80标志长按键 key=kpush|0x80; key_h=0; key_l=0; } } } void main(void) { TMOD=0x1;TR0=1;ET0=1;EA=1; while (1) { while (!key) {} switch (key) { case 1:break; case 2:break; } } } |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论