51单片机定时器赋值为什么是65536???

2025-04-13 10:04:53
推荐回答(2个)
回答1:

虽然定时器16位定时值最大值是0xFFFF没错,但是定时器从50000,每个时钟周期加1,是加到0xFFFF的下一个周期(0x10000,最高位溢出了),才会产生中断,而不是在0xFFFF = 65535的时候就产生了中断。
打个比方,你要计时2个时钟周期,那么你应该从65536 - 2 = 65534开始计,65534->65535,65535->溢出,而不是从65535-2 = 65533开始计,那样就成了3个时钟周期。希望能帮到你

回答2:

定时器的计数是可以从0开始计数的,如果从0 到 0xFFFF 是 65535,这个时候没有产生溢出,
再加1 ,0xFFFF+1=0 产生溢出,就是从 0计数 到 0 需要有 65536 个计数。