C51——软件控制灯,软件消抖,IO口翻转,记录状态位来控制led

1、实现按键控制灯:
        在单片机编程中,按键和灯是分开的两个电路,通过单片机作为媒介处理数据,通过逻辑来实现按键控制灯。
        5v电压过来分成两路,一路是到芯片的路,另外一路是通过按键接地的路;如果按键未按下,传输到芯片的是高电平,此时为1;如果按键按下导通接地,此时传输到芯片的是低电平,为0;

查询法:按键控制灯,while()
另外一种方法:中断法

2、软件消抖:
       硬件应用过程中可能会有抖动或者按键松动,导致控制出现0/1之间的转换控制。
       正常按键按下会在50-200ms,stc-isp中用延时,如果50ms之后再判断按键的所接芯片的接收状态,按键依旧是按下状态,key1为0,则控制灯亮

如果在软件延时中出现_nop_();需要添加头文件#include<intrins.h>,否则报错

3、while查询法中:IO口状态翻转,if判断输入的状态,led1=!led1;当用到翻转程序时,后边添加while(key1==0),等待按键松开,防止往下执行后面的程序。来实现状态翻转。
       
4、记录状态位来控制led:
        #define off 0
        #define on 1
        定义一个变量,赋予这个变量为off还是on
        if判断变量与off是否相等,相等为灭,否则为亮

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值