#include<REGX52.H>//软件延时程序,单位msvoidDelay(unsignedint xms)//@11.0592MHz{unsignedchar i, j;while(xms){
i =2;
j =199;do{while(--j);}while(--i);
xms--;}}voidmain(){while(1){if(P3_1==0){Delay(20);//消除按键按下的抖动while(P3_1==0);//判断按键是否松开,如果没有,则一直等待按键按下Delay(20);//消除按键松开的抖动
P2_0=~P2_0;}}}
独立按键控制LED显示二进制
#include<REGX52.H>voidDelay(unsignedint xms)//@11.0592MHz{unsignedchar i, j;while(xms){
i =2;
j =199;do{while(--j);}while(--i);
xms--;}}voidmain(){while(1){if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);//按键控制LED显示二进制,法1:
P2--;//P2一开始各端口都是高电平,即P2=1111 1111 }}}//按键控制LED显示二进制,法2:voidmain(){unsignedchar LEDNum=0;while(1){if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);
LEDNum++;
P2=~LEDNum;}}}
独立按键控制LED移位
#include<REGX52.H>voidDelay(unsignedint xms);unsignedchar LEDNum1;voidmain(){
P2=0xFE;//默认LED1上电显示while(1){//K1按下,led从小往大点亮if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);
LEDNum1++;if(LEDNum1>=8)//设置显示上限,计数超过7,即右移超过led8,则重新置0{
LEDNum1=0;}
P2=~(1<<LEDNum1);}//K2按下,led从小往大点亮if(P3_0==0){Delay(20);while(P3_0==0);Delay(20);if(LEDNum1==0)//设置显示下限,计数等于0,即左移超过led1,则重新置7,即最高位得led8{
LEDNum1=7;}else
LEDNum1--;
P2=~(1<<LEDNum1);}}}voidDelay(unsignedint xms)//@11.0592MHz{unsignedchar i, j;while(xms){
i =2;
j =199;do{while(--j);}while(--i);
xms--;}}