找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

不明白书上这个定时器的例子,这个初值是怎么算的?怎么就定时了500us呢?

查看数: 5050 | 评论数: 4 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-6-13 22:55

正文摘要:

#include<reg51.h> sbit p3 = P3^0; void main(){ TMOD = 0x06; //T0计数器,方式2 TH0 = -250; TL0 = 255; TR0 = 1; while(1){ while(!TF0); TF0 = 0; TMOD = 0x02; p3 = 0; while(!TF0); TF0 = 0; p3 = 1; TMO ...

回复

ID:76287 发表于 2015-4-7 19:00
不懂,但是还是要顶,安抚楼主受伤心灵,每一个新手都是痛苦的开始,快乐的结局
ID:7485 发表于 2013-6-24 21:22
本帖最后由 ahshmj 于 2013-6-25 13:44 编辑

这个中断间隔是0x0500(500h)10进制的1280机器周期。

如下:
举例(12M晶振):
一般写成(汇编):“         MOV   TH0, #(65536-500)/256       ;
                                            MOV   TL0, #(65536-500) MOD 256      ;“


或c语言:                            TH0=(65536-500)/256       ;
                                            TL0=65536-500) %256      ;
比较直观,不用再计算。
ID:50914 发表于 2013-6-13 22:59
题目是这样的的,设计一个波形展宽程序,设P3.4输入低频的窄脉冲信号,要求在p3.4输入发生负条变时,P3.4口输入一个500us的同步脉冲、晶振频率为6MHZ


不明白为什么初值-250是怎么计算出来的?TL0是255,加1次就溢出了,然后TH0装入,从-250加到256,
加上开始TL0加的那一次,一共加了507次,怎么就是能定时500us呢?
纠结好久了。。。。。。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表