找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机使用串口影响定时器 是什么原因?

查看数: 3110 | 评论数: 9 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-12-6 18:45

正文摘要:

单片机12c5a60s2  晶振22.1184    定时器10毫秒   串口波特率9600  不使用串口定时器正常  10毫秒很准确显示时间正常    使用串口10毫秒就不准了  ...

回复

ID:401564 发表于 2022-12-7 16:56
PSW是一定要进行现场保护的,CY标志位就在PSW里面
因为CJNE全影响CY位
计数这一块,个人感觉用DJNZ更好,代码少一点
中断中如果没有用到DPTR,就没有必要对数据指针进行现在保护了
ID:123289 发表于 2022-12-7 15:27
帖出来的没有问题,问题出在未贴出来的串口上。
ID:77589 发表于 2022-12-7 11:56
我觉得把Timer中断优先级设置最高,应该就没问题了。
ID:1034262 发表于 2022-12-7 11:15
串口与定时器0无关的啊,怎么会影响?
你的程序有严重问题,先后赋值同一个寄存器TMOD,前面的操作就无效了。你应该用与/或操作共用的寄存器。
ID:879348 发表于 2022-12-7 09:07
不能直接操作TMOD,有些控制位在一个寄存器,C语言的时候要用&和|操作
ID:308903 发表于 2022-12-7 08:49
InitTimer0:
MOV TMOD,#01H     //0000 0001
InitUART:
MOV TMOD,#20H     //0010 0000

你仔细看看,这2个TMOD的配置

如果你是同时使用的话,也就是说, 你在使用定时器1做串口的时候,吧定时器0给关了。

如果你想同时实现,应该吧TMOD合起来  : 0010 0001  = 》 0x21

同时,增加 优先级 IP寄存器的设置


ID:884147 发表于 2022-12-7 08:44
你的串口初始化重新设置了T0的工作模式为0,当然定时就不对了
ID:261025 发表于 2022-12-6 23:18
Hephaestus 发表于 2022-12-6 23:02
不应该啊,T0优先级最高,你是不是改了IP寄存器了?

不知道怎么改  我是用单片机小精灵生成的定时器和串口波特率  复制过来就用了
ID:883242 发表于 2022-12-6 23:02
不应该啊,T0优先级最高,你是不是改了IP寄存器了?

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

Powered by 单片机教程网

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