如果是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吗? |