标题: 关于单片机独立按键程序调试,不加消抖会导致结果不正确吗? [打印本页]

作者: _是淮    时间: 2019-4-14 21:40
标题: 关于单片机独立按键程序调试,不加消抖会导致结果不正确吗?
程序如图:功能:按下独立按键,led发光
现象:按下后led不亮

这里提出的问题有:
消抖不添加会导致实验结果显示不出来吗?


主函数的P1和P3的定义是全局效果吗?是因为这个全局定义导致的电视结果吗?
led未加延时会不会导致看不到这个实验现象?如果长按按键是否可以选择不用延时使led常亮?
在这儿感谢各位大佬
程序如下方便各位调试:
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit d1=P1^1;
sbit dula=P2^6;
sbit wela=P2^7;
sbit key1=P3^4;
void main()
{
        P3=0xFF;
        P1=0x00;
        while(1)
        {
                if(key1==0)
                                d1=1;                        
                else
                                d1=0;        
        }         
}


QQ图片20190414212423.png (13.19 KB, 下载次数: 17)

QQ图片20190414212423.png

作者: xuyaqi    时间: 2019-4-15 10:09
首先, 消抖不添加不会导致实验结果显示不出来。再者可以确定,长按按键可以选择不用延时使led常亮。led不亮不是程序原因,要找别的原因。
作者: 15398151926    时间: 2019-4-15 15:09
消抖不添加不会导致实验结果显示不出来
作者: s'g's'y'f    时间: 2019-4-16 13:00
消抖不添加不会导致实验结果显示不出来
作者: Y_G_G    时间: 2019-4-16 15:53
你这个程序加不加都是一样,不管是仿真还是实际电路,结果都会是你想要的样子
抖动只是在接下按键到按键完全接触这一段时间之内产生的概率比较大,也不一定会有抖动的,大概也就是几十mS左右.
你这个程序只是按下去之后就不亮而已,接的过程中可能抖动那么几十下,但肉眼却不出来,所以,结果肯定就是按下就灭灯,放开就亮灯
但如果是:按下就加1,中间没有去抖动的,再按下又加1的话,结果就不是你想要的样子了
作者: 行走在消逝中1    时间: 2019-4-24 18:45
难道不应该是d1=0才亮吗?来自小白的疑问




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1