完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#define uchar unsigned char #define uint unsigned int void serialportinit() { TMOD=0x20;//定时计数器1,8位自动装载计数器 SCON=0x70;//串口使用工作模式1,8位UART PCON|=0x00; TH1=0xfd;//设置串口波特率为9600bps; TR1=1;//定时计数器1开启 } void main() { uchar ch,x=1; serialportinit(); //串口初始化 while(1) { if(RI) { RI=0; ch=SBUF; SBUF=ch; while(!TI); TI=0; SBUF=x; while(!TI); TI=0; } } } 我的问题是: 1,为什么从串口工具给MCU发送abc时,从MCU发送回串口工具的数据是 61 01 62 01 63 01; 但是从串口工具中发送的数据变成abcd,为什么从mcu发送回串口工具中的数据还是不变,依然是 61 01 62 01 63 01? 2, 就以上代码中出现的问题,即接收一个字符后连续发送两个字符问题 描述下 串口接收和发送数据的时间顺序是怎样的?即哪些时候是在同一时间操作,关于时间间隔。。。需不需要延时......等会出错的问题。 PS:操作起串口才发现,串口并不是教程,书本上面说得那么简单,要熟练操作、甚至精通串口,真的不简单啊感觉,所以恳请大侠们帮下忙,因为学习过程中这个问题困扰了一周,都没有人说个明白,感谢了。 |
|
相关推荐
8个回答
|
|
|
|
第二,串口是是一个一个的接收数据,助手发的数据先是放缓存,然后一个触发一次中断
|
|
|
|
第三,其实串口在只用TX,RX,GND这3个脚时,非常简单
|
|
|
|
基本是入门必备的
|
|
|
|
要设置输入为16进制数的
|
|
|
|
|
|
|
|
if(RI)这里判断RI是否置位,这里没有出现错误哦, 还有,我只设置了TH1,,没有设置TL1,这样是否会出错?? 最后,我想请问您,我发送abc 返回到串口的现象我理解,也是正确,可发送abcd就没有了d这一字节的数据在串口助手中显示,这是什么原因呢? |
|
|
|
嗯嗯,设置了16进制显示,缓存应该也没问题,我再没有添加多发送x的语句时,发送123456789这一串数据,串口工具接收时没问题的。问题是出现在了添加: SBUF=x; while(!TI); TI=0; 之后,也就是多发送x这个字节的数据后产生问题的。所以,这是什么原因?麻烦您。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2024年上海海思MCU开发者体验官招募,手机/MatePad大奖等你拿!
609 浏览 0 评论
【xG24 Matter开发套件试用体验】蓝牙控制板载LED
633 浏览 0 评论
768 浏览 0 评论
电赛:mspm0l1306的开发板可以烧录程序,但是程序运行不了,怎么解决这个问题?
952 浏览 1 评论
【xG24 Matter开发套件试用体验】Silicon Labs 基于 EFR32MG24 Explorer Kit 开发板 开箱试用体验
768 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
10500 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-4 21:15 , Processed in 0.611112 second(s), Total 59, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191