按键点亮LED,按一下亮,按一下灭

时间:2025-03-07 14:27:01

按键点亮LED,按一下亮,按一下灭

结果不对,可能是没有设置上拉/下拉

当一个按键按下的时候,对应的引脚输入数据是0或1是不确定的,还要看外部电路的组成是上拉还是下拉,当外部电路时上拉的时候,即外部接正的时候,读入的数据是1;当外部电路是下拉的时候,读入的数据是0.

上拉例子:无键按下的时候是1, 有键按下时是0

下拉例子:无键按下的时候是0, 有键按下时是1
//程序51


```c
#include ""

sbit LED1_01 = P1^1; //LED灯

sbit KEY0_01 = P1^2; //按键

void Delay_1ms(unsigned int Time)

{
unsigned int x, y;

for(x = Time; x > 0; x--)

for(y = 120; y > 0; y--);

}

int main(void)

{
LED1_01 = 1; //打开LED灯点亮

while(1)

{
if(KEY0_01 == 0) //检测按键是否按下

{
Delay_1ms(10); //延时去抖动

if(KEY0_01 == 0) //确定按键按下

{
LED1_01 = ~ LED1_01; //取反LED灯 [ 亮 . 灭 ]

}

while(KEY0_01 == 0); //检测松手

}

}

}