无线通信因其组网灵活,无需布线,不受地理环境限制等优点而受到青睐,近年来发民迅速,被广泛应用于遥控,遥测,不型无线网络,无线抄表,门禁系统,小区传呼,工业数据采集系统,无线标签,身份识别,小型无线数据终端,安全防火系统,无线遥控系统,生物信号采集,水文气象控制,机器人控制,无线/230/422/485数据通信系统。
PTR2000性能优异,使用方便,具有超低功耗,高速率无线接收发数传功能。可广泛应用于无线传产品的设计领域。
基于PTR2000的无限数据传输电路设计如图
(无线传输模块单片机部分)
(PC和PTR模块的接口电路)
程序
**************************************************************************
主程序完成的功能是单片机接收PC机通过PTR2000送来的指令,根据指令内容决定采集数据并且启动发送过程。发送完毕后,向PC机端发送结束指令,完成后,单片机端PTR2000回到接收状态。
****************************************************************************
MAIN:LCALL CLEART
LCALL CLEARR
CLR TXEN 初始为接收状态
SETB PWR 正常工作模式
CLR CS 选择频道0
CLR EA
11.0592MHz下,设置串行口9600波特率,工作方式1,8位数据位,1位停止位,无奇偶校验
MOV TMOD,#21H 定时器1工作模式1,定时器0工作模式2
MOV SCON,#50H 串行口工作方式1,REN=1
MOV PCON,# 00H
MOV TH1,#0FDH
MOV TL1,#0FDH
SETB TR1 定时器1开始计时
SETB PT0
MOV TH0,#3CH
MOV TL0,#0B0H
MOV IE,#90H EA=1,ES=1:打开串口中断
LOOP0:JNB FLAGSENDREQ,NEXT0
SETB TXEN 改变为发射状态
LCALL DELAY 延时5ms
LCALL GETDATA 采集数据
LCALL SEND 发送
CLR FLAGSENDREQ
LCALL SENDOVER 通知PC机发送结束
CLR TXEN 重设为接收状态
RETI
NEXT0:JNB FLAGRESENDREQ,NEXT1
SETB TXEN 改变为发射状态
LCALL DELAY 延时5ms
LCALL GETDATA 采集数据
LCALL SEND 发送
CLR FLAGSENDREQ
LCALL SENDOVER 通知PC机发送结束
CLR TXEN 重设为接收状态
RETI
定时器0中断服务子程序
T0:CLR ET0
CLR 5MSFLAG
MOV TH0,#3CH
MOV TL0,#0B0H
SETB ET0
RETI
串口中断服务子程序
SINT:CLR RI 判断是否收到字符'$',其数值为0x24,置开始接收标志位
MOV A,SBUF
CJNE A,#24H,NEXT2
JB FLAGSTARTREC,NEXT2
SETB FLAGSTARTREC
NEXT2:JB FLAGSTARTREC,EXIT8
MOV A,RCOUNT
CLR C
SUBB A,#05H
JNC NEXT7
MOV A,#RBUF
ADD A,RCOUNT
MOV R0,A
MOV A,SBUF
MOV @R0,A
INC RCOUNT
;;;;;;;判断是否收到字符'*',其数值为0x2A,根据接收的指令设置相应标志位
NEXT7:MOV A,#RBUF
ADD A,RCOUNT
DEC A
MOV R0,A
MOV A,@R0
CJNE A,#2AH,NEXT6
MOV RCOUNT,#00H
CLR FLAGSENDREQ
MOV A,#RBUF
ADD A,#02H
MOV R0,A
MOV A,@R0
CJNE A,#33H,EXIT8 收到“请求发送”指令
SETB FLAGSENDREQ
CJNE A,#66H,EXIT8 收到“请求重发”指令
SETB FLAGREREQ
EXIT8: RETI
NEXT6:MOV A,COUNT
CJNE A,#05H,EXIT6
MOV A,#RBUF
ADD A,#02H
MOV R0,A
MOV A,@R0
CJNE A,#33H,EXIT8 收到“请求发送”指令
SETB FLAGSENDREQ
CJNE A,#66H,EXIT8 收到“请求重发”指令
SETB FLAGREREQ
RETI
EXIT6:LCALL CLEARRBUF
RETI
;发送缓冲区清零
CLEARTBUF:MOV CNT1,#0BH
MOV R0,#TBUF
LOOP1:MOV @R0,#00H
INC R0
DJNZ CNT1,LOOP1
EXIT8: RET
;接收缓冲区清零
CLEARRBUF:MOV CNT1,#0BH
MOV R0,#RBUF
LOOP2: MOV @R0,#00H
INC R0
DJNZ CNT1,LOOP2
RET
延时5MS
DELAY:SETB TR0
SETB ET0
JNB 标志寄存器DELAY5MS,$
CLR ET0
CLR TR0
SETB FLAGDELAY5MS
RET
************************************************************************
采集数据函数经过简化处理,取固定的7个字节数据
***********************************************************************
GETDATA:MOV CNT1,#07H
MOV R0,#DATABUF
LOOP3: MOV @R0,#80H
NC R0
DJNZ CNT1,LOOP3
RET
单片机端发送数据函数
SEND:MOV CNT1,#07H
MOV R0, TBUF
MOV @R0,#24H 起始位
INC R0
MOV @R0,#07H 7个数据字节
INC R0
LOOP4:MOV @R0, 80H
INC R0
DJNZ CNT1,LOOP4
INC R0
MOV @R0,#2AH 停止位
MOV CNT1,#0AH
MOV R0,#TBUF
LOOP5:MOV A,@R0
MOV SBUF,A
JNB T1,$
CLR TI
INC R0
DJNZ CNT1,LOOP3
RET
***************************************************************************
通知PC机端发送结束函数
**************************************************************************
SENDOVER: CLR TI
MOV A,#24H
MOV SBUF,A
JNB T1,$
CLR TI
MOV A,#01H
MOV SBUF,A
JNB T1,$
CLR TI
MOV A,#99H 通知PC机端“发送结束”
MOV SBUF,A
JNB T1,$
CLR TI
MOV A,#99H
MOV SBUF,A
JNB T1,$
CLR TI
MOV A,#2AH
MOV SBUF,A
JNB T1,$
CLR TI
RET |