将四个灯接向P1四个子引脚,再给按键分配一个引脚即可。注意在这里分配的P3^6引脚是低电平有效的。
为了避免按键抖动的影响,设置了检测到按下后一秒依然能检测到按下,才判定为按下按键。
1 #include<reg51.h> 2 3 sbit led1=P1^0; 4 sbit led2=P1^1; 5 sbit led3=P1^2; 6 sbit led4=P1^3; 7 8 sbit key = P3^6;//改成6也可正常使用 9 10 unsigned char key_value; 11 12 void delay(unsigned int i) 13 { 14 unsigned int j; 15 for(;i>0;i--) 16 for(j=100;j>0;j--); 17 } 18 19 void main(void) 20 { 21 key_value = 0; 22 while(1) 23 { 24 //delay(1000); 25 if(key == 0) 26 { 27 delay(1000); 28 if(key == 0) 29 { 30 switch(key_value) 31 { 32 case 0: 33 34 led1 = 0; 35 led2 = 1; 36 led3 = 1; 37 led4 = 1; 38 key_value++; 39 break; 40 41 case 1: 42 43 led1 = 1; 44 led2 = 0; 45 led3 = 1; 46 led4 = 1; 47 key_value++; 48 break; 49 50 case 2: 51 52 led1 = 1; 53 led2 = 1; 54 led3 = 0; 55 led4 = 1; 56 key_value++; 57 break; 58 59 case 3: 60 led1 = 1; 61 led2 = 1; 62 led3 = 1; 63 led4 = 0; 64 key_value = 0; 65 break; 66 } 67 68 } 69 } 70 } 71 }
这里将led1、led2、led3、led4、key分别对应管脚P1^0、P1^1、P1^2、P1^3、P3^6。key用来读取P3^6的输入,这里按键接
P3^6,所以key可以读取按键;其它信号都是输出控制来led灯。
问题:
那些外围电路的作用是?
PS:
用keil如何把c语言程序生成hex文件:
project——option for target‘——output——creat Hex打上勾就OK了
注意生成文件时不要习惯性地按Ctrl+F5(这是VC的编译执行),keil里边的快捷键据说可以自己设定的:通过Edit-
>Configuration->Shortuct Keys 这个菜单来设定·当然,直接按生成按钮就肯定可以。