找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2049|回复: 8
打印 上一主题 下一主题
收起左侧

请教各位一个单片机串口TI置位问题,还望各位能给解惑

[复制链接]
跳转到指定楼层
楼主
ID:493146 发表于 2020-8-10 23:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*************** 装载串口发送缓冲 *******************************/

void TX1_write2buff(u8 dat)
{

        TX1_Buffer[COM1.TX_write] = dat;        
        if(++COM1.TX_write >= COM_TX1_Lenth)        COM1.TX_write = 0;

        if(COM1.B_TX_busy == 0)                //空闲
        {  
                COM1.B_TX_busy = 1;                //标志忙
                TI = 1;                                        //触发发送中断
        }
这是STC串口库函数的装载串口发送缓冲 ,这里为什么要用软件把TI置位,TI不是硬件置位吗?如果再把缓存里的数据给SBUF,数据发送完后硬件是不是又一次把TI置位呢?


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:235200 发表于 2020-8-11 10:36 | 只看该作者
没有哪一个资料说明了TI是硬件置位,只有TF0 TF1 IE0 IE1可以硬件置位
回复

使用道具 举报

板凳
ID:804115 发表于 2020-8-11 12:08 | 只看该作者
TI = 1;
这里用法错误,这个是发送完成中断状态位,只能由硬件置位,软件复位,你这里进行软件置位,是错误的操作。
回复

使用道具 举报

地板
ID:18307 发表于 2020-8-11 13:28 | 只看该作者
这是串口在中断里发送数据,TI=1起动串口中断,配合串口中断代码看
回复

使用道具 举报

5#
ID:493146 发表于 2020-8-11 22:45 | 只看该作者
csmyldl 发表于 2020-8-11 10:36
没有哪一个资料说明了TI是硬件置位,只有TF0 TF1 IE0 IE1可以硬件置位

stc官方资料上有说明,停止位开始发送时由内部硬件置位即TI=1,响应中断后必须由软件清零。
TI是不是硬件和软件都可以置位?
回复

使用道具 举报

6#
ID:493146 发表于 2020-8-11 22:47 | 只看该作者
1692483014 发表于 2020-8-11 12:08
TI = 1;
这里用法错误,这个是发送完成中断状态位,只能由硬件置位,软件复位,你这里进行软件置位,是错 ...

这是STC官方库函数的资料,看了之后也有疑惑。
回复

使用道具 举报

7#
ID:493146 发表于 2020-8-11 22:51 | 只看该作者
sdxrly 发表于 2020-8-11 13:28
这是串口在中断里发送数据,TI=1起动串口中断,配合串口中断代码看

if(TI)
        {
                TI = 0;
                if(COM1.TX_read != COM1.TX_write)
                {
                         SBUF = TX1_Buffer[COM1.TX_read];
                        if(++COM1.TX_read >= COM_TX1_Lenth)                COM1.TX_read = 0;
                }
                else        COM1.B_TX_busy = 0;
        }
中断函数里面没有这个函数,TI可以用软件置位吗?
回复

使用道具 举报

8#
ID:213173 发表于 2020-8-12 06:26 | 只看该作者
TI既可以由硬件置位也可以由软件置位,但只能由软件复位。软件置位的目的只是为了发生一次串口中断,其作用要看串口中断代码。不可妄议,误人误己。
回复

使用道具 举报

9#
ID:18307 发表于 2020-8-12 07:50 | 只看该作者
zcwjzwd 发表于 2020-8-11 22:51
if(TI)
        {
                TI = 0;

TI可以用软件置位
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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