MCS-51定时器的定时常数究竟应该怎样求??急急急!!

wazq 2003-05-27 12:25:18
这里有一个例题:假设利用定时器T0模式1产生一个50HZ的方波,由P1.0输出,采用12MHZ时钟,并假定CPU不作其它工作,因而可以采用查询的方式进行控制。定时常数应该如何求???
...全文
228 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
pifulu 2003-05-31
  • 打赏
  • 举报
回复
要提高精度,可以用11.0592M的晶振
azmao 2003-05-29
  • 打赏
  • 举报
回复
方式0:定时时间=(2的13次方-a)*12/晶振uS;
方式1:定时时间=(65536-a)*12/晶振uS;
方式2:定时时间=(2的8次方-a)*12/晶振uS;
在中断程序中需将th0,th1参数重新装入.
mov tmod,#51h ;t0方式1定时,t1方式1计数,16位定时计数器
mov th0,#0dch ;(10000h-0dc00h)*12/11.0592
mov tl0,#00h ;t0定时10ms
mov t2con,#00110000b ;t2用于波特率发生
mov th2,#0feh ;tclk,rclk=1
mov tl2,#0e0h
mov rcap2h,#0feh
mov rcap2l,#0e0h
mov ie,#0ffh ;中断全开放
setb tr0
setb tr2
;********************************
;T0中断服务程序(10ms定时)
;*******************************
tint0: push dph
push dpl
push acc
push b
mov th0,#0dch
mov tl0,#000h
;用户程序 ......
tint02: pop b
pop acc
pop dpl
pop dph
reti

  • 打赏
  • 举报
回复
zys0001(杨杨)
赫赫
不客气了
ldqmoon 2003-05-29
  • 打赏
  • 举报
回复
上面的方法精度不是很准吧?

最近为完成老师的课题,须做一个精度很高的时钟。在想遍各种方法后,作出东东精度仍达不到。
各位有什么好方法吗?
pdy11 2003-05-28
  • 打赏
  • 举报
回复
首先确定你的计数器 工作在几分频上,比如是6分频 那么计数器的时钟周期就是 1/2M
如果你在th0,tl0中填入9140(40000的16进制) 那么将 (P1).0取反,之后将返回
所有有关频率的 比方说声音 都可以用这种方法而且可以调出任意频率
不同意楼上的45535 应该是40000 因为晶振的1M 就是100000
个人观点 请大家讨论

msmsn 2003-05-27
  • 打赏
  • 举报
回复
65535-20000(20ms)=45535,然后转化成16进制,填入TH0,TL0即可。
zys0001 2003-05-27
  • 打赏
  • 举报
回复
完全同意楼上的意见。同时也十分感谢楼上提供给小弟的2402读写程序。
  • 打赏
  • 举报
回复
首先你得确定你的定时器工作在方式几,不同的工作方式溢出值不一样的
定时器其实就是每一个机器周期加1
加到你所设定的溢出值(由你的工作方式决定)后,就产生中断(或置TF查询位)
你只需要置初值就行了
公式:用(溢出值-你给的初值)*机器周期就是你的定时时间。

你知道了你的晶振,应该知道机器周期怎么算吧
wazq 2003-05-27
  • 打赏
  • 举报
回复
我从来没学过单片机,至于公式,我这本书上没有明确的给出,所以向大家求救!
Hermit 2003-05-27
  • 打赏
  • 举报
回复
50hz就是20ms一次中断。
有些搞不明白,你既然要用定时器,为什么还要查询控制?
记得51的T0是自动重装初始值的。计算公式一般书上都有

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧