求助各位大佬,这是用定时器控制跑马灯程序,不知道问题出在哪?
#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--;
}
}
}
}
}
没有大佬帮助萌新吗^_^ 我调试了一下这个程序,不存在你说的这个问题
人造人 发表于 2020-3-1 01:43
我调试了一下这个程序,不存在你说的这个问题
我找到问题在哪了,谢谢 非洲难民1号 发表于 2020-3-1 10:49
我找到问题在哪了,谢谢
在哪里?是代码的问题吗? 人造人 发表于 2020-3-1 11:17
在哪里?是代码的问题吗?
调试是我写的另一版程序的,开的太多混了,刚巧烧录到开发板现象与调试现象重合{:5_99:}
代码 led=led|0xfe;这处应该改成0x7f,我自己太zzle 非洲难民1号 发表于 2020-3-1 11:31
调试是我写的另一版程序的,开的太多混了,刚巧烧录到开发板现象与调试现象重合
代码 led=led|0 ...
嗯,明白了
页:
[1]