![]() |
發布時間: 2022-4-5 22:00
正文摘要:單片機源程序如下: #include"reg52.h" #define uchar unsigned char #define uint unsigned int /*****數碼管位選****/ sbit SMG_A = P2^2; sbit SMG_B = P2^3; sbit SMG_C = P2^4; /****數碼管碼表** ... |
如果是11.0592m晶振,初值就是46080 晶振11.0592M: 11.0592MHz除12為921600Hz,就是一秒921600次機器周期,50ms=46080次機器周期。 65536-46080=19456(4c00) TH0=0x4c,TL0=0x00 |
gongnn 發表于 2022-4-24 15:38 我也是剛搞清楚,如果是11.0592m晶振,初值就是46080,如果是12m晶振,初值就是50000 |
sonique0371 發表于 2022-4-22 08:11 void Timer0Init(void) //50毫秒@11.0592MHz { AUXR &= 0x7F; //定時器時鐘12T模式 TMOD &= 0xF0; //設置定時器模式 TL0 = 0x00; //設置定時初始值 TH0 = 0x4C; //設置定時初始值 TF0 = 0; //清除TF0標志 TR0 = 1; //定時器0開始計時 } |
數碼管位選用Switch函數 |
本人很菜,請教下各大俠,數碼管位選為啥只有三個位? |
用Delay,好占用資源的,同時在定時器里面選擇不是更好,一般都是在定時器里面刷新的 |
lzzasd 發表于 2022-4-20 09:16 我問的就是基礎值為什么不是50000,而是46080? |
利用定時中斷掃描數碼管位顯示,可以使程序更簡單明了。 |
sonique0371 發表于 2022-4-20 08:35 樓主使用的定時器中斷來計時的 定時器是向上累加溢出的 所以 定時=65536--基礎值 |
請問一下,初始值46080是怎么計算出來的?50毫秒不是應該就是50000嗎? |