完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
串口参数设置不一致吧。如波特率、停止位、校验方式等
|
|
|
|
|
|
你都不贴程序,谁知道什么问题
|
|
|
|
|
|
#include #define uint unsigned int #define uchar unsigned char void delay(uint time); void initial_uart(); void send_uart(uint i); uint uart[]={0x00,0x01,0x02}; void main() { uint j; initial_uart(); while(1) { for(j=0;j<3;j++) { send_uart(uart[j]); } } } //============================================================== //名称:延时 //============================================================== void delay(uint time) { uint a,b; for(a=0;a { for(b=0;b<200;b++); } } //============================================================== //名称:串口初始化 //============================================================== void initial_uart() { SCON=0x40; //工作方式1--SM0=0,SM1=1 TMOD=0x20; //定时器T1工作方式2--自动重装初值模式 PCON=0x80; //SMOD=1,波特率加倍 TH1=0xF7; //定时器T1的初值 TL1=0xF7; //定时器T1重新装载的值 TR1=1; //启动定时器T1 } //============================================================== //名称:串口发送命令 //============================================================== void send_uart(uint i) { SBUF=i; while(TI!=1); TI=0; delay(5000); } |
|
|
|
|
|
这是程序 #include #define uint unsigned int #define uchar unsigned char void delay(uint time); void initial_uart(); void send_uart(uint i); uint uart[]={0x00,0x01,0x02}; void main() { uint j; initial_uart(); while(1) { for(j=0;j<3;j++) { send_uart(uart[j]); } } } //============================================================== //名称:延时 //============================================================== void delay(uint time) { uint a,b; for(a=0;a { for(b=0;b<200;b++); } } //============================================================== //名称:串口初始化 //============================================================== void initial_uart() { SCON=0x40; //工作方式1--SM0=0,SM1=1 TMOD=0x20; //定时器T1工作方式2--自动重装初值模式 PCON=0x80; //SMOD=1,波特率加倍 TH1=0xF7; //定时器T1的初值 TL1=0xF7; //定时器T1重新装载的值 TR1=1; //启动定时器T1 } //============================================================== //名称:串口发送命令 //============================================================== void send_uart(uint i) { SBUF=i; while(TI!=1); TI=0; delay(5000); } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
程序上没有发现什么问题,你核对下单片机和PC是的波特率,降低波特率试一下;
还有,如果在你发送前TXD引脚本来就是低电平的话,也会出现这个情况; ‘想要的发送结果是“1,2,3,4,5”,但是在调试助手上接收到的是“2,3,4,5,1”’,不是这个程序吧? |
|
|
|
|
|
嘿嘿 不是这个程序!不过除了要发送的数组内容不一样以外,别的都一样! |
|
|
|
|
|
我试一下降低波特率,谢谢啦 |
|
|
|
|
|
我怎么看都没看出来会出现23451的情况
|
|
|
|
|
|
你的意思是,你把数组里的数改成了“1,2,3,4,5”,运行以后,在调试助手上看到的是“1,2,3,4,5,”? |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
在软件调试的时候,读取SBUF的值,没有任何问题,也就是说,送到SBUF的值是正确的,但是在调试助手上看,第一各数被丢弃了。我以为是串口调试助手的问题,所以就用另一个单片机接受这个单片机发送的数据,发现接收不到第一个数。 |
|
|
|
|
|
是看硬件上的某一点?还是? |
|
|
|
|
|
|
|
|
|
|
|
好的,谢谢啦!我试一下哦 |
|
|
|
|
|
你先打开串口助手的串口,然后再给单片机上电。另外,初始化串口后要延时,否则当你发送第一个数的时候,定时器刚刚赋值完还没有产生稳定的波特率!
|
|
|
|
|
|
好的!谢谢啦!我试了你的方法,解决了我的问题! |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【瑞萨RA6E2】瑞萨E2S软件安装过程,等待过程玩下97_e2 studio_ZGZZ
140 浏览 0 评论
483 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
815 浏览 0 评论
1346 浏览 2 评论
804 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16903 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 18:43 , Processed in 1.021292 second(s), Total 107, Slave 90 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
18271