找回密码
 注册
关于网站域名变更的通知
查看: 200|回复: 1
打印 上一主题 下一主题

为什么我用单片机串口发一个数组的内容出去,顺序是乱的?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-12-8 10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
  • /*uart.c*/
  • #define uc unsigned char
  • #define ui unsigned int
  • #define ul unsigned long
  • #define iuc idata unsigned char
  • #define iui idata unsigned int
  • #define iul idata unsigned long
  • #define bt bit
  • #define swch switch
  • #define cs case
  • #define whl while
  • #define rtn return
  • #define brk break
  • #define itrpt interrupt
  • uart_init(bt xos)
  • {
  • if(xos==1)
  •   {
  •   P_SW2|=0x80; /*启动内部扩展区寄存器访问功能*/
  •   XOSCCR|=0xc0; /*启动外部晶振*/
  •   while(!(XOSCCR & 1)); /*待晶振频率稳定*/
  •   CLKDIV=0x00; /*晶振不分频*/
  •   CKSEL=0x01; /*选用外部晶振*/
  •   }
  • SCON=0x50;   /*设定串口工作方式*/
  • TMOD|=0x21;  /*设置T0T1寄存器*/
  • AUXR=0xfc;  /*配置辅助寄存器*/
  • TL1=TH1=0xdc; /*设置波特率为9.6kbit/s*/
  • TR1=1;
  • REN=1; /*允许接收串口数据*/
  • EA=1;  /*打开总中断*/
  • ES=1; /*打开串口中断*/
  • P3M1=0x01; /*00000001*/
  • P3M0=0x02; /*00000010,将串口接收口设为高阻输入模式,发送口设置为强推挽模式*/
  • }
  • uart_txd(uc buf[])
  • {
  • iui i;
  • iui j=sizeof(buf);
  • TI=RI=0;
  • for(i=0;i<j;i++)
  •   {
  •   SBUF=buf;
  •   while(TI==0)
  •     {
  •     ;
  •     }
  •   TI=0;
  •   }
  • }
  • /*—————————————两个文件的分割线—————————————*/
  • /*main.c*/
  • #include <STC8x.H>
  • #include <UART.H>
  • iui txdbuf[13]={'H','E','L','L','O',' ','W','O','R','L','D','!','\0'};
  • main()
  • {
  • uart_init(0);
  • while(1)
  •   {
  •   uart_txd(txdbuf);
  •   }
  • }- u5 E8 W& ?5 |2 A  N

; H/ ]% r% R8 Y# ~8 [5 v

该用户从未签到

2#
发表于 2021-12-8 10:55 | 只看该作者

1 E7 t- Q4 j2 }* F" b# L, s楼主说的乱不是发送的数据乱还是接收到的数据乱。在通信中通信的两方的通信参数必须设定一致,按着定好的协议收发数据,不然就易出问题。
2 R) U8 }! t0 _% r2 c  p$ }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-18 19:33 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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