房天下 > 房天下问答 > 业主生活 > 其他
  • 怎么判断按下的单片机独立按键改变

    我是想通过改变按键,实现向上位机传送不同的数字。我实现了这一功能,但是如果我没有按下另外一个键的话,就会一直显示……我头大了。我把程序粘在这儿,请高手指点,先谢过了#include<reg52.h>#define uint unsigned int #define uchar unsigned char sbit key1=P2^7;sbit key2=P2^6;sbit key3=P2^5;sbit key4=P2^4;sbit key5=P2^3;sbit key6=P2^2;sbit key7=P2^1;sbit key8=P2^0;sbit led1=P0^0;sbit led2=P0^1;uchar k,flag;void delayms(uint xms);void init1();void init2();uchar keyscan();void main(){ while(1) { k=keyscan(); if(flag==1) { flag=0; if(k==1||k==2||k==3||k==4) { init1(); SBUF=k+48;; while(!TI); TI=0; led1=0; } if(k==5||k==6||k==7||k==8) { init2(); SBUF=k+48;; while(!TI); TI=0; led2=0; } } } }uchar keyscan(){ uchar key; if(key1==0) { delayms(10); if(key1==0) { key=1; while(!key1); } } if(key2==0) { delayms(10); if(key2==0)

    提问者:金刚狮子

    发布于2011-01-09

共1个回答
  • 旅讯网 丨Lv 3
    我算是长见识了,还有人能这样设计串口波特率按下不同的键竟然以不同的波特率发送数据上位机还能知道你传来的数据是以哪个波特率发出的并知道实际上是什么数据这个程序写出来实在没话说 稍微修改一下按键扫描程序就行了uchar keyscan(){ uchar key=0; if(key1==0) { delayms(10); if(key1==0) { key=1; while(!key1) key1=1; } } if(key2==0) { delayms(10); if(key2==0) { key=2; while(!key2) key2=1; } } if(key3==0) { delayms(10); if(key3==0) { key=3; while(!key3) key3=1; } } if(key4==0) { delayms(10); if(key4==0) { key=4; while(!key4) key4=1; } } if(key5==0) { delayms(10); if(key5==0) { key=5; while(!key5) key5=1; } } if(key6==0) { delayms(10); if(key6==0) { key=6; while(!key6) key6=1; } } if(key7==0) { delayms(10); if(key7==0) { key=7; while(!key7) key7=1; } } if(key8==0) { delayms(10); if(key8==0) { key=8; while(!key8) key8=1; } } if(key>0) flag=1; else flag=0; return (key);}
    +1 2011-01-09 举报
热门人气推荐
免责声明:问答内容均来源于互联网用户,房天下对其内容不负责任,如有版权或其他问题可以联系房天下进行删除。