51开发板

2019-07-16 05:13发布

刚刚入手一个51开发板,兴致勃勃的编起了程序,很是胸有成竹。因为之前在proteus仿真了不少。可是在开发板上却是处处碰壁啊。就说一个简单的检测按键是否按下,然后点亮相应的led灯。就永远达不到我要的预期效果啊。请高手们不吝赐教。程序如下:
#include <reg52.h>
#define uchar unsigned char
/*1MS为单位的延时程序*/
void delay_1ms(uchar x)
{
    uchar j;
    while(x--) { for(j=0;j<125;j++); }   
}
void main()
{
   while(1)
    {
      if(P3^5==1)
           {
               delay_1ms(2);
                   if(P3^5==1)
                      {
                             P2=0x00;
                      }
           }
         
    }
}

程序没问题吧?
led是共阳接法,按键是独立对地键盘,可是只要把程序导入,所有的led就全亮了。请问这是何故啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
Lovedanpianji
1楼-- · 2019-07-17 05:23
led最好是低电平点亮,单片机灌电流可以有20MA
暮鼓
2楼-- · 2019-07-17 10:44
if(P3^5==1)写成if(P3^5==0)试试
最好给P2口初始化P2=0xff;
如果delay_1ms(2);是去抖动的话起不到作用,去抖延时一般在10ms到20ms之间



爱着飘雪
3楼-- · 2019-07-17 15:51
上传电路图最好看看,我的板子是用低电平来控制的
QJQ
4楼-- · 2019-07-17 19:37
造成这个问题的主要原因是因为要读IO口的值,首先得向IO口写1但是我也不是很了解这是为什么?书上是这么写的。
zzwan
5楼-- · 2019-07-17 19:48
 精彩回答 2  元偷偷看……
zzwan
6楼-- · 2019-07-17 23:25
你按键是怎么接的,接地,还是VCC?看你程序应该是单个按键P3^5控制整个P2口。若是P2口全部接LED,会同时动作。

一周热门 更多>