发现问题了,display()没有加变量 i,所以没有效果。uchar i 也应该改成 uint i。不然超过256就不加了 。。问题终结。谢谢各位大佬。 |
void timer0_init() interrupt 0 { TMOD=0x01; TL0=(65536-50000)%256; TH0=(65536-50000)/256; TR0=1; EA=1; ET0=1; } |
void timer0_init() { TMOD=0x01; TL0=(65536-50000)%256; TH0=(65536-50000)/256; TR0=1; EA=1; ET0=1; } |
luozhao 发表于 2019-11-25 15:20 我EA=1; 后面写了,但是依然没有用。 定时器不延迟,只有delay才有延迟效果。 |
void timer0_init() { TMOD=0x01; TL0=(65536-2000)%256; TH0=(65536-2000)/256; TF0=0; TR0=1; } 这段函数少了两个,一个是函数名后面还要跟一个 interrupt 0 ,还有一个是函数体里没有EA=1 打开总开 |
wulin 发表于 2019-11-25 15:36 我这么写的原因是因为想要1个数码管显示个位,随后显示10位的时候才会打开第二个数码管。直到千位的时候才会全部打开4个数码管。 我也初学者,自己琢磨着搞 |
动态数码管显示不能像你这样写,定时时间太长了,会出错。给你改了。
|
总中断没打开,初始化那里没看到有 |
EA 没打开吧! |