您的位置 首页 开关

51单片机按键扫描C程序

大二上学期做过8051单片机的按键程序,当时项目要求实现按键控制LED屏显示并且接收GPRS传来的数据。当时为了节省成本,就去大西电子市…

大二上学期做过8051单片机的按键程序,其时项目要求完成按键操控LED屏显现而且接纳GPRS传来的数据。其时为了节约本钱,就去大西电子市场买来8*8的LED块,然后自己一点一点的拼接成128*16的。做完之后尽管能够运转,可是很牵强,尤其是按键扫描程序没有下面这位哥写得简练细致,所以就贴过来,今后用到的时分直接研讨:

unsignedcharkey,key_h,kpush;
unsignedintkey_l;

//按键连接到p1.0、p1.1、p1.2

voidint_t0(void)interrupt1{
unsignedchardd,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;
}
}
}
voidmain(void){
TMOD=0x1;TR0=1;ET0=1;EA=1;
while(1){
while(!key){}
switch(key){
case1:break;
case2:break;
}
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/265375.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部