名称:K1-K4 按键状态显示
说明:K1、K2 按下时 LED 点亮,松开时熄灭,
K3、K4 按下并释放时 LED 点亮,再次按下并释放时熄灭;
#include<reg51.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4
5 sbit LED1 = P2^0;
6 sbit LED2 = P2^1;
7 sbit LED3 = P2^2;
8 sbit LED4 = P2^3;
9
10 sbit K1 = P0^0;
11 sbit K2 = P0^1;
12 sbit K3 = P0^2;
13 sbit K4 = P0^3;
14
15 //延时,用来防抖
16 void delayMS(uint x)
17 {
18 1 uchar i;
19 1 while(x--)
20 1 {
21 2
22 2 for(i = 0; i < 120; i++);
23 2
24 2 }
25 1 }
26 //主程序
27 main()
28 {
29 1 P0 = 0xff;//给P0和P2口赋值;高电平;
30 1 P2 = 0xff;
31 1 while(1)
32 1 {
33 2 LED1 = K1;//K1端接地,当按下K,P0^0变为0(低电平)
34 2 LED2 = K2;
35 2 if(K3 == 0)
36 2 {
37 3 while(K3==0);//按着k3不放,就循环。等待,什 // 么也不干,一旦放开,继续执 // 行;
38 3 LED3 =~ LED3;
39 3 }
40 2 if(K4 == 0)
41 2 {
42 3 while(K4 == 0);
43 3 LED4 =~ LED4;
44 3 }
45 2 delayMS(10);
46 2 }
47 1
48 1 }
理解if(K3 == 0)
{
while(K3 == 0);
LED3 = LED3;
}
一旦K3 == 0 也就是if 的条件为true,那么必须把if里面的所以东西执行完。
类比c语言:if(k == 0){
k=9;//虽然这步k 已经是9 了,但是还是要把下面的表达式子 // 执行完
led = 1;
}
没有评论:
发表评论