2.button_control_led

发布时间 2023-12-12 16:02:51作者: $KAMISAMALZ
//注意: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.移位运算,很简单,<<左移 >>右移的。
{
    
}