单片机的一个很神奇的问题,高手进!

代码:功能是当button(按钮,按钮接P1^3,和电源地)低电平的时候,点亮led灯,但是为什么没有按下按钮的时候,灯会微亮一闪一闪的。#include<reg52.h... 代码:功能是当button(按钮,按钮接P1^3,和电源地)低电平的时候,点亮led灯,但是为什么没有按下按钮的时候,灯会微亮一闪一闪的。
#include <reg52.h>
sbit button = P1^3;
sbit led = P1^0;
main()
{
button=1;
while(1)
{
if(button==0)
{
led=0;
}
else led=1;
}
}
展开
 我来答
lycdl
高粉答主

2013-07-31 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2万
采纳率:94%
帮助的人:4709万
展开全部
没有按下按钮的时候,灯会微亮一闪一闪的,这与程序无关,也与按钮抖动无关,因为都没有按下,就无所谓的抖动了。应该找LED灯,要看是怎么接的,再看串联的限流电阻的大小,说明在P1.0输出高电平是就微亮了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaomage_2000
2013-07-31 · TA获得超过3620个赞
知道大有可为答主
回答量:1772
采纳率:100%
帮助的人:827万
展开全部
不知道你LED是怎么连的,所以暂时理解你那部分是对的
你按键部分也没加防抖动延时,如果外围有少量干扰,程序可能就认为你按键按下了,另外建议你P1.3上加个10K左右上拉电阻就更好了。
建议改成:
while(1)
{
  if(button==0)
   {
    delay_10ms
    if(button==0)led=0;
    }
  else led=1;

delay部分你自己做个10ms左右的延时
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
金瑶2B
2013-07-31 · 超过18用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:31.4万
展开全部
首先确定你的硬件,BUTTON既然是低有效,那么最好把IO口即P1^3口拉高(接5.1K电阻至VCC),然后最好做一下硬件去抖,接一个无极性电容接地。确定你的硬件端口没有被复用,且电源正常。
然后软件里也做一下去抖处理,
if(button==0)
{
delay_ms(5);
if(button==0)
{
led = 0;
button = 1; //拉高
}
}
else
{
led = 1;
button = 1; //拉高
}
你这种情况一般是硬件问题,好好检查一下连线!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
敬醉巧05J
2013-07-31 · TA获得超过568个赞
知道小有建树答主
回答量:641
采纳率:0%
帮助的人:168万
展开全部
任何按键都有机械抖动 你以为按下去了 实际上金属片接触不良什么的就抖起来了 所以一般机械性能不好的按键都是触发操作的 比如按一次亮再按一次灭 按键去抖网上有很多相关知识无非是硬件上加电容软件上做延迟之类的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liucong080
2013-07-31 · TA获得超过174个赞
知道答主
回答量:98
采纳率:100%
帮助的人:22万
展开全部
软件应该没有什么问题,可能是你的开发板有哪个短路帽影响了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式