找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2305|回复: 4
收起左侧

单片机串口通信TI置1为什么影响定时器T1工作?

[复制链接]
ID:793116 发表于 2020-6-29 19:23 | 显示全部楼层 |阅读模式
单片机串口初始化程序如下,串行口中断服务程序中利用printf()进行数据显示,结束时将TI清零。
同时也需要利用定时器T1完成闹钟功能,T1的中断服务程序进行计时,但是TI=1时闹钟就不工作了,为什么会影响呢?
即TI=1,串口通信工作正常;TI=1注释掉,闹钟工作正常,串行口中断服务程序末尾将TI清零也还会影响T1,该怎样修改?
void Init_Serial(void)
{
T2MOD=0x01;
T2CON=0x30;
TH2=0xFF;TL2=0xDC;
RCAP2H=0xFF;RCAP2L=0xDC;
SCON=0x50;
PCON=0x00;
TR2=1;
ES=1;
TI=1;
}
回复

使用道具 举报

ID:94031 发表于 2020-6-29 21:04 | 显示全部楼层
TI是由硬件在有发送时自动值1,初始化时不要值1.
回复

使用道具 举报

ID:636538 发表于 2020-6-30 09:03 | 显示全部楼层
初始化设置的只有TR ES EA,像TI、RI都是硬件自动置1,当串口发送完毕或者信息接收完毕,硬件自动将TI、RI都是硬件自动置1,
回复

使用道具 举报

ID:793116 发表于 2020-6-30 16:45 | 显示全部楼层
xuyaqi 发表于 2020-6-29 21:04
TI是由硬件在有发送时自动值1,初始化时不要值1.

在网上看说是用printf()需要手动将TI置一,单独工作是没问题的,不知道为什么会影响T1的中断服务函数?
回复

使用道具 举报

ID:733205 发表于 2020-7-18 09:08 | 显示全部楼层
这个是根据终端的优先级来确定哪个先发生,这就是所谓的“抢占”,优先级高的中断优先处理,同等级的先来先处理
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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