📄 rfcode40old.asm
字号:
NOP
MAR *,AR4
BANZ DELAY8
NOP
RET
;*********************发送数据帧头部信号**1/256****(clk:40M)********************
SOF: LDP #DP_PF2
LACL PEDATDIR
AND #0FF9FH ;IOPE5,6输出为0,9.44us(17AH)
SACL PEDATDIR
LDP #0 ;2
SPLK #016FH,COUNTER ;2
RPT COUNTER ;1
NOP
;***************** ;2
LDP #DP_PF2 ;1
LACL PEDATDIR ;1
OR #0060H ;IOPE5,6输出为1,56.64us(8DAH)
SACL PEDATDIR
LDP #0
SPLK #08CFH,COUNTER
RPT COUNTER
NOP
;*****************
LDP #DP_PF2
LACL PEDATDIR
AND #0FF9FH ;IOPE5,6输出为0,9.44us(17AH)
SACL PEDATDIR
LDP #0
SPLK #016FH,COUNTER
RPT COUNTER
NOP
**********************
LDP #DP_PF2
LACL PEDATDIR
OR #0060H ;IOPE5,6输出为1
SACL PEDATDIR
RET
;*********************发送数据帧头部信号**1/4******(20M)******************
SOFQ: LDP #DP_PF2
LACL PEDATDIR
AND #0FF9FH ;IOPE5,6输出为0,9.44us(17AH)
SACL PEDATDIR
LDP #0
SPLK #016EH,COUNTER
RPT COUNTER
NOP
;*****************
LDP #DP_PF2
LACL PEDATDIR
OR #0060H ;IOPE5,6输出为1,37.76us(5E6)
SACL PEDATDIR
LDP #0
SPLK #05DAH,COUNTER
RPT COUNTER
NOP
;*****************
LDP #DP_PF2
LACL PEDATDIR
AND #0FF9FH ;IOPE5,6输出为0,9.44us(17AH)
SACL PEDATDIR
LDP #0
SPLK #016EH,COUNTER
RPT COUNTER
NOP
**********************
LDP #DP_PF2
LACL PEDATDIR
OR #0060H ;IOPE5,6输出为1,18.88us(2F3)
SACL PEDATDIR
LDP #0
SPLK #02EAH,COUNTER
RPT COUNTER
NOP
RET
;*********************发送数据帧结束信号******(40M)********************
;"ENDF"调用前有30个指令周期
ENDF: LDP #DP_PF2
LACL PEDATDIR
OR #0060H ;IOPE5,6输出为1,18.88us(2F3H)
SACL PEDATDIR
LDP #0 ;2C1=2F3-1E-14
SPLK #02C1H,COUNTER
RPT COUNTER
NOP
;*****************
LDP #DP_PF2
LACL PEDATDIR
AND #0FF9FH ;IOPE5,6输出为0,9.44us(17AH)
SACL PEDATDIR
LDP #0
SPLK #016FH,COUNTER
RPT COUNTER
NOP
;****************
LDP #DP_PF2
LACL PEDATDIR
OR #0060H ;IOPE5,6输出为1,9.44us(17AH)
SACL PEDATDIR
LDP #0
SPLK #016FH,COUNTER
RPT COUNTER
NOP
RET
*************写指令时的附加结束信号************************
WENDF: LDP #DP_PF2
LACL PEDATDIR
OR #0060H ;IOPE5,60输出为1,18.88us(2F3H)
SACL PEDATDIR
LDP #0 ;2DF=2F3-14
SPLK #02DFH,COUNTER
RPT COUNTER
NOP
;*****************
LDP #DP_PF2
LACL PEDATDIR
AND #0FF9FH ;IOPE5,6输出为0,9.44us(17AH)
SACL PEDATDIR
LDP #0
SPLK #016FH,COUNTER
RPT COUNTER
NOP
;****************
LDP #DP_PF2
LACL PEDATDIR
OR #0060H ;IOPE5,6输出为1,9.44us(17AH)
SACL PEDATDIR
LDP #0
SPLK #016FH,COUNTER
RPT COUNTER
NOP
RET
;**************************** 位置脉冲************(40M)*********************
;"PULSE"调用前有34个指令周期
PULSE: LDP #DP_PF2
LACL PEDATDIR
OR #0060H ;IOPE5,6输出为1,9.44us(17AH)
SACL PEDATDIR
LDP #0 ;142= 17A-22-16
SPLK #142H,COUNTER
RPT COUNTER
NOP
;**********************************
LDP #DP_PF2
LACL PEDATDIR
AND #0FF9FH ;IOPB0输出为0,9.44us(17AH)
SACL PEDATDIR
LDP #0
SPLK #016FH,COUNTER
RPT COUNTER
NOP
************************************
LDP #DP_PF2
LACL PEDATDIR
OR #060H ;IOPB0输出为1
SACL PEDATDIR
RET
;****************************18.88us的高电平*******(40M)*****************8*
;"HIGH1"调用前有34个指令周期
HIGH1: LDP #DP_PF2 ;2
LACL PEDATDIR ;1
OR #0060H ;2 ;IOPE5,6输出为1,18.88us(2F3)
SACL PEDATDIR
LDP #0
LACL #02B5H ;2B8=2F3-22-19
; SUB MODIFY
ADD MODIFY
SACL COUNTER
RPT COUNTER
NOP
LDP #0
SPLK #0,MODIFY
RET
;****************************18.88us的高电平*******(40M)*****************8*
;"HIGH2"调用前有24个指令周期
HIGH2: LDP #DP_PF2
LACL PEDATDIR
OR #0060H ;IOPE5,6输出为1,18.88us(2F3)
SACL PEDATDIR
LDP #0
LACL #02BFH ;2C2=2F3-18-19
; SUB MODIFY
ADD MODIFY
SACL COUNTER
RPT COUNTER
NOP
LDP #0
SPLK #0,MODIFY
RET
;**************************** 位置脉冲************(40M)*********************
;"QPULSE"调用前有50个指令周期
QPULSE: LDP #DP_PF2
LACL PEDATDIR
OR #0060H ;IOPE5,6输出为1,9.44us(17AH)
SACL PEDATDIR
LDP #0 ;132= 17A-32-16
SPLK #132H,COUNTER
RPT COUNTER
NOP
;**********************************
LDP #DP_PF2
LACL PEDATDIR
AND #0FF9FH ;IOPE5,6输出为0,9.44us(17AH)
SACL PEDATDIR
LDP #0
SPLK #016EH,COUNTER
RPT COUNTER
NOP
************************************
LDP #DP_PF2
LACL PEDATDIR
OR #060H ;IOPE5,6输出为1
SACL PEDATDIR
RET
;**1/4**************************18.88us的高电平*****(40M)*******************8*
;"QHIGH1"调用前有50个指令周期
QHIGH1: LDP #DP_PF2
LACL PEDATDIR
OR #0060H ;IOPE5,6输出为1,18.88us(2F3)
SACL PEDATDIR ;2AD=2F3-32-14
LDP #0
SPLK #02ADH,COUNTER
RPT COUNTER
NOP
RET
;**1/4**************************18.88us的高电平*****(20M)*******************8*
;"QHIGH2"调用前有14个指令周期
QHIGH2: LDP #DP_PF2
LACL PEDATDIR
OR #0060H ;IOPE5,6输出为1,18.88us(2F3)
SACL PEDATDIR ;2D1=2F3-E-14
LDP #0
SPLK #02D1H,COUNTER
RPT COUNTER
NOP
RET
;*****1/256****CODEN_NUMBERS个8位数据的脉冲位置编码(假设数据存放在ADR_CODEN开始的单元中)*(使用单元:61H,62H,63H)************
DATACODEN: LDP #4 ;2
SPLK #0FFFFH,CODEN_TEMP ;2
LAR AR4,ADR_CODEN ;2
RPT #04H
NOP ;-->16
CODEN_CYCLE:LDP #4 ;2
LACL CODEN_TEMP ;1
ADD #01H ;1
SACL CODEN_TEMP ;1
SUB CODEN_NUMBERS ;1
BCND END_CODEN,EQ ;条件成立,4个周期;不成立,2个周期
MAR *,AR4 ;1
LACL *+ ;1
LDP #0 ;2
SACL 61H ;1
SACL 62H ;1
BCND GOON,EQ
NOP
NOP
GOBACK: CALL HIGH1 ;"HIGH1"调用前有34个指令周期
LDP #0
LACL MCOUNTER
ADD #01H
SACL MCOUNTER
SUB #05H
BCND HIGH1ON,NEQ
SPLK #0,MCOUNTER
; SPLK #02H,MODIFY
SPLK #01H,MODIFY
B HIGHIONO
HIGH1ON: RPT #03H
NOP
HIGHIONO: LACL 62H
SUB #01H
SACL 62H
RPT #08H
NOP
LACL 62H
BCND GOBACK, NEQ
NOP
NOP
NOP
NOP
GOON: CALL PULSE ;"PULSE"调用前有34个指令周期
LDP #0
LACL #0FFH
SUB 61H
SACL 63H
LACL 63H
BCND GOEND,EQ
RPT #0AH
NOP
GOBACK2: CALL HIGH2 ;"HIGH2"调用前有20(+4)个指令周期
LDP #0
LACL MCOUNTER
ADD #01H
SACL MCOUNTER
SUB #05H
BCND HIGH2ON,NEQ
SPLK #0,MCOUNTER
SPLK #01H,MODIFY
B HIGH2ONO
HIGH2ON: RPT #04H
NOP
HIGH2ONO: LACL 63H
SUB #01H
SACL 63H
LACL 63H
BCND GOBACK2, NEQ
GOEND: B CODEN_CYCLE ;4个指令周期
END_CODEN: RET
;***1/4***CODEN_NUMBERS个8位数据的脉冲位置编码(假设数据存放在ADR_CODEN开始的单元中)********
DATA_CODING:LDP #4 ;2
LAR AR6,CODEN_NUMBERS ;1
LAR AR4,#03H ;2
LAR AR1,ADR_CODEN ;1
RPT #10H ;1
NOP ;1
CODING_CYCLE: ;-------->24
MAR *,AR6 ;1
BANZ CODING ;条件成立,4个周期;不成立,2个周期
B END_CODING
CODING: ;4
MAR *,AR1 ;1
LACL *+ ;1
SFL ;1
SFL ;1
LDP #0 ;2
SACL CODING_TEMP ;1 ----->36
GO_BYTECODING:LDP #0 ;2
LACL CODING_TEMP ;1
SFR ;1
SFR ;1
SACL CODING_TEMP ;1
AND #0003H ;2
SACL 61H ;1
SACL 62H ;1
BCND GO_ON,EQ
NOP
NOP
GO_BACK: ; ------>50
CALL QHIGH1 ;"HIGH1"调用前有50个指令周期
LDP #0
LACL 62H
SUB #01H
SACL 62H
RPT #16H
NOP
LACL 62H
BCND GO_BACK, NEQ
NOP
NOP
GO_ON: CALL QPULSE ;"PULSE"调用前有50个指令周期
LDP #0
LACL #03H
SUB 61H
SACL 63H
NOP
NOP
NOP
BCND GO_END,EQ
GO_BACK2: CALL QHIGH2 ;"HIGH3"调用前有10(+4)个指令周期
LDP #0 ;2
LACL 63H ;1
SUB #01H ;1
SACL 63H ;1
RPT #03H
NOP
BCND GO_BACK2, NEQ ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -