//注意:51单片机是低电平驱动的 #include<REGX52.H> //包含P2 #include<INTRINS.H> //包含延时函数的_nop_ void main() //1.按键按下点亮一个led,松手熄灭。 { while(1) { if(P3_1==0)//默认是高电平,P3_1是按键的寄存器位。 { P2_0=0;//第一个led低电平点亮,一个寄存器占8位。这里只操作一个位。 } else { P2_0=1; } } } /*按键的抖动:机械开关,在按键闭合或断开的瞬间会产生抖动,开始和结束各10ms左右,肉眼无法分辨。 单片机速度很快,可能会分辨出来产生误操作。 程序进行按键消抖(通过在抖动时间的10ms左右进行延时。延时过了再执行程序。)*/ void main() //2.按键按下熄灭led,松手点亮。1现象的取反。 { while(1) { if(P3_1==0)//按下是低电平 { Delay(20);//按键按下的抖动时间 P2_0=1; Delay(20);//松手 } else { Delay(20); P2_0=0; Delay(20);//松手 } } } void main() //3.移位运算,很简单,<<左移 >>右移的。 { }