[STC单片机] 单片机控制两个led

[复制链接]
 楼主| 叫路人甲的太多 发表于 2015-8-11 15:59 | 显示全部楼层 |阅读模式
本帖最后由 叫路人甲的太多 于 2015-8-11 16:26 编辑

芯片用的是stc12c5a60s2,用uln2003驱动两个1Wled。想要实现的是led1闪烁,led2常亮。但是led1正常闪烁,而led2在开关按下一瞬间亮一下又黑了。程序如下
#include<reg51.h>
#define        uchar unsigned char


sbit LED1=P0^7;
sbit LED2=P2^0;

main()
{



int i=0;           
   LED1 =1;
   LED2 =0;
   
   
TMOD = 0X10;
TR1 = 1;
TL1 = 0x8D;                //设置定时初值
        TH1 = 0xFF;                //设置定时初值

while(1)
{
LED2 = 0;
  if(TF1 == 1)
  {
   TF1 = 0;
   TR1 = 1;
        
TL1 = 0x8D;                //设置定时初值
        TH1 = 0xFF;                //设置定时初值
   i++;
}
  if(i == 125)
  {
   i = 0;
   LED1 = ~LED1;
  
   
        
   
  
  
  }
}
}
求大神看看是哪的问题,硬件应该没问题,感觉是代码出了问题
ayb_ice 发表于 2015-8-11 16:17 | 显示全部楼层
你的LED2本来就一直等于0,并没有代码改变

先断开LED测试IO输出信号正常再接上,怕你这硬件错误导致电流大

P0口可能需要上拉电阻,看手册吧
 楼主| 叫路人甲的太多 发表于 2015-8-11 16:22 | 显示全部楼层
谢谢回复,led2赋值为0不就是常亮吗?我理解的是while(1)为真直接往下执行,让led2常亮然后定时控制led1闪烁,这样理解是不是不太对?
 楼主| 叫路人甲的太多 发表于 2015-8-11 16:25 | 显示全部楼层
ayb_ice 发表于 2015-8-11 16:17
你的LED2本来就一直等于0,并没有代码改变

先断开LED测试IO输出信号正常再接上,怕你这硬件错误导致电流 ...

用的是开发板,p0,p2口都有上拉电阻
 楼主| 叫路人甲的太多 发表于 2015-8-11 16:38 | 显示全部楼层
ayb_ice 发表于 2015-8-11 16:17
你的LED2本来就一直等于0,并没有代码改变

先断开LED测试IO输出信号正常再接上,怕你这硬件错误导致电流 ...

解决了,犯了最简单的错误。初值设为1为亮。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部