[51单片机]

单独两个灯都能点亮,一起就不能点亮,什么情况?

[复制链接]
3287|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)
        {
               
        }
}
评论
TechSpecific 2018-6-9 09:37 回复TA
是不是电流不够? 

相关帖子

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 回复TA
是的,粗心了,改了就好了,谢谢~ 
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 | 显示全部楼层
你地程序就是这样,根本没一起亮啊,就是分别点亮

使用特权

评论回复
评论
xyz549040622 2018-6-8 21:05 回复TA
还真有可能是这个问题。 
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

粉丝