单片机定时器/计数器设置初值有什么用?各位大侠
3个回答
展开全部
可以这样打比方:
如果你有一个可以装3L的桶,如果你提前向里面装1.2L,那么这个桶就只有1.8L的容量。
计数器也是这样,一个16位的计数器可以计到65535(再计一次就溢出,相当于65536一个周期),如果你事前放入60536,那么计数器再加5000次就会溢出。
设置的初值一般是反相计算的。比如你的计数器是16位的,每1uS计数1次,你想1mS溢出一次,那么其实是计数1000次,65536-1000=64536(0xHC18),向这个计数器赋予0xHC18就可以了。
每次溢出后计数器值为0x0000,所以每次溢出后都要再重新填充一次(自动重装载的除外)。
如果你有一个可以装3L的桶,如果你提前向里面装1.2L,那么这个桶就只有1.8L的容量。
计数器也是这样,一个16位的计数器可以计到65535(再计一次就溢出,相当于65536一个周期),如果你事前放入60536,那么计数器再加5000次就会溢出。
设置的初值一般是反相计算的。比如你的计数器是16位的,每1uS计数1次,你想1mS溢出一次,那么其实是计数1000次,65536-1000=64536(0xHC18),向这个计数器赋予0xHC18就可以了。
每次溢出后计数器值为0x0000,所以每次溢出后都要再重新填充一次(自动重装载的除外)。
展开全部
设置初值后,计数器将从此开始计数,知道数据溢出时,向主程序请求中断;
例如:TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
计数器将从(65536-50000)开始计数;
计满65536后溢出,定时了50ms,
如果不设初值,单片机默认从0开始;
例如:TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
计数器将从(65536-50000)开始计数;
计满65536后溢出,定时了50ms,
如果不设初值,单片机默认从0开始;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
决定你要定时的时间,因为计数器是减法计算,所以要定初值,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询