chunyang 发表于 2013-9-12 16:37
如果同样条件下,直通的接收效果不如同步头模式,那说明是你的软件问题,注意发射机开启后最初几个字节很 ...
我直通模式和同步模式都是同样的设备,在同步模式,接收的灵敏度很高,在直通模式时候,我只是把接收的设备的软件改成直通模式,在直通模式接收数据的时候,前面有键盘检测程序,不是一开机就接收的,所以开机后接收数据,机器运行应该稳定的,我接收是用查询模式的,先接收10个数据,包括引导码,同步码,数据和结束码,存储在寄存器中,再把寄存器中的内容拿来比较看看是否正确,我测试了很长时间,很多时候都不对,我把接收和比较的程序贴在下面:(是汇编的),请版主看一下,有什么问题,同步模式也是这个接收程序.
L023EH:
BTFSC PORTC, 3
GOTO L023EH ;判断有数据是否可以接收
CALL L00D7H ;数据接收子程序
MOVWF 58H ;接收数据暂存在58H
MOVF 41H, 0 ;开始的时候[41H]=00,相对地址用到改变地址变量
ADDLW 21H ;数据存储从21H 开始存储
MOVWF FSR ;FSR=W
MOVF 58H, 0 ;把暂存数据移到W
MOVWF INDF ;[FSR]=W 存到对应地址
INCF 41H, 1 ;[41H]=[41H]+1
MOVF 41H, 0 ;W=[41H]
XORLW 0AH ;10个数据是否接收完成
BTFSS STATUS, Z
GOTO L0243H
接收数据比较程序:
MOVF 21H, 0 ;取21H中接收的数据,与AAH引导码比较是否相同,如果是那么比较
XORLW 0AAH ;
BTFSS STATUS, Z ;判断W内容为0否,为0,Z=1,结果不位0,Z=0时跳过下一指令
GOTO NEXT12
GOTO NEXT11
NEXT12: BSF PORTA, 5 ;数据部正确1号红灯亮
GOTO L02CHH ;
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
NEXT11:
MOVF 22H, 0 ;取22H中接收的数据,与AAH引导码比较是否相同,
XORLW 0AAH ;
BTFSS STATUS, Z ;判断W内容为0否,为0,Z=1,结果不位0,Z=0时跳过下一指令
GOTO NEXT20
GOTO NEXT21
NEXT20: BSF PORTA, 5 ;数据部正确2号红灯亮
GOTO L02CHH ;W=01H
|