找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

问一个单片机串口中断程序调试问题

查看数: 1639 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-5-19 16:38

正文摘要:

我的问题是: ①在初始化函数InitUART()中SCON设置为了01010000,TI和RI都被设置为0,所以不能向单片机申请中断,然后在初始化函数InitUART()之后又紧接着设置发送一串字符,发送函数中有 while(!TI);TI=0;这么两行 ...

回复

ID:123289 发表于 2019-5-20 08:29
本帖最后由 yzwzfyz 于 2019-5-20 12:00 编辑

ES只是控制中断是否允许,但它不能控制串口是否工作,只要串口是工作的(这是硬件决定的),则TI就会在工作过程中被置1,它与ES无关。
但TI=1 之后是会否引起中断却受控于ES。
ID:517466 发表于 2019-5-30 19:55
第一个串口调试软件接受不了汉字,估计是这个程序本身就没有考虑接受的数据中包含汉字数据。对串口而言,收发的都是单纯的16进制数据,他并不知道这个数据是指令、数据;还是字母、汉字。需要两边的程序代码解析。加入解析功能的,自然会显示汉字。这就好比有些没有汉字字库的LCD12864,你发给它汉字,因为不能识别,是显示不了的。有汉字字库的,收到特殊数据的,汉字的两个字节数据,16进制值>255,根据编码值,去字库里找匹配的点阵数据,显示到液晶上。也就是说,液晶上显示的字符,都是通过计算编码值,找到对应的点阵数据,Bit位上有值的,那个点就显示,所有该现实的点都显示出来,就形成了字母、数字,汉字。

评分

参与人数 1黑币 +60 收起 理由
admin + 60 回帖助人的奖励!

查看全部评分

ID:523537 发表于 2019-6-7 05:51
suncat0504 发表于 2019-5-30 19:55
第一个串口调试软件接受不了汉字,估计是这个程序本身就没有考虑接受的数据中包含汉字数据。对串口而言,收 ...

哦哦,好的我明白了,多谢大佬指点
ID:517466 发表于 2019-5-30 19:47
TI是数据发送完成后产生的标志,对51单片机,当你向SBUF发送完一字节数据,单片机会自动通过TX管脚向外发送数据,发送完成后,SBUF数据清空,同时使TI=1,表示数据发送完成,好让你继续发送下一个字节。
ID:523537 发表于 2019-5-30 15:51
yzwzfyz 发表于 2019-5-20 08:29
ES只是控制中断是否允许,但它不能控制串口是否工作,只要串口是工作的(这是硬件决定的),则TI就会在工作 ...

好的,我明白了。还有就是汉字为什么第一个串口调试软件发送不了呢?
ID:328014 发表于 2019-5-20 01:51
汉字其实就是2个字节的数据而已

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

Powered by 单片机教程网

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