📄 ql100.asm
字号:
MOVLW 5
MOVWF DATA4
KEY2_2
CALL DRMT0.5S
BC M_LOOP
MOVF DATA3,1
BNZ M_LOOP
DECFSZ DATA4,1
GOTO KEY2_2
MOVLW 08H
XORWF BIAOZI,1
CALL WRITEBIAOZI
BTFSC BIAOZI,AUTO
CALL SPK0.1MS
CALL SPK0.1MS
CALL DELAY0.8S
GOTO M_LOOP
;------------------------
KEY3
BTFSS GPIO,ACC
GOTO M_LOOP
BTFSC BIAOZI,POSS
GOTO M_LOOP
MOVLW 2
MOVWF DATA2
KEY3_4A
MOVLW 3
MOVWF DATA4
KEY3_4B
CALL DRMT0.5S
BC KEY3_8
MOVF DATA3,1
BNZ KEY3_8
DECFSZ DATA4,1
GOTO KEY3_4B
CALL SPK0.1MS
DECFSZ DATA2,1
GOTO KEY3_4A
CALL SPK0.1MS
GOTO KEY5 ;6S
KEY3_8
DECFSZ DATA2,1
GOTO M_LOOP
GOTO KEY6 ;3S
;-------------------
KEY4
BTFSC BIAOZI,LOCK
GOTO SPKJ5MS
BTFSS GPIO,ACC
GOTO M_LOOP
MOVLW 5
MOVWF DATA2
KEY4_A
CALL DRMT0.5S
BC M_LOOP
MOVF DATA3,1
BNZ M_LOOP
DECFSZ DATA2,1
GOTO KEY4_A
INCF SOCK,1
MOVLW 03
XORWF SOCK,0
SKPNZ
CLRF SOCK
MOVFW SOCK
MOVWF DATA4
INCF DATA4,1
KEY4_4
CALL SPK0.1MS
CALL DELAY
DECFSZ DATA4,1
GOTO KEY4_4
MOVLW 03H
MOVWF ADDRESS
MOVFW SOCK
MOVWF TMP1
CALL EEWRITE
MOVLW 02
MOVWF DATA2
GOTO KEY4_A
;----------------------
M_LOOP1
BTFSS BIAOZI,LOCK
GOTO M_LOOP3
BTFSC CNT_LW,5
BCF FLAGS,SETACC
BTFSC FLAGS,SETACC
GOTO M_LOOP3
BTFSS GPIO,SDATA
GOTO M_LOOP1A
MOVFW SOCK
MOVWF CNT0
CLRC
RLF CNT0,1
RLF CNT0,1
INCF CNT0,1
M_LOOP1B
MOVLW 1
MOVWF DATA2
M_LOOP1B_A
CALL DELAY1MS
BTFSS GPIO,SDATA
GOTO M_LOOP1A
DECFSZ DATA2,1
GOTO M_LOOP1B_A
DECFSZ CNT0,1
GOTO M_LOOP1B
BSF FLAGS,SETACC
BTFSS FLAGS,SPKTWO
GOTO M_LOOP1B_1
GOTO SPK30MS
M_LOOP1B_1
BSF FLAGS,SPKTWO
GOTO SPKJ5MS
M_LOOP1A
BTFSS GPIO,ACC
GOTO M_LOOP3
BTFSC FLAGS,SETACC
GOTO M_LOOP3
BSF FLAGS,SETACC
BTFSS GPIO,K0
GOTO SPK30MS
GOTO LEARN
;--------------------
M_LOOP3
BTFSS GPIO,ACC
GOTO M_LOOP4
BCF FLAGS,STACC
BTFSS GPIO,K0
GOTO M_LOOP
GOTO LEARN
;--------------------
M_LOOP4
BTFSS BIAOZI,PWWER
GOTO M_LOOP
BTFSC BIAOZI,POSS
GOTO M_LOOP
BTFSS BIAOZI,AUTO
GOTO M_LOOP
BTFSC FLAGS,STACC
GOTO M_LOOP5
BSF FLAGS,STACC
CALL SET_RTCC
MOVLW 03H
MOVWF CNT_HI
GOTO M_LOOP
M_LOOP5
BTFSS CNT_HI,3
GOTO M_LOOP
BCF GPIO,SKY
BSF BIAOZI,POSS
CALL WRITEBIAOZI
BCF FLAGS,STACC
CALL SPK0.1MS
GOTO M_LOOP
;--------------------
LEARN
MOVLW 250
MOVWF CNT0
LEARNA
CLRWDT
BTFSS GPIO,K0
GOTO M_LOOP
DECFSZ CNT0,1
GOTO LEARNA
CALL SPK0.1MS
CALL SET_RTCC
LEARN1
CALL TST_RTCC
BTFSC CNT_HI,3
GOTO LEARNEND
CALL RECEIVE
BC LEARN1
MOVLW 05H
MOVWF ADDRESS
MOVFW CSR0
MOVWF TMP1
CALL EEWRITE
INCF ADDRESS,1
MOVFW CSR1
MOVWF TMP1
CALL EEWRITE
INCF ADDRESS,1
MOVFW CSR2
MOVWF TMP1
CALL EEWRITE
CALL SPK0.1MS
LEARNEND
CLRWDT
BTFSC GPIO,K0
GOTO LEARNEND
GOTO MAIN
;--------------------
SPK30MS
MOVLW 6
MOVWF DATA9
SPK30MS_B
CALL SPK5MS
BC SPKJ5MS_EXT
DECFSZ DATA9,1
GOTO SPK30MS_B
GOTO SPKJ5MS_EXT
;-----------------------
SPKJ5MS
BSF FLAGS,J5MS
CALL SPK5MS
SPKJ5MS_EXT
BCF FLAGS,J5MS
BCF FLAGS,SPKK
CALL SET_RTCC
GOTO M_LOOP
;-----------------------
SPK5MS
SPKJ5MS_1
BSF FLAGS,SPKK
MOVLW 9
MOVWF DATA4
SPKJ5MS_A
CALL SPK0.1MS
BNC SPK5MS_EXT
;*****************************
SPK_RECEIVE
CALL SET_RTCC
SPK_RECEIVE1
CALL TST_RTCC
BTFSS FLAGS,J5MS
BTFSS CNT_LW,2
BTFSC CNT_LW,4
GOTO SPK_RECEEXT
CALL RECEIVE
BC SPK_RECEIVE1
CALL M_SEARCH
BC SPK_RECEIVE1
MOVLW RMK_B
XORWF CSR3,0
BNZ SPK_RECEIVE1
GOTO SPK5MS_EXT
SPK_RECEEXT
DECFSZ DATA4,1
GOTO SPKJ5MS_A
GOTO RMT_SS1
SPK5MS_EXT
CALL DELAY0.8S
GOTO RMT_SS2
;------------------------
SPK2_0.1MS
CALL SPK0.1MS
CALL DELAY0.8S
RETLW 0
;------------------------
RMT_SS1
BCF STATUS,C
RETLW 0
RMT_0
RMT_SS2
BSF STATUS,C
RETLW 1
;---------------------
RECEIVE:
BTFSC GPIO,RFIN
GOTO RMT_0
MOVLW 10
MOVWF CNT0
CLRWDT
RCV1
BTFSC GPIO,RFIN
GOTO RMT_0
DECFSZ CNT0,1
GOTO RCV1
MOVLW 4
MOVWF CNT1
CLRF CNT2
CLRF CNT0
RCV2 ;23US
CLRWDT
GOTO $+1
GOTO $+1
GOTO $+1
GOTO $+1
GOTO $+1
GOTO $+1
BTFSC GPIO,RFIN
INCF CNT2,1
BTFSS GPIO,RFIN
CLRF CNT2
BTFSC CNT2,2
GOTO RCV3
DECFSZ CNT0,1
GOTO RCV2
DECFSZ CNT1,1
GOTO RCV2
GOTO RMT_0
RCV3
BTFSC CNT1,2 ;>RCV2*256
GOTO RMT_0
MOVLW 24
MOVWF CNT2
RCV4
CLRF CNT4
CLRF CNT0
CLRF CNT1
RCV4_HI ;11US
CLRWDT
BTFSS GPIO,RFIN
INCF CNT4,1
BTFSC GPIO,RFIN
CLRF CNT4
BTFSC CNT4,3 ;11*8US
GOTO RCV5
INCFSZ CNT0,1
GOTO RCV4_HI
GOTO RMT_0
RCV5
CLRF CNT4
RCV5_LO ;11US
CLRWDT
BTFSC GPIO,RFIN
INCF CNT4,1
BTFSS GPIO,RFIN
CLRF CNT4
BTFSC CNT4,3 ;11*8US
GOTO COMPARE
INCFSZ CNT1,1
GOTO RCV5_LO
GOTO RMT_0
COMPARE
MOVLW 80
MOVWF CNT4
MOVFW CNT1
ADDWF CNT0,W
SKPNC
GOTO RMT_0
SUBWF CNT4,W
SKPNC
GOTO RMT_0
BCF FLAGS,BITIN
MOVFW CNT1
SUBWF CNT0,W
SKPNC
BSF FLAGS,BITIN
RLF CSR0,1
RLF CSR1,1
RLF CSR2,1
BCF CSR0,0
BTFSC FLAGS,BITIN
BSF CSR0,0
DECFSZ CNT2,1
GOTO RCV4
MOVF CSR0,0
MOVWF CSR3
MOVLW 0FH
ANDWF CSR3,1
MOVLW 0F0H
ANDWF CSR0,1
GOTO RMT_SS1
;---------------------
KEY5
SETC
CALL DPOSS
BC M_LOOP
KEY5_B
MOVLW 04H
XORWF BIAOZI,1
CALL WRITEBIAOZI
BTFSC BIAOZI,PWWER
CALL SPK0.1MS
CALL DELAY0.8S
GOTO M_LOOP
;------------------------
COUNT1S
MOVLW 16
MOVWF DATA7
CALL SET_RTCC
COUNT1S_1
CALL TST_RTCC
BTFSC CNT_LW,7 ; 5S
GOTO RMT_SS2
CALL RECEIVE
BC COUNT1S_1
CALL M_SEARCH
BC COUNT1S_1
MOVF CSR3,0
XORLW RMK_A
BNZ COUNT1S_1
DECFSZ DATA7,1
GOTO COUNT1S_1
GOTO RMT_SS1
;------------------------
DPOSS
BNC DPOSS_1A
CALL COUNT1S
BC DPOSS_8
DPOSS_1A
CALL SPK0.1MS
CALL SET_RTCC
MOVLW 0AH
MOVWF ADDRESS
MOVLW RMK_A
MOVWF DATA2
MOVLW 04H
MOVWF DATA5
DPOSS_2
CALL TST_RTCC
BTFSC CNT_HI,0 ;5S
GOTO DPOSS_8
CALL RECEIVE
BC DPOSS_2
CALL M_SEARCH
BC DPOSS_2
DPOSS_3
MOVFW DATA2
XORWF CSR3,0
BZ DPOSS_2
CALL EEREAD
MOVFW CSR3
MOVWF DATA2
XORWF TMP1,0
BNZ DPOSS_8
INCF ADDRESS,1
DECFSZ DATA5,1
GOTO DPOSS_2
CALL SPK0.1MS
GOTO RMT_SS1
DPOSS_8
CALL SPK0.1MS
CALL SPK0.1MS
CALL SPK2_0.1MS
GOTO RMT_SS2
;------------------------
KEY6
KEY6_B
CLRF DATA8
KEY6_BB
CALL COUNT1S
BC KEY6_D
CALL SPK0.1MS
KEY6_A3
CALL SET_RTCC
MOVLW 04H
MOVWF DATA5
MOVLW RMK_A
MOVWF DATA7
MOVLW DATA1
MOVWF FSR
KEY6_B2
CALL TST_RTCC
BTFSC CNT_HI,0 ;5S
GOTO KEY6_D
CALL RECEIVE
BC KEY6_B2
CALL M_SEARCH
BC KEY6_B2
KEY6_B3
MOVFW DATA7
XORWF CSR3,0
BZ KEY6_B2
MOVF DATA8,1
BZ KEY6_B4
MOVFW CSR3
XORWF IND,0
BNZ KEY6_D
KEY6_B4
MOVFW CSR3
MOVWF IND
MOVWF DATA7
INCF FSR,1
DECFSZ DATA5,1
GOTO KEY6_B2
KEY6_B8
CALL SPK0.1MS
MOVF DATA8,1
BNZ KEY6_B9
INCF DATA8,1
GOTO KEY6_BB
KEY6_B9
MOVLW DATA1
MOVWF FSR
MOVLW 4
MOVWF CNT0
MOVLW 0AH
MOVWF ADDRESS
KEY6_BA
MOVFW IND
MOVWF TMP1
CALL EEWRITE
INCF ADDRESS,1
INCF FSR,1
DECFSZ CNT0,1
GOTO KEY6_BA
CALL SPK0.1MS
GOTO M_LOOP
KEY6_D
CALL SPK0.1MS
CALL SPK0.1MS
CALL SPK2_0.1MS
GOTO M_LOOP
;------------------------
END
</pre></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -