通过上次的了解,已经掌握了控制led亮灭,但是不足的是只有当按键按下时灯亮,而松手后灯就熄灭了,那么为了能完善一下,下面学要对程序进阶一下
我们需要一段代码来判断一下按键的状态然后再对led的状态进行改变,这里需要在if语句中引入一个while循环来实现
#include <REGX52.H>
#include <INTRINS.H>
void Delay1ms(int xms)
{
unsigned char i, j;
while(xms--)
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
void main()
{
while(1)
{
if(P3_1==0)
{
Delay1ms(20);
while(P3_1==0);
Delay1ms(20);
P2_0=~P2_0;
}
}
}
解释一下代码的运行过程,首先判断按键是否按下,然后进入while循环,当按键按下但没有松开时,循环体会一直循环,从而不运行下面的代码,当按键松开时便跳出循环,执行对led进行操作的语句P2_0=~P2_0;这里的~是取反的意思,即led不亮时转化为亮,亮时转化为灭,然后循环上述内容,即每当对按键进行一次操作都会改变led的状态。
对单片机进行操作后的结果如下