两个按键先后按下,之间存在间隔,我定义的常量,默认10毫秒,你需要自己改。include <stdio.h>#include <windows.h>#define delayT 10 //两个按键先后按下的最大间隔,毫秒int keyDU(char key);//判断按键是否按下,是返回1,否返回0int main(){ int kw=0,kwl=0,ka=0,kal=0; whi...
include<reg51.h> sbit key1=P2^5;sbit key2=P2^6;sbit key3=P2^7;main(){ bit flag=0;unsigned char a;while(1){ if(key1==0){ while(key1==0);if(flag==0)a++;else a--;P0=a;} if(key2==0){ while(key2==0);if(flag==0)a--;else a++;P0=a;} if(key3==...
IO直接作为循环条件即可,如下:如果用户按下键不放会有问题,最好改为用户按下键再弹起为一次输入。
Number: 1 //按下任意键 Number: 2 //按下任意键 Number: 3 //按下任意键 Number: 4 //按下任意键 Number: 5 //按下Esc键退出 这段代码虽然达到了监听键盘的目的,但是每次都必须按下一个键才能执行 getch() 后面的代码,也就是说,getch() 后面的代码被阻塞了。 #include <stdio.h>#include<conio....
sbit k1=P1^0;define uint16 unsigned int define uchar unsigned char uchar code shuzu[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void delay(){ uint16 i=1000;while(i--);} void main(){ uchar n ;P2=0xfe;P1=0xff;while(1){ if(k1==0){ if(n>...
只需两个语句:while(key!=0);//等待按键按下 while(key==0);//等待按键抬起 .真正要执行的程序...为了可靠,可在两句中间加小延时
8 if(k2==0){mdelay(100);//去抖动if(k2==0){P0=smg[count];//k0按下数值加二count=count+2;while(!k2);//如果按键按下,在此停下;如果按键松开,继续检测if(count==16)count=0;if(count==17)count=1;}} 9 if(k3==0){mdelay(100);//去抖动if(k...
定义一个布尔型的全局变量kg,在按钮事件里面只需要一句:kg=!kg;bool kg; //开关 void CTestDlg::OnButton1(){ kg=!kg;}
void main( void ){ while( 1 ){ if( KeyPort & KeyID != KeyID )// 就是功能模式选择键按下的意思 { DelayMs(30); // 短延时消抖 if( KeyPort & KeyID != KeyID )// 按键按下 { Funtion_Mode ++; // 按下一次,就选择一个功能 if( Funtion_Mode == 3 ){ Funtion_Mode...