求教自适应定时器的设置 | 没有问题
我现在用T0定时器,现在是1ms中断一次,我想改成20ms中断一次,请教老师吗如何改#define Timer0_Reload (65536UL -(MAIN_Fosc / 1000)) //Timer 0 中断频率, 1000次/秒
void Timer0_Init(void)
{
// Timer0初始化
TMOD &= 0xf0; //设置定时器模式
T0x12 = 1; //定时器时钟1T模式
TH0 = (u8)(Timer0_Reload / 256);
TL0 = (u8)(Timer0_Reload % 256);
TF0 = 0; //清除TF0标志
ET0 = 1; //使能定时器0中断
TR0 = 1; //定时器0开始计时
}
改这句#define Timer0_Reload (65536UL -(MAIN_Fosc / 1000)) 将这句#define Timer0_Reload (65536UL -(MAIN_Fosc / 1000))
改成
#define T0_ms 20
#define Timer0_Reload (65536UL-(T0_ms*MAIN_Fosc/1000))
这样试试但是定不了20最大为5ms 你把时钟修改为12T,然后Timer0_Reload修改成(65536-20*MAIN_Fosc/12/1000),这样就能定时20ms了,时钟频率可以设置为12M或者24M 宁阳刘德华 发表于 2026-2-10 20:46
将这句
改成
谢谢 青穗三三 发表于 2026-2-11 08:31
你把时钟修改为12T,然后Timer0_Reload修改成(65536-20*MAIN_Fosc/12/1000),这样就能定时20ms了,时钟频 ...
测试过了,没有问题,谢谢
页:
[1]