系统时钟配置
TMR0配置 256分频 时钟来源FOSC / 4
系统频率为8 MHZ
系统时钟周期:Tosc = 1 / 8MHZ = 0.125us
指令周期等于4个时钟周期 :Tcy = 4 * Tosc = 0.5us
-
TMR0输入时钟周期(经过预分频):
𝑇𝑇𝑀𝑅0=𝑇𝐶𝑌×256=0.5 𝜇𝑠×256=128 𝜇𝑠TTMR0=TCY×256=0.5 μs×256=128 μs
-
TMR0计数从0到溢出的时间: TMR0是8位计数器,计数范围为0到255,共256个计数状态。 因此,TMR0从0计数到255所需的时间为:
𝑇overflow=256×𝑇𝑇𝑀𝑅0=256×128 𝜇𝑠=32768 𝜇𝑠=32.768 msToverflow=256×TTMR0=256×128 μs=32768 μs=32.768 ms
-
1秒所需的溢出次数: 1秒内所需的TMR0溢出次数为:
𝑁overflow=1 s𝑇overflow=1 s32.768 ms=1000 ms32.768 ms≈30.52Noverflow=Toverflow1 s=32.768 ms1 s=32.768 ms1000 ms≈30.52
计数周期为256* 256 * 0.5 = 32768us
计数1s 需要溢出 1000000 / 32768 约等于 31 次
MCC生成的中断代码 在TMR0_ISR()里面添加中断代码
在main.c里面打开中断 定义一个全局变量n记录溢出次数
最终可以实现LED以1s为周期的闪烁