• 已解决 34909 个问题
  • 已帮助 5838 位优秀工程师

51单片机直接对P2口判断?

liuxiaofei126 2020-01-05 浏览量:280

#define KEY_PORT P2

unsigned char KeyBuf

​  if(KeyBuf != KEY_PORT)    //判断光线是否挡住
    {
        KeyBuf = KEY_PORT;
        KeyDelay_Cnt = KEYDELAY;
        F_KeyDelay = 1;
    }
​P2口接的都是按键,按下为低电平,搞不懂上面的判断时则么回事

单片机 51单片机
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 按键应该是接在了P2的某一个引脚上,P2.1或是P2.2这样的,只是测P2口一下要测8个引脚的状态,是不好判断的。最好贴下所有代码
    • 发布于 2020-01-09
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:3
  • 从上面代码不好判断,有2个变量和1个宏定义未知作用,需要整段代码体现,应该是只要检测p2口状态和上次值有差异时就进入if内部,6和7行没法判断
    • 发布于2020-01-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 看一下硬件上测光线的是什么元件吧,这个元件的输出逻辑是怎么样的就应该会明白了。

    这个与硬件相关性比较大,从代码上不好分析

    • 发布于2020-01-06
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个代码有个明显的问题,如果KeyBuf是局部变量,那初始的值就是个随机的数,这里KeyBuf != KEY_PORT的判断毫无意义
    • 发布于2020-01-09
    • 举报
    • 评论 0
    • 0
    • 0

51单片机直接对P2口判断?