发 帖  
原厂入驻New
张飞60小时讲透半桥串联谐振软开关电源设计,立即学习!
51单片机管脚无法控制
86 51单片机 LED 寄存器
分享
电路图如下: 就是这样一个51的单片机,管脚无法控制,电源晶振正常,大概会是什么原因呢?我就往里面烧写了一个很简单的程序,控制一个管脚的高低电平,可就是没有反应。  单片机无法工作,可能会是因为什么原因引起的呢?程序如下:
#include<reg52.h> //包含头文件,一般情况不需要改动,
                  //头文件包含特殊功能寄存器的定义
sbit LED=P1^0;// 用sbit 关键字 定义 LED到P1.0端口,
              //LED是自己任意定义且容易记忆的符号
/*------------------------------------------------
                    主函数
------------------------------------------------*/
void main (void)
{
                  //此方法使用bit位对单个端口赋值
LED=1;            //将P1.0口赋值 1,对外输出高电平
LED=0;            //将P1.0口赋值 0,对外输出低电平
while (1)         //主循环
  {
                  //主循环中添加其他需要一直工作的程序
  }
}
0
2019-6-18 04:35:27   评论 分享淘帖 邀请回答
4个回答
谢谢,发现问题了,少焊了一个电阻,电路不是我设计的,晕死
2019-6-18 07:17:02 评论

举报

你控制它都不带加个延时的当然控制不住,高低电平后分别加个500ms到1s左右的延时看看现象
2019-6-18 07:37:58 评论

举报

按照下面来改吧,实际上就是在while(1)循环里面重复改变LED的状态,并增加了延时,这样你才能看到LED的状态周期性改变,并且变化不是那么快。。
void main (void)
{
   unsigned char i, j;
   while (1)         //主循环
   {
      LED=1;            //将P1.0口赋值 1,对外输出高电平
      i = 250;
      j = 250;
      k = 2;
      while(k)
      {
         while(j)
         {
            while(i) i--;
            j--;
         }
         k--;
      }
      LED=0;            //将P1.0口赋值 0,对外输出低电平
      i = 250;
      j = 250;
      k = 2;
      while(k)
      {
         while(j)
         {
            while(i) i--;
            j--;
         }
         k--;
      }
      //主循环中添加其他需要一直工作的程序
   }
}
2019-6-18 07:49:06 评论

举报

你的程序主循环里根本就没有跑LED赋值的语句,那P1.0口的状态肯定就是你对LED最后的赋值,即0。正确的程序应该是在主循环里取反LED的状态,并且延时合适的时间,你才能用示波器观察到LED的状态变化。
2019-6-19 22:34:08 评论

举报

只有小组成员才能发言,加入小组>>

712个成员聚集在这个小组

加入小组

热门话题

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

快速回复 返回顶部 返回列表