标题: 单片机串口通信TI置1为什么影响定时器T1工作? [打印本页]

作者: shimmer717    时间: 2020-6-29 19:23
标题: 单片机串口通信TI置1为什么影响定时器T1工作?
单片机串口初始化程序如下,串行口中断服务程序中利用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;
}

作者: xuyaqi    时间: 2020-6-29 21:04
TI是由硬件在有发送时自动值1,初始化时不要值1.
作者: SKYLAR123    时间: 2020-6-30 09:03
初始化设置的只有TR ES EA,像TI、RI都是硬件自动置1,当串口发送完毕或者信息接收完毕,硬件自动将TI、RI都是硬件自动置1,
作者: shimmer717    时间: 2020-6-30 16:45
xuyaqi 发表于 2020-6-29 21:04
TI是由硬件在有发送时自动值1,初始化时不要值1.

在网上看说是用printf()需要手动将TI置一,单独工作是没问题的,不知道为什么会影响T1的中断服务函数?
作者: 草草111111    时间: 2020-7-18 09:08
这个是根据终端的优先级来确定哪个先发生,这就是所谓的“抢占”,优先级高的中断优先处理,同等级的先来先处理




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1