例1 按键检测程序
//功能:当按下S8键时,L1灯发光,松手后,L1灯熄灭。相应程序如例1.- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
-
- sbit D1=P1^0;
- sbit S1=P3^4;
-
- void main()
- {
- P3=0xff;
- while(1)
- {
- if(S1==0)
- delay(20);//消除按下时的抖动
- if(S1==0)
- {
- D1=0;
- while(!S1);//松手检测
- delay(20);//消除松手时的抖动
- }
- else
- D1=1;
- }
- }
-
-
- 例2 按键检测程序
- //功能:当每按下S8键时,数码管自动加1,当加到F时又从零开始。
- #include<reg52.h>
-
- #define uint unsigned int
- #define uchar unsigned char
-
- sbit duan=P2^6;
- sbit wei=P2^7;
- sbit S1=P3^4;
- uchar temp;
- uchar code table[]=
- {0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71};
-
- void delay(uint z )
- {
- uint x ,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void main()
- {
- P3=0xff;
- wei=1;
- P0=0xfe;
- wei=0;
- temp=0;
- while(1)
- {
- if(S1==0)
- {
- delay(20);//消除按下时的抖动
- if(S1==0)//
- {
- temp++;
- if(temp==16)temp=0;
- }
- while(!S1);//松手检测,防止temp一次多加
- delay(20);//消除松手时的抖动
- while(!S1);
- }
- duan=1;
- P0=table[temp];
- duan=0;
- }
- }
|