打印
[STC单片机]

单片机控制两个led

[复制链接]
738|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 叫路人甲的太多 于 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口都有上拉电阻

使用特权

评论回复
5
叫路人甲的太多|  楼主 | 2015-8-11 16:38 | 只看该作者
ayb_ice 发表于 2015-8-11 16:17
你的LED2本来就一直等于0,并没有代码改变

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

解决了,犯了最简单的错误。初值设为1为亮。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝