怎样通过串口实现51和ZigBee模块的数据通信
答案:5 悬赏:60 手机版
解决时间 2021-01-04 13:48
- 提问者网友:风月客
- 2021-01-03 20:55
怎样通过串口实现51和ZigBee模块的数据通信
最佳答案
- 五星知识达人网友:迟山
- 2021-01-22 06:45
对ZigBee我不熟悉,但无论对谁通讯,只要是经过串口,51的设置都是相同的:
1。规定通讯规则,比如“A”代表读温度,“B”代表读压力,这个由收发双方约定
2。设置51串口,举例说——假定用6MHz晶振,用1200波特率,设置参数为:
MOV SCON,#50H ;8位+无校验+允许串口接收
MOV TMOD,#21H ;设T1为两个8位寄存器
MOV TH1,#0F3H
MOV TL1,#0F3H ;设波特率=1200
( MOV IE,#90H ;允许串口中断,建议不用中断方式,免去此条)
MOV TCON,#40H ;T1开始工作
3。如果不用中断方式,在需要送串口的地方加上如下指令:
CLR TI
MOV A,#XX ;XX为待送出数据
MOV SBUF,A
JNB TI,$ ;等串口送出完整数据
。。。。。。 ;其它工作
4。在需要判断串口接收的地方加入如下指令:
JNB RI,YYYY
CLR RI
MOV A,SBUF
。。。。。。 ;对接收到ACC的数据进行处理
YYYY: ;其它工作
5。如用中断方式,
a.要在0023H处加一条跳转到中断服务程序入口的指令
b.在中断服务程序中,加入判断,并清除接收标记(RI)及读取串口的指令
c.还要加入判断,并清除发送标记(TI)的指令,之后要判断是否还有待发送的数据
如有,可继续发送。
所以,用中断方式,比较啰嗦。
以上仅供参考
1。规定通讯规则,比如“A”代表读温度,“B”代表读压力,这个由收发双方约定
2。设置51串口,举例说——假定用6MHz晶振,用1200波特率,设置参数为:
MOV SCON,#50H ;8位+无校验+允许串口接收
MOV TMOD,#21H ;设T1为两个8位寄存器
MOV TH1,#0F3H
MOV TL1,#0F3H ;设波特率=1200
( MOV IE,#90H ;允许串口中断,建议不用中断方式,免去此条)
MOV TCON,#40H ;T1开始工作
3。如果不用中断方式,在需要送串口的地方加上如下指令:
CLR TI
MOV A,#XX ;XX为待送出数据
MOV SBUF,A
JNB TI,$ ;等串口送出完整数据
。。。。。。 ;其它工作
4。在需要判断串口接收的地方加入如下指令:
JNB RI,YYYY
CLR RI
MOV A,SBUF
。。。。。。 ;对接收到ACC的数据进行处理
YYYY: ;其它工作
5。如用中断方式,
a.要在0023H处加一条跳转到中断服务程序入口的指令
b.在中断服务程序中,加入判断,并清除接收标记(RI)及读取串口的指令
c.还要加入判断,并清除发送标记(TI)的指令,之后要判断是否还有待发送的数据
如有,可继续发送。
所以,用中断方式,比较啰嗦。
以上仅供参考
全部回答
- 1楼网友:人间朝暮
- 2021-01-22 07:41
如果没有发送数据也会收到ff,可以试试将zb模块与单片机连接的那个串口线拔掉,看看是否还会收到,如果没有,那么表示串口线有干扰,要换。
建议您按下面步骤先检查一下:
1、首先先确认zigbee模块之间是否能正常通信。两个zb模块直连电脑,用串口调试助手做收发测试,如果通信正常,到第2点;
2、确认单片机的串口设置于zb模块的串口设置是否一致(波特率,数据位,效验位等等),若一致到下一步;
3,、将单片机rs232接口的2、3、5脚与zb模块的2、3、5脚对接,若无数据,则2、3交叉反接,即2接3,3接2,5接5。
通常连不上单片机都是与zb串口连接的部分硬件连接错误,或者串口参数设置不对造成的。
- 2楼网友:底特律间谍
- 2021-01-22 07:35
知道他们的电话是多少么
- 3楼网友:摆渡翁
- 2021-01-22 07:07
受用了,我也在查
- 4楼网友:佘樂
- 2021-01-22 05:39
我查了下,雀友全自动麻将机精品店的地址是在宁国南路与太湖路交口(太宁花园西门对面)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯