单片机定时器初值计算

我是个新手,不知道怎么对定时器付初值,比如定时器方式1。。。要2ms,意思就是65536--2000,然后便成16进制,然后放到高8位,低8位。。。能否不用计算器转换,直... 我是个新手,不知道怎么对定时器付初值,比如定时器方式1。。。要2ms,意思就是65536--2000,然后便成16进制,然后放到高8位,低8位。。。能否不用计算器转换,直接编程时候直接变。
我看一个程序是这么写的,不太理解。。请帮忙解释下
TH0=(65536-2000)/256;
TL0=(65536-2000)%256;
展开
 我来答
胖大海君
推荐于2017-11-26 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1436
采纳率:11%
帮助的人:641万
展开全部
呵呵 帮你分析一下啊
定时时间2ms=(2的16次方-时间常数X)12/f 即晶振为12M f=12*1000000
2ms=(2的16次方-时间常数X)12/(12*1000000)
2*0.001=(2的16次方-时间常数X)12/(12*1000000)
2*0.001=(2的16次方-时间常数X)/(1000000)
2000=65536-时间常数X
时间常数X=65536-2000

TH0=(65536-2000)/256; 就是转换成十六进制 再除以256 取整数 即高8位送时间常数寄存器的高8位计数器
TL0=(65536-2000)%256; 就是转换成十六进制 再除以256 取余数 即低8位送时间常数寄存器的低8位计数器

哈哈 满意就选满意回答吧
TLast_Ghost
2014-01-18 · TA获得超过1542个赞
知道小有建树答主
回答量:649
采纳率:20%
帮助的人:515万
展开全部
你的应该是51单片机数字是从 当前数字从 65535->0(65536) 发出中断(不是所有单片机都是这样),所以数字必须是 65536-2000,定时器定时要看时钟的,这种定时时钟应该是 12MHZ 1us 正好是计时器+1
这个写没问题,(65536-2000)/256 标准工时因该要乘以 你 的晶振时钟 然后除以 12MHZ ,
(65536-2000)/256 因为没有变量所以他是常数,不是表达式,只会编译成一个数字,而不是算式,不会占用额外运行时间,他的运算是编译器替你完成的。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hjf111000
2014-01-18
知道答主
回答量:16
采纳率:0%
帮助的人:9.8万
展开全部
单片机的程序运行都是以系统时钟周期为基础,而系统时钟周期又和单片机晶振相关联,一般51单片机的系统时钟周期均为晶振的12分频。
单片机的定时器每计时一次为一个系统时钟周期(如果晶振频率为12MHz,一个系统时钟周期为12/(12M)=1/1000000秒)
单片机定时器定时是顺计时,计数到65536的时候才会产生中断,要定时2ms就得计时2000次,因此就用65536-2000
其实你上面写的两句程序就是取整,高八位给TH0,取余,低八位给TL0
这个没有办法编程的时候直接变,因为如果单片机的晶振频率一变定时器定的时间就会发生变化,而且定时器有八位的和十六位的计算方式都不同,不过你可以去下载51单片机定时器自动计算的小软件,很好用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
生活如歌_
2014-01-18 · TA获得超过1.5万个赞
知道大有可为答主
回答量:7398
采纳率:78%
帮助的人:2178万
展开全部
/256得到高8位
%256得到低8位
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式