[51单片机] 单独两个灯都能点亮,一起就不能点亮,什么情况?

[复制链接]
3808|17
 楼主| 咸鱼之身 发表于 2018-6-6 19:33 | 显示全部楼层 |阅读模式
# include <reg52.h>
# define uchar unsigned char
# define uint unsigned int

sbit L1 = P1^0;
sbit L8 = P1^7;

void Init_Timer0()
{
        TMOD = 0x01;
        TH0 = (65535 - 50000) / 256;
        TL0 = (65535 - 50000) % 256;
        EA = 1;
        ET0 = 1;
        TR0 = 1;
}

uchar cnt = 0;
uchar cnt1 = 0;
void ServerTimer0() interrupt 1
{

        TH0 = (65535 - 50000) / 256;
        TL0 = (65535 - 50000) % 256;

        cnt ++;
        cnt1 ++;
        if(cnt == 10)
        {
                L1 = ~L1;
                cnt = 0;
        }
       
        if(cnt1 == 100)
        {
                L8 = ~L8;
                cnt1 = 0;
        }
       

}

void mian()
{
        Init_Timer0();
        while(1)
        {
               
        }
}

评论

是不是电流不够?  发表于 2018-6-9 09:37
linqing171 发表于 2018-6-6 21:47 | 显示全部楼层
单片机什么型号,?电路怎么接的, P1需要设置为输出吗?
xyz549040622 发表于 2018-6-6 22:47 | 显示全部楼层
有可能是硬件相互影响了,不要用中断,主函数中一起点亮没问题吗?
ayb_ice 发表于 2018-6-7 08:27 | 显示全部楼层
不可能,代码没有问题,应该是其它问题
chongdongchen 发表于 2018-6-7 08:43 | 显示全部楼层
改成 L1 = !L1;
fengfeng的恒 发表于 2018-6-7 09:09 | 显示全部楼层
本帖最后由 fengfeng的恒 于 2018-6-7 09:12 编辑

   硬件呢?还有啊,你的主函数是什么情况?这样都行?mian?????你烧录的工程与你编写的工程不是同一个吧。
Cjy_JDxy 发表于 2018-6-7 10:31 | 显示全部楼层
main函数的main写错了

评论

是的,粗心了,改了就好了,谢谢~  发表于 2018-6-11 19:00
GeekyGeek 发表于 2018-6-7 12:23 | 显示全部楼层
本帖最后由 GeekyGeek 于 2018-6-7 12:26 编辑
Cjy_JDxy 发表于 2018-6-7 10:31
main函数的main写错了

我有点怀疑是RMW问题,但是不太确定,因为我没玩果51单片机。试试将
if(cnt == 10)
        {
                L1 = ~L1;
                cnt = 0;
        }

改成

if(cnt == 11)
        {
                L1 = ~L1;
                cnt = 0;
        }

还不行,就改成  12, 或 13
       if(cnt == 12)
        {
                L1 = ~L1;
                cnt = 0;
        }


cainiao518 发表于 2018-6-7 12:57 | 显示全部楼层
电路图不会有问题吧
ddllxxrr 发表于 2018-6-7 13:43 | 显示全部楼层
你地程序就是这样,根本没一起亮啊,就是分别点亮

评论

还真有可能是这个问题。  发表于 2018-6-8 21:05
handlike 发表于 2018-6-7 14:27 | 显示全部楼层
      if(cnt >= 10)
        {
                L1 = !L1;
                cnt = 0;
        }
        
        if(cnt1 >= 100)
        {
                L8 = !L8;
                cnt1 = 0;
        }
619888476 发表于 2018-6-7 17:03 | 显示全部楼层
驱动问题?
xyz549040622 发表于 2018-6-8 21:06 | 显示全部楼层
if(cnt == 10)
        {
                L1 = ~L1;
                L8 = ~L8;
                cnt = 0;
        }

这样测试,肯定一起亮了,再不亮,就是硬件问题了。
cjseng 发表于 2018-6-8 22:26 | 显示全部楼层
晶振12M的话,50ms中断一次,100次就是5秒,是不是没等到亮起来就下结论了?
另外,LED是负驱动还是正驱动,有没有串电阻?
天命风流 发表于 2018-6-11 13:23 | 显示全部楼层
没图?         
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

82

帖子

2

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