标题:
数码管的静态显示:为什么数码管到零后就消失了,不能循环
[打印本页]
作者:
HuTianle
时间:
2023-1-5 15:54
标题:
数码管的静态显示:为什么数码管到零后就消失了,不能循环
#include <reg52.h>
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
unsigned char code LedChar[] = {
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
void main()
{
unsigned char cnt = 0;
unsigned char sec = 15;
ENLED = 0;
ADDR3 = 1;
ADDR2 = 0;
ADDR1 = 0;
ADDR0 = 0;
TMOD = 0x01;
TH0 = 0xB8;
TL0 = 0x00;
TR0 = 1;
while (1)
{
if (TF0 == 1)
{
TF0 = 0;
TH0 = 0xB8;
TL0 = 0x00;
cnt++;
if (cnt >= 50)
{
cnt = 0;
P0 = LedChar[sec];
sec--;
if (sec < 0)
{
sec = 15;
}
}
}
}
}
作者:
Hephaestus
时间:
2023-1-5 19:26
你不觉得
unsigned char sec
if (sec < 0)
这两句自相矛盾吗?
作者:
wulin
时间:
2023-1-5 21:00
错误:unsigned char sec = 15;
正确:char sec = 15;
作者:
angmall
时间:
2023-1-5 21:21
应该改成这样
if (sec >= 255)
作者:
ytchfp163
时间:
2023-1-6 00:42
sec 永远到不会小于0,由此sec的值不会在0-15循环,而是0-255循环。LedChar[]会溢出错误而中断运行。
作者:
ZXWPL
时间:
2023-1-6 08:23
sec 是uchar 型,取值范围是0~255,当sec=0的时候,执行sec--之后,sec=255而不会满足sec<0
作者:
haiyang201
时间:
2023-1-13 10:11
if (sec == 0)
作者:
蓝蓝小星星
时间:
2023-2-5 20:05
if (sec == -1)
作者:
君工创
时间:
2023-2-5 22:44
sec不会小于0。
作者:
adject
时间:
2023-2-6 00:28
sec减到最后sec=0;改成 cnt++;
if (cnt >= 50)
{
cnt = 0;
P0 = LedChar[sec];
sec++;
if (sec == 15)
{
sec = 0;
}
}
作者:
13423265909
时间:
2023-2-6 00:38
可以试试 if (sec >= 256)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1