非洲难民1号 发表于 2020-3-1 00:15:45

求助各位大佬,这是用定时器控制跑马灯程序,不知道问题出在哪?


#include<reg52.h>

typedef unsigned char u8;
typedef unsigned int u16;


void main(void)
{
        u8 led;
        u8 cnt;
        u8 num;

        TMOD=1;
        TH0=0XB8;    //20ms
        TL0=0X00;
        TR0=1;        //定时器开启

        led=0xfe;
        num=8;
        while(num>0)
        {
                if(1==TF0)
                {
                        TF0=0;
                        TH0=0XB8;
                        TL0=0X00;
                        cnt++;
                        if(cnt>=50)
                        {
                                cnt=0;
                                P2=led;
                                led=led<<1;                //左移
                                led=led|0x01;
                                num--;
                                if(num==1)               
                                {
                                       num--;               //8个led移动完毕,跳出while循环
                                }
                        }
                }
        }
       
        num=8;
        while(num>0)                               //烧录到开发板,现象也只运行的上面一段while循环
        {
                if(1==TF0)                                //调试到这里就进不去if判断了,为什么?{:5_100:}
                {
                        TF0=0;
                        TH0=0XB8;
                        TL0=0X00;
                        cnt++;
                        if(cnt>=50)                //1s移动一次
                        {
                                cnt=0;
                                P2=led;
                                led=led>>1;                //右移
                                led=led|0xfe;
                                num--;
                                if(num==1)
                                {
                                       num--;
                                }
                        }
                }
        }               
}       

非洲难民1号 发表于 2020-3-1 00:48:16

没有大佬帮助萌新吗^_^

人造人 发表于 2020-3-1 01:43:07

我调试了一下这个程序,不存在你说的这个问题

非洲难民1号 发表于 2020-3-1 10:49:58

人造人 发表于 2020-3-1 01:43
我调试了一下这个程序,不存在你说的这个问题

我找到问题在哪了,谢谢

人造人 发表于 2020-3-1 11:17:16

非洲难民1号 发表于 2020-3-1 10:49
我找到问题在哪了,谢谢

在哪里?是代码的问题吗?

非洲难民1号 发表于 2020-3-1 11:31:49

人造人 发表于 2020-3-1 11:17
在哪里?是代码的问题吗?

调试是我写的另一版程序的,开的太多混了,刚巧烧录到开发板现象与调试现象重合{:5_99:}
代码 led=led|0xfe;这处应该改成0x7f,我自己太zzle

人造人 发表于 2020-3-1 12:43:53

非洲难民1号 发表于 2020-3-1 11:31
调试是我写的另一版程序的,开的太多混了,刚巧烧录到开发板现象与调试现象重合
代码 led=led|0 ...

嗯,明白了
页: [1]
查看完整版本: 求助各位大佬,这是用定时器控制跑马灯程序,不知道问题出在哪?