📄 rfcode40old.asm
字号:
;2 ---->12
GO_END: NOP
NOP
NOP
MAR *,AR4 ;1
BANZ GO_BYTECODING ;
;2
LAR AR4,#03H ;1
NOP ;1
B CODING_CYCLE ;4个指令周期
END_CODING: RET
;***********************************************************
;系统初始化程序
SYSINIT:
; SETC INTM
; CLRC SXM
; CLRC OVM
; CLRC CNF ;B0区被配置为数据空间
; LDP #0E0H ;指向7000h~7080h区
; SPLK #81FEH,SCSR1 ;时钟2倍频,CLKIN=10 M,CLKOUT=20 M
; SPLK #0E8H,WDCR ;不使能WDT
; LDP #0
; SPLK #0FFFFH,IFR ;清全部中断标志
; SPLK #0000H,IMR ;使能中断第4级INT4
; LDP #5
; SPLK #1H,FLAG
; LDP #DP_PF2
; LACL MCRC
; AND #0FF9FH ;IOPE5,6口配置为一般I/O口
; SACL MCRC
; LACL PEDATDIR
; OR #6060H ;IOPE5,6口设置为输出方式,输出为1
; SACL PEDATDIR
; LACL MCRB
; AND #0FF3FH
; SACL MCRB ;IOPC6,7配置为I/O口
; LACL PCDATDIR
; OR #0C0C0H
; SACL PCDATDIR
RET
********************************************
************定时器初始化********************************************8
;TIMERINIT: ; LDP #0
; ; SPLK #02H,IMR ;使能中断优先级INT2
; ; SPLK #0FFFFH,IFR ;清中断标志
; LDP #DP_EVA
; SPLK #00H,EVAIMRA ;不使能 中断
; SPLK #0FFFH,EVAIFRA ;清 EVA标志
; SPLK #0600H,T1PR ;定时100ms
; SPLK #0174CH,T1CON ;连续增计数模式;预分频因子为128;
;定时其计数使能 ;内部时钟
;定时器1比较使能
; SPLK #0,T1CNT
; RET
*********************************************************
***********************解码************************
*********************************************************
JIEMA:
LAR AR3,#ADDR_CAPTURE
LDP #5
SPLK #0,CAPTURE_VALUE
SPLK #0,RXD_BYTES
LAR AR6,#8A03H
MCH_DECODEN:
MAR *,AR6
LACL *+
LDP #5 ;判断SOF,18.88us HIGH
SACL 280H
SUB SWIDTH
ABS
SUB WIDTH_SPACE
BCND SEENEXT,GT
LDP #5
SPLK #02H,FLAG ; FLAG=00H:前一字节以LOW结束,且延伸到下一字节
; FLAG=01H:前一字节以HIGH结束,且没有延伸到下一字节
; FLAG=02H:前一字节以HIGH结束,且没有延伸到下一字节
; FLAG=03H:前一字节以HIGH结束,且延伸到下一字节
SPLK #0,DENUMBER
SPLK #00H,CAPTURE_VALUE
SPLK #00H,DECODE_FLAG
B GONEXT5
SEENEXT:LACL 280H
SUB DWIDTH
ABS
SUB WIDTH_SPACE
BCND SERROR,GT
LDP #5 ; 37.76us HIGH
SPLK #03H,FLAG ; 前一字节以HIGH结束,且延伸到下一字节
SPLK #01H,DENUMBER
SPLK #8000H,CAPTURE_VALUE
SPLK #00H,DECODE_FLAG
B GONEXT5
GONEXT5: MAR *,AR6
LACL *+
LDP #5
SACL 280H
SUB SWIDTH
ABS
SUB WIDTH_SPACE
BCND DENEXT,GT
LDP #5
SPLK #01H,WPULSE ;18.88US
B DECONDEN
DENEXT: LACL 280H
SUB DWIDTH
ABS
SUB WIDTH_SPACE
BCND DENEXT2,GT
LDP #5
SPLK #02H,WPULSE ; 37.76us
B DECONDEN
DENEXT2: LACL 280H
SUB TWIDTH
ABS
SUB WIDTH_SPACE
BCND SERROR,GT
LDP #5
SPLK #03H,WPULSE ; 56.64us
B CHECK
DECONDEN: LDP #5
LACL FLAG ;**************************
BCND DECONDEN1,NEQ
LACL DENUMBER ;FLAG=0
SUB #01H
SACL DETEMP
LACL DECODE_FLAG
BCND DEFLAG01,NEQ
LACL WPULSE ;DECODE_FLAG=0
SUB #01H
BCND PULSE02,NEQ
LACL #8000H ;WPULSE=1
RPT DETEMP
SFR
OR CAPTURE_VALUE
SACL CAPTURE_VALUE
SPLK #01H,DECODE_FLAG
B FLAG0OUT
PULSE02: LACL #0C000H ;WPULSE=2
RPT DETEMP
SFR
OR CAPTURE_VALUE
SACL CAPTURE_VALUE
SPLK #01H,DECODE_FLAG
B FLAG0OUT
DEFLAG01: SPLK #00H,DECODE_FLAG ;DECODE_FLAG=1
FLAG0OUT: B CODENOUT ;*****************************
DECONDEN1:SUB #01H
BCND DECONDEN2,NEQ
LDP #5 ;FLAG=1
LACL DECODE_FLAG
BCND DEFLAG11,NEQ
LACL DENUMBER ;DECODE_FLAG=0
BCND GONONDE,NEQ
LACL WPULSE ;DENUMBER=0
SUB #01H
BCND PULSE12,NEQ
SPLK #8000H,CAPTURE_VALUE ;WPULSE=1
SPLK #01H,DECODE_FLAG
B FLAG1OUT
PULSE12: SPLK #0C000H,CAPTURE_VALUE ;WPULSE=2
SPLK #01H,DECODE_FLAG
B FLAG1OUT
GONONDE: LACL DENUMBER ;DECODE_FLAG=0,DENUMBER>0
SUB #01H
SACL DETEMP
LACL WPULSE
SUB #01H
BCND PULSE112,NEQ
LACL #8000H ;WPULSE=1
RPT DETEMP
SFR
OR CAPTURE_VALUE
SACL CAPTURE_VALUE
SPLK #01H,DECODE_FLAG
B FLAG1OUT
PULSE112: LACL #0C000H ;WPULSE=2
RPT DETEMP
SFR
OR CAPTURE_VALUE
SACL CAPTURE_VALUE
SPLK #01H,DECODE_FLAG
B FLAG1OUT
DEFLAG11: SPLK #00H,DECODE_FLAG ;DECODE_FLAG=1
FLAG1OUT: B CODENOUT ;*************************
DECONDEN2:SUB #01H
BCND DECONDEN3,NEQ
NOP ;FLAG=2
LDP #5
LACL DECODE_FLAG
BCND DEFLAG20,EQ
LACL DENUMBER ; DECODE_FLAG=1
SUB #01H
SACL DETEMP
LACL WPULSE
SUB #01H
BCND PULSE22,NEQ
LACL #8000H ;WPULSE=1
RPT DETEMP
SFR
OR CAPTURE_VALUE
SACL CAPTURE_VALUE
SPLK #00H,DECODE_FLAG
B FLAG2OUT
PULSE22: LACL #0C000H ;WPULSE=2
RPT DETEMP
SFR
OR CAPTURE_VALUE
SACL CAPTURE_VALUE
SPLK #00H,DECODE_FLAG
B FLAG2OUT
DEFLAG20: SPLK #01H,DECODE_FLAG ; DECODE_FLAG=0
FLAG2OUT: B CODENOUT ;**************************
DECONDEN3:LACL DENUMBER ;FLAG=3
SUB #01H
SACL DETEMP
LACL DECODE_FLAG
BCND DEFLAG31,EQ
LACL WPULSE ;DECODE_FLAG=1
SUB #01H
BCND PULSE32,NEQ
LACL #8000H ;WPULSE=1
RPT DETEMP
SFR
OR CAPTURE_VALUE
SACL CAPTURE_VALUE
SPLK #00H,DECODE_FLAG
B FLAG0OUT
PULSE32: LACL #0C000H ;WPULSE=2
RPT DETEMP
SFR
OR CAPTURE_VALUE
SACL CAPTURE_VALUE
SPLK #00H,DECODE_FLAG
B FLAG0OUT
DEFLAG31: SPLK #01H,DECODE_FLAG ;DECODE_FLAG=0
FLAG3OUT: B CODENOUT ;************************
CODENOUT: LDP #5
LACL DENUMBER
ADD WPULSE
SACL DENUMBER
SUB #16 ;*******************23456********************8888
BCND GONEXT5,LT
LDP #5
LACL RXD_BYTES
ADD #01H
SACL RXD_BYTES ;字节数加1
SUB #0B0H
BCND SERROR,GT
NOP
NOP ;保存CAPTURE_VALUE
LAR AR4,#07H ;
LDP #5 ;
SPLK #0C000H,MCH_TEMP1 ;
SPLK #8000H,MCH_TEMP2 ;
SPLK #01H,MCH_TEMP3 ;
SPLK #0,MCHVALUE_TEMP ;
MCHCYCLE: LDP #5 ;
LACL CAPTURE_VALUE ;
AND MCH_TEMP1 ;
SUB MCH_TEMP2 ;
BCND DEMCH1,NEQ
NOP ;
B MECHNEXT ;
DEMCH1: LACL MCHVALUE_TEMP ;
OR MCH_TEMP3 ;
SACL MCHVALUE_TEMP
MECHNEXT: LACL MCH_TEMP1 ;
SFR ;
SFR ;
SACL MCH_TEMP1
LACL MCH_TEMP2 ;
SFR ;
SFR ;
SACL MCH_TEMP2
LACL MCH_TEMP3 ;
SFL ;
SACL MCH_TEMP3
MAR *,AR4 ;
BANZ MCHCYCLE ;
LDP #5 ;
LACL MCHVALUE_TEMP ;
MAR *,AR3 ;
SACL *+ ;*****************************8
LDP #5
LACL DENUMBER
SUB #16
BCND INTBYTE,EQ
NOP ;DENUMBER=17
LDP #5
LACL FLAG
BCND FLAGD1,NEQ
LACL DECODE_FLAG ;原FLAG=0
BCND DEFLAGD01,NEQ
SPLK #0,FLAG ;新FLAG=0
SPLK #0,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2
DEFLAGD01:SPLK #03H,FLAG ;新FLAG=3
SPLK #8000H,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2 ;**************************
FLAGD1: SUB #01H
BCND FLAGD2,NEQ
LACL DECODE_FLAG ;原FLAG=1
BCND DEFLAGD11,NEQ
SPLK #0,FLAG ;新FLAG=0
SPLK #0,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2
DEFLAGD11:SPLK #03H,FLAG ;新FLAG=3
SPLK #8000H,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2 ;*************************
FLAGD2: SUB #01H
BCND FLAGD3,NEQ
LACL DECODE_FLAG ;原FLAG=2
BCND DEFLAGD21,NEQ
SPLK #03H,FLAG ;新FLAG=3
SPLK #8000H,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2
DEFLAGD21:SPLK #00H,FLAG ;新FLAG=0
SPLK #0,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2 ;*************************
FLAGD3: LACL DECODE_FLAG ;原FLAG=3
BCND DEFLAGD31,NEQ
SPLK #03H,FLAG ;新FLAG=3
SPLK #8000H,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2
DEFLAGD31:SPLK #00H,FLAG ;新FLAG=0
SPLK #0,CAPTURE_VALUE
SPLK #01H,DENUMBER
B CODENOUT2 ;**************************************8
INTBYTE: NOP ;DENUMBER=16
LDP #5
SPLK #0,CAPTURE_VALUE ;初始CAPTURE_VALUE=0
SPLK #00H,DENUMBER ;初始DENUMBER=0
LACL FLAG
BCND FLAGD21,NEQ
LACL DECODE_FLAG ;原FLAG=0
BCND DEFLAGD201,NEQ
SPLK #01H,FLAG ;新FLAG=1
B CODENOUT2
DEFLAGD201:SPLK #02H,FLAG ;新FLAG=2
B CODENOUT2 ;**************************
FLAGD21: SUB #01H
BCND FLAGD22,NEQ
LACL DECODE_FLAG ;原FLAG=1
BCND DEFLAGD211,NEQ
SPLK #01H,FLAG ;新FLAG=1
B CODENOUT2
DEFLAGD211:SPLK #02H,FLAG ;新FLAG=2
B CODENOUT2 ;*************************
FLAGD22: SUB #01H
BCND FLAGD23,NEQ
LACL DECODE_FLAG ;原FLAG=2
BCND DEFLAGD221,NEQ
SPLK #02H,FLAG ;新FLAG=2
B CODENOUT2
DEFLAGD221:SPLK #01H,FLAG ;新FLAG=1
B CODENOUT2 ;*************************
FLAGD23: LACL DECODE_FLAG ;原FLAG=3
B
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -