找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4484|回复: 1
收起左侧

51单片机,按键控制LED延时方法

[复制链接]
ID:51142 发表于 2013-10-31 15:43 | 显示全部楼层 |阅读模式
我想让2个按键,控制一个灯,程序要求:按键1按下,(是一直按下,不松手的),让LED点亮,延时3秒后在熄灭。按键2也是这样的功能。
下面这个程序,按键要是不松开,led1始终为低电平(0),程序就一直停在那,后面的程序也不会继续执行,
                if(K1==0)          //按键1 按下            
                  {
                    delayms (10);          //按键消抖
                     if(K1==0)         // 确认有按下                 
                     {                                          
                              led1=0;
                        delayms (1000);
                        led1=1;
                        }                         
            while(!K1);             //按键释放
               

在网上有查些资料,用标志位。但介绍的都是消抖,按键松手检测。没有介绍按键是一直按下,不松开的。望高手指点。
回复

使用道具 举报

ID:7485 发表于 2013-11-1 08:01 | 显示全部楼层
延时使用定时器中断可以解决。
比如定时器设置1000us溢出,中断内检测2个按键。

你的按键的时间准确度要求不高的话,可以大于此值,10ms(相当于按键去抖)没问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表