标题: 帮忙看一下这个程序能不能运行 [打印本页]

作者: 至今回忆    时间: 2017-6-1 23:10
标题: 帮忙看一下这个程序能不能运行
void main()
{  
    key=1;
    key=P1^0;
    while(key==1) //按键按下,LED亮
   {
      LED = 1;
    }
    while(key==0) //按键松开,LED灭
   {
      LED = 0;
    }
}



作者: HC6800-ES-V2.0    时间: 2017-6-2 08:06
按键这种输入设备,有一个专门的控制要求——消抖。
你的程序中看不到这些,可能用起来有问题。
现像应该是:按下灯就亮,放天灯就灭。不知道是不是你想的结果。
作者: ahshmj    时间: 2017-6-2 08:51
#include <at89x52.h>
sbit LED = P1^1;
sbit key = P1^0;

                                                                                       
void main()
{while(1)
{  
    key=1;
    key=P1^0;
    while(key==1) //按键按下,LED亮
   {
      LED = 1;
    }
    while(key==0) //按键松开,LED灭
   {
      LED = 0;
    }
}
}


注意理解一下红字。
作者: fefen0    时间: 2017-6-2 08:57
缺少头文件。
作者: cjjcjj1    时间: 2017-6-2 09:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: yzwzfyz    时间: 2017-6-2 16:30
有风险,输入的端口当预置1,而后再采样。
作者: liushuiwuqing    时间: 2017-6-2 19:15
程序不完整,看程序是51,不过程序有误
作者: 爆沙哥    时间: 2017-6-2 19:44
老哥,帮你试了  运行不了
作者: fly1    时间: 2017-6-2 19:57
按键这种输入设备,有一个专门的控制要求——消抖。 你的程序中看不到这些,可能用起来有问题。 现像应该是:按下灯就亮,放天灯就灭。不知道是不是你想的结果
作者: 毛毛虫呀    时间: 2017-6-2 20:14
可以,已经经过调试
作者: HWH    时间: 2017-6-2 21:04
兄弟,帮你试了  也运行不了
作者: 郭养彬    时间: 2017-6-2 21:13
不能运行
作者: lurong1988    时间: 2017-6-2 21:52
不可以运行。
作者: dzbj    时间: 2017-6-2 23:39
本帖最后由 dzbj 于 2017-6-2 23:52 编辑

这样不好的

一个是没有主循环 程序走一下就完事了 然后就什么反应都没了 51虽然很老但也比人反应快多了 ns级别的 基本上就是你什么都没看见 光看见死机一样的状态

另一个是你这按键没防抖 再好的开关也需要4~7ms的防抖 开关触点本身就有抖动 就是说单片机可以捕获开关的所有抖动并反应出来 即便能运行 也应该是按下后led无规律闪烁
作者: black51    时间: 2017-6-3 00:10
不完整啊,

作者: black51    时间: 2017-6-3 00:12
你端口没有声明啊

作者: 12563308661    时间: 2017-6-3 10:16
不能运行
作者: 123yuxiao    时间: 2017-6-3 10:50
你可以试试啊
作者: yansaie    时间: 2017-6-3 11:08
你这个程序要加头文件   还有必须要有一个while循环  不然就只跑一次就不会跑了   等于就是你这个程序是只在开机的一瞬间有用   
作者: jie951    时间: 2017-6-3 18:19
程序不完整,
作者: jie951    时间: 2017-6-3 19:13
按下灯就亮,放开灯就灭
作者: 259654    时间: 2017-6-3 19:34
不能运行
作者: 3760609865    时间: 2017-6-3 22:08
用不了,你的程序位定义都错了,而且头文件也沒有。




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