C51学习笔记3

独立按键

(2)按位取反(按一下亮,再按灭。。。)(灯)

按键抖动:

按键闭合/开启的瞬间发生(5-10ms不定)

按键的消抖:

硬件:加电路,抖动过滤(触发器)

软件:延时20ms,将抖动的时间覆盖

检测松手: while(P3_1==0);

#include<REGX52.H>

void Delay1ms(unsigned int xms)
{
    unsigned char i,j;
    while(xms)
    {
        i=2;j=239;
             do
             {
                while(--j);
             }while(--i);
    xms--;
   }
}
void main()
{
    while(1)
    {
        if(P3_1==0)//如果按键按下
        {
            Delay1ms(20);//覆盖抖动消抖//即让抖动产生的电平变化不会产生任何效果影响
            while(P3_1==0);//只要按键不松开就不会产生效果,程序停留在这
            Delay1ms(20);//覆盖抖动消抖
            
            P2_0=~P2_0;//0/1变换按位取反,初始为1,LED不亮,按一下为0亮,再按为1,灭
        }
    }


}

K1按键接到P3_1口  

nop需要加#include<INTRINS.H>这个头文件

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值