📄 ev1527-1.asm
字号:
; 本程序由深圳超通和龙科技有限公司提供,若需要eV1527,请与本公司联系
; 电话:0755 - 82908963 82948499 传真:0755-82941332
RECEIVE:
BTFSS RFIN ; 输入低电平?
GOTO RMT_0 ; 是,接收错误
MOVLW 10 ; 10mS计时
MOVWF CNT1
RCV0:
MOVLW 200
MOVWF CNT0
RCV1:
BTFSS RFIN ; 输入高?
GOTO RCV2 ; 否,退出循环
DECFSZ CNT0,F ; 是, 10mS倒计时
GOTO RCV1
DECFSZ CNT1,F
GOTO RCV0
RCV2:
CLRF CNT0 ; 清计时器
CLRF CNT1
; *************************************************************************
; 开始对同步头计时
; *************************************************************************
RCV3
BTFSC RFIN ; 输入高电平?
GOTO RCV6 ; [0][0] YES--END CALIBRATION
INCF CNT0,1 ; 16位计数器加1
SKPNZ ; 无进位,跳过
INCF CNT1,1 ; 高位加1
CLRWDT ; 清看门狗
NOP
GOTO $+1
GOTO $+1
GOTO $+1
BTFSS CNT1,3
GOTO RCV3
GOTO RMT_0 ; 计时指令 Total = 16
RCV6:
CLRC ; CNT1:CNT0 / 16 --> 1/2LCK
RRF CNT1,F
RRF CNT0,F
CLRC
RRF CNT1,F
RRF CNT0,F
CLRC
RRF CNT1,F
RRF CNT0,F
CLRC
RRF CNT1,F
RRF CNT0,F
MOVLW MIN/256 ; 判断同步头合法性(MIN为同步头最小时间)
SUBWF CNT0,W
BTFSS STATUS,C
GOTO RMT_0 ; 小于MIN, 错误
; *************** 有效同步头接收 *********************
RCV7:
MOVLW NBITS ; 位接收计数器
MOVWF CNT1
MOVF CNT0,W
MOVWF CNT2 ; CNT2 = CNT0
MOVLW 6H
SUBWF CNT2,F
GOTO DL1 ; 补偿第一位
RCV8:
MOVLW 4H ; 最大等待4个LCK
MOVWF TMP_CNT
RCV10A:
MOVF CNT0,W
MOVWF CNT2
RCV10B:
BTFSC RFIN ; 等待高电平?
GOTO RCV11
DECFSZ CNT2,1
GOTO RCV10B
DECFSZ TMP_CNT,1
GOTO RCV10A
GOTO RMT01 ; 时间溢出,错误
RCV11
MOVLW 3H ; 补偿时间
SUBWF CNT0,W
MOVWF CNT2
DL1:
CLRWDT ; 清看门狗
DECFSZ CNT2,1
GOTO DL1 ; CNT0 * 4 us
SAMPLE1:
BTFSS RFIN ; 2LCK处为高电平?
GOTO RMT01 ; 否,错误数据
MOVF CNT0,W ; 调整时间
MOVWF CNT2 ;
DECF CNT2,F
GOTO $+1
NOP
DL2:
CLRWDT ; 清看门狗
GOTO $+1 ; 消耗2uS
GOTO $+1 ; 消耗2uS
GOTO $+1 ; 消耗2uS
GOTO $+1 ; 消耗2uS
DECFSZ CNT2,1
GOTO DL2 ; CNT0 * 12
SAMPLE2:
BCF FLAGS,BITIN ; 读入数据(8LCK处)
BTFSC RFIN ;
BSF FLAGS,BITIN ;
RLF CSR0,F ; 左移
RLF CSR1,F
RLF CSR2,F
BCF CSR0,0
BTFSC FLAGS,BITIN
BSF CSR0,0
MOVF CNT0,W ; 调整时间
MOVWF CNT2
MOVLW 3
SUBWF CNT2,1
NOP
DL3:
GOTO $+1 ; 消耗2uS
GOTO $+1 ; 消耗2uS
GOTO $+1 ; 消耗2uS
GOTO $+1 ; 消耗2uS
CLRWDT ; 清除看门狗
DECFSZ CNT2,1
GOTO DL3 ; CNT0 * 12 us
SAMPLE3:
BTFSC RFIN ; 14LCK输入低电平? <<6>>
GOTO RMT0 ; [0] NO--RECEIVE ERROR
CALL TST_RTCC ; [11] CHECK RTCC
DECFSZ CNT1,F ; 最后一位?
GOTO RCV8 ; 否,继续
RMT1:
BSF LED ; 表示有效数据
CLRC
RETLW 0 ; RETURN
RMT_0:
RMT0:
RMT01:
BSF STATUS,C ; 非法数据
RETLW 1 ; RETURN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -