[51单片机] 定时器赋初值后的时间问题

[复制链接]
2697|14
 楼主| 一叶倾城wwq 发表于 2018-12-25 20:01 | 显示全部楼层 |阅读模式
本帖最后由 一叶倾城wwq 于 2018-12-25 20:05 编辑

12M,定时器16位重装,这样赋值后:TH1 = (65536-95)/256;TL1 = (65536-95)%256; 取反IO口,出现如下图所示波形,明显的定时时间不准,想模拟一个9600波特率,请问这样的情况该如何调整初值或者其他方法解决?        

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
airwill 发表于 2018-12-25 22:27 | 显示全部楼层
确实有这个问题,  如果要精确地控制时间, 你需要计算并扣除中断响应, 寄存器压栈和写定时寄存器需要的时间.
 楼主| 一叶倾城wwq 发表于 2018-12-26 09:27 | 显示全部楼层
airwill 发表于 2018-12-25 22:27
确实有这个问题,  如果要精确地控制时间, 你需要计算并扣除中断响应, 寄存器压栈和写定时寄存器需要的时间. ...

中断压栈和写定时器的时间估计也就几个us吧,占用时间长点和产生多余代码的就只有这个计算了,或者我换成十六进制直接赋值高低寄存器要好点,现在调了下初值串口也能识别,但是波形也不是准确的104us,担心存在隐患啊
vrgood 发表于 2018-12-26 10:25 | 显示全部楼层
最好用8位自动重装,晶振用11.0592M。

mcu51hi2c 发表于 2018-12-26 10:43 | 显示全部楼层
这个问题很简单的,9600bsp的高低电平的时间是104.16us,要发数据的时候,关闭中断EA = 0;同时打开定时器,不打开定时器中断,通过计算TH1,TL1的个数来达到你你定时的104.16us
 楼主| 一叶倾城wwq 发表于 2018-12-26 11:30 | 显示全部楼层
vrgood 发表于 2018-12-26 10:25
最好用8位自动重装,晶振用11.0592M。

重装8位可以试下,只是没有外部晶振,内部时钟只能选12M和24M
airwill 发表于 2018-12-26 19:55 | 显示全部楼层
一叶倾城wwq 发表于 2018-12-26 09:27
中断压栈和写定时器的时间估计也就几个us吧,占用时间长点和产生多余代码的就只有这个计算了,或者我换成 ...

如果担心隐患, 可以用模式2, 自动加载. 不过只能用 8 位数据, 太慢的速度会受限了
ririri忠实粉丝 发表于 2018-12-27 00:25 来自手机 | 显示全部楼层
用的什么单片机也不说
 楼主| 一叶倾城wwq 发表于 2018-12-27 08:41 | 显示全部楼层
mcu51hi2c 发表于 2018-12-26 10:43
这个问题很简单的,9600bsp的高低电平的时间是104.16us,要发数据的时候,关闭中断EA = 0;同时打开定时器, ...

发数据时,关闭EA?再开定时器?总开关都关了,还如何开定时器呢?
 楼主| 一叶倾城wwq 发表于 2018-12-27 08:42 | 显示全部楼层
airwill 发表于 2018-12-26 19:55
如果担心隐患, 可以用模式2, 自动加载. 不过只能用 8 位数据, 太慢的速度会受限了 ...

8位自动加载有什么好处吗?
 楼主| 一叶倾城wwq 发表于 2018-12-27 08:43 | 显示全部楼层
ririri忠实粉丝 发表于 2018-12-27 00:25
用的什么单片机也不说

你看定时器的赋值公式也知道是51,牌子的话是赛元
mcu51hi2c 发表于 2018-12-27 10:10 | 显示全部楼层
一叶倾城wwq 发表于 2018-12-27 08:41
发数据时,关闭EA?再开定时器?总开关都关了,还如何开定时器呢?

关闭EA,可以用死循环的方式等待数据发送完成,不一定非得进中断去处理数据的
 楼主| 一叶倾城wwq 发表于 2018-12-27 11:28 | 显示全部楼层
mcu51hi2c 发表于 2018-12-27 10:10
关闭EA,可以用死循环的方式等待数据发送完成,不一定非得进中断去处理数据的 ...

在主函数发?现在在中断已经弄好和PC通信了,再多测试下,若通信有问题再试试您的这种方法
airwill 发表于 2018-12-27 20:40 | 显示全部楼层
一叶倾城wwq 发表于 2018-12-27 08:42
8位自动加载有什么好处吗?

8位自动加载,   溢出时定时器值自动加载初值, 就不会有中断和寄存器写引起的延迟了
马涛010 发表于 2018-12-28 09:27 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

84

主题

1381

帖子

11

粉丝
快速回复 在线客服 返回列表 返回顶部