怎样通过串口实现51和ZigBee模块的数据通信

怎样通过串口实现51和ZigBee模块的数据通信,第1张

对ZigBee我不熟悉,但无论对谁通讯,只要是经过串口,51的设置都是相同的:

1。规定通讯规则,比如“A”代表读温度,“B”代表读压力,这个由收发双方约定

2。设置51串口,举例说——假定用6MHz晶振,用1200波特率,设置参数为:

MOVSCON,#50H8位+无校验+允许串口接收

MOVTMOD,#21H设T1为两个8位寄存器

MOVTH1,#0F3H

MOVTL1,#0F3H设波特率=1200

(MOVIE,#90H 允许串口中断,建议不用中断方式,免去此条)

MOVTCON,#40H T1开始工作

3。如果不用中断方式,在需要送串口的地方加上如下指令

CLRTI

MOVA,#XXXX为待送出数据

MOVSBUF,A

JNBTI,$等串口送出完整数据

。。。。。。其它工作

4。在需要判断串口接收的地方加入如下指令:

JNBRI,YYYY

CLRRI

MOVA,SBUF

。。。。。。对接收到ACC的数据进行处理

YYYY:其它工作

5。如用中断方式,

a.要在0023H处加一条跳转到中断服务程序入口的指令

b.在中断服务程序中,加入判断,并清除接收标记(RI)及读取串口的指令

c.还要加入判断,并清除发送标记(TI)的指令,之后要判断是否还有待发送的数据

如有,可继续发送。

所以,用中断方式,比较啰嗦。

以上仅供参考

问题点找到了,debug_str()会将在LCD显示的数据同时也传到PC,它是通过调用MT层中的MT_ProcessDebugStr()来完成的,所以每条显示的内容都会增加一个包头,也就是你看到的乱码。

这里给你两个建议,一个屏蔽debug_str(),不增加后面的那一行,在LCD的外部是写串口通信。二是屏蔽debug_str()后,使用HalUARTWrite()函数来发送数据,就没有乱码了。我个人鄙视第二种做法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11450450.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存