|
發布時間: 2019-11-25 12:32
正文摘要:我定時50MS,數碼管顯示+1. 但是仿真時,延遲函數卻沒有用上,這是怎么回事呢?#include <reg51.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int sbit WE=P2^0; sbit DU= ... |
| 發現問題了,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 沒打開吧! |