dongfang 发表于 2026-2-10 19:37:18

求教自适应定时器的设置 | 没有问题

我现在用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开始计时
}


宁阳刘德华 发表于 2026-2-10 20:32:40

改这句#define Timer0_Reload (65536UL -(MAIN_Fosc / 1000))

宁阳刘德华 发表于 2026-2-10 20:46:14

将这句#define Timer0_Reload (65536UL -(MAIN_Fosc / 1000))
改成
#define T0_ms 20
#define Timer0_Reload (65536UL-(T0_ms*MAIN_Fosc/1000))
这样试试但是定不了20最大为5ms

青穗三三 发表于 2026-2-11 08:31:11

你把时钟修改为12T,然后Timer0_Reload修改成(65536-20*MAIN_Fosc/12/1000),这样就能定时20ms了,时钟频率可以设置为12M或者24M

dongfang 发表于 2026-2-11 10:51:21

宁阳刘德华 发表于 2026-2-10 20:46
将这句
改成



谢谢

dongfang 发表于 2026-2-11 10:51:34

青穗三三 发表于 2026-2-11 08:31
你把时钟修改为12T,然后Timer0_Reload修改成(65536-20*MAIN_Fosc/12/1000),这样就能定时20ms了,时钟频 ...
测试过了,没有问题,谢谢
页: [1]
查看完整版本: 求教自适应定时器的设置 | 没有问题