📄 checkmod.asm
字号:
CHK_MODE CLRF MODE_TYPE ;SET UNDEFINED TERMINAL_ID
MOVF TERMINAL_ID,W
ANDLW 0xF0
MOVWF TEMP_BUFFER
XORLW 0x20 ;DEVICE TYPE=2 ?
BTFSS STATUS,Z
GOTO MODE_STATE1
BSF MODE_2
GOTO EXIT_CHK_MODE
MODE_STATE1 MOVLW 0x30
XORWF TEMP_BUFFER,W ;DEVICE TYPE =3 ?
BTFSS STATUS,Z
GOTO MODE_STATE2
BSF MODE_3
GOTO EXIT_CHK_MODE
MODE_STATE2 MOVLW 0x50
XORWF TEMP_BUFFER,W ;DEVICE TYPE=5 ?
BTFSS STATUS,Z
GOTO MODE_STATE3
BSF MODE_5
GOTO EXIT_CHK_MODE
MODE_STATE3 MOVLW 0x70
XORWF TEMP_BUFFER,W ;DEVICE TYPE=7 ?
BTFSS STATUS,Z
GOTO MODE_STATE4
BSF MODE_7
GOTO EXIT_CHK_MODE
MODE_STATE4 MOVLW 0x40
XORWF TEMP_BUFFER,W ;DEVICE TYPE=4 ?
BTFSS STATUS,Z
GOTO MODE_STATE5
BSF MODE_4 ;DEFAULT 41 MODE
GOTO EXIT_CHK_MODE
;--------------------------------------------------------------------
MODE_STATE5 MOVLW 0xE0
XORWF TEMP_BUFFER,W ;DEVICE TYPE=E ?
BTFSS STATUS,Z
GOTO MODE_STATE6
BSF MODE_E
CHK_RX9
BTFSS RX9_DIS_BUF_FB
GOTO CHK_RX9A
MOVF RX9_DIS_BUF,W
MOVWF RX_9
DECFSZ RX9_NUM,F
GOTO EXIT_CHK_RX9
BCF RX9_DIS_BUF_FB
GOTO EXIT_CHK_RX9
CHK_RX9A
MOVF RX_9,W
BTFSC STATUS,Z ;RESULT = 00 ?
GOTO EXIT_CHK_RX9 ;YES
MOVWF RX9_DIS_BUF
BSF RX9_DIS_BUF_FB
MOVLW D'20'
MOVWF RX9_NUM
EXIT_CHK_RX9
; MOVF RX_9,W
; MOVWF RX2
;--------------------------------------------------------------------
CHK_RX6
BTFSS RX6_DIS_BUF_FB
GOTO CHK_RX6A
MOVF RX6_DIS_BUF,W
MOVWF RX6
DECFSZ RX6_NUM,F
GOTO EXIT_CHK_RX6
BCF RX6_DIS_BUF_FB
GOTO EXIT_CHK_RX6
CHK_RX6A
MOVF RX6,W
XORLW 0x7F
BTFSC STATUS,Z ;RESULT = 00 ?
GOTO EXIT_CHK_RX6 ;YES
MOVF RX6,W
MOVWF RX6_DIS_BUF
BSF RX6_DIS_BUF_FB
MOVLW D'20'
MOVWF RX6_NUM
EXIT_CHK_RX6
;--------------------------------------------------------------------
MOVF RX6,W ;RX6 : MOTION SENSOR X-AXIS
MOVWF TEMP_BUFFER1
CLRF TEMP_BUFFER2
DIV_RX6 MOVLW D'25'
SUBWF TEMP_BUFFER1,F
BTFSS STATUS,C ;RESULT IS POSITIVE ?
GOTO DIV_RX6A ;NO
INCF TEMP_BUFFER2,F ;YES
GOTO DIV_RX6
DIV_RX6A MOVF TEMP_BUFFER2,W
MOVWF OFFSET
CALL MOT_SEN_TABLE
MOVWF RX6
;--------------------------------------------------------------------
CHK_RX7
BTFSS RX7_DIS_BUF_FB
GOTO CHK_RX7A
MOVF RX7_DIS_BUF,W
MOVWF RX7
DECFSZ RX7_NUM,F
GOTO EXIT_CHK_RX7
BCF RX7_DIS_BUF_FB
GOTO EXIT_CHK_RX7
CHK_RX7A
MOVF RX7,W
XORLW 0x7F
BTFSC STATUS,Z ;RESULT = 00 ?
GOTO EXIT_CHK_RX7 ;YES
MOVF RX7,W
MOVWF RX7_DIS_BUF
BSF RX7_DIS_BUF_FB
MOVLW D'20'
MOVWF RX7_NUM
EXIT_CHK_RX7
;--------------------------------------------------------------------
MOVF RX7,W ;RX7 : MOTION SENSOR Y-AXIS
MOVWF TEMP_BUFFER1
CLRF TEMP_BUFFER2
DIV_RX7 MOVLW D'25'
SUBWF TEMP_BUFFER1,F
BTFSS STATUS,C ;RESULT IS POSITIVE ?
GOTO DIV_RX7A ;NO
INCF TEMP_BUFFER2,F ;YES
GOTO DIV_RX7
DIV_RX7A MOVF TEMP_BUFFER2,W
MOVWF OFFSET
CALL MOT_SEN_TABLE
MOVWF RX7
;--------------------------------------------------------------------
;RX8 : MOTION SENSOR Z-AXIS
CHK_RX8
BTFSS RX8_DIS_BUF_FB
GOTO CHK_RX8A
MOVF RX8_DIS_BUF,W
MOVWF RX8
DECFSZ RX8_NUM,F
GOTO EXIT_CHK_RX8
BCF RX8_DIS_BUF_FB
GOTO EXIT_CHK_RX8
CHK_RX8A
MOVF RX8,W
XORLW 0x7F
BTFSC STATUS,Z ;RESULT = 00 ?
GOTO EXIT_CHK_RX8 ;YES
MOVF RX8,W
MOVWF RX8_DIS_BUF
BSF RX8_DIS_BUF_FB
MOVLW D'20'
MOVWF RX8_NUM
EXIT_CHK_RX8
;--------------------------------------------------------------------
MOVF RX8,W ;RX8 : MOTION SENSOR Y-AXIS
MOVWF TEMP_BUFFER1
CLRF TEMP_BUFFER2
DIV_RX8 MOVLW D'25'
SUBWF TEMP_BUFFER1,F
BTFSS STATUS,C ;RESULT IS POSITIVE ?
GOTO DIV_RX8A ;NO
INCF TEMP_BUFFER2,F ;YES
GOTO DIV_RX8
DIV_RX8A MOVF TEMP_BUFFER2,W
MOVWF OFFSET
CALL MOT_SEN_TABLE
MOVWF RX8
;--------------------------------------------------------------------
MODE_STATE6 BSF MODE_F ;DEVICE TYPE=F ?
EXIT_CHK_MODE RETURN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -