📄 ql100.asm
字号:
<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title></title></head><body><pre id="content" style="width:90%;white-space:normal;word-wrap:break-word;word-break:keep-all;"> LIST P=12F629,R=DEC
;-----------------------
IND EQU 00H
RTCC EQU 01H
PC EQU 02H
STATUS EQU 03H
FSR EQU 04H
GPIO EQU 05H
PCLATH EQU 0AH
INTCON EQU 0BH
CMCON EQU 19H
OPTION_REG EQU 1H
TRISIO EQU 5H
OSCCAL EQU 10H
EEDATA EQU 1AH
EEADR EQU 1BH
EECON1 EQU 1CH
RD EQU 0
WR EQU 1
WREN EQU 2
WRERR EQU 3
EECON2 EQU 1DH
ANSEL EQU 1FH
;----------------------
GIE EQU 7
PEIE EQU 6
T0IE EQU 5
INTE EQU 4
RBIE EQU 3
T0IF EQU 2
INTF EQU 1
RBIF EQU 0
;----------------------
FLAGS EQU 21H
ADDRESS EQU 22H
;----------------------
CNT0 EQU 23H
CNT1 EQU 24H
CNT2 EQU 25H
CNT3 EQU 26H
CNT_HI EQU 27H
CNT_LW EQU 28H
;----------------------
CSR0 EQU 29H
CSR1 EQU 2AH
CSR2 EQU 2BH
CSR3 EQU 2CH
SOCK EQU 2DH
DATA1 EQU 2EH
DATA2 EQU 2FH
DATA3 EQU 30H
DATA4 EQU 31H
;----------------------
DATA5 EQU 32H
TMP1 EQU 34H
RDATA1 EQU 35H
RDATA2 EQU 36H
RDATA3 EQU 37H
DATA7 EQU 38H
DATA8 EQU 39H
DATA9 EQU 3AH
SPKDATA1 EQU 3CH
SPKDATA2 EQU 3DH
SPKDATA3 EQU 3EH
W_TEMP EQU 3FH
STATUS_TEMP EQU 40H
DATA10 EQU 41H
BIAOZI EQU 42H
CNT4 EQU 43H
;----------------------GPIO
SKY EQU 0H
K0 EQU 1H
SPK EQU 2H
RFIN EQU 3H
SDATA EQU 4H
ACC EQU 5H
;---------------------BIAOZI
LOCK EQU 0
POSS EQU 1
PWWER EQU 2
AUTO EQU 3
;----------------------FLAGS
BITIN EQU 0
STACC EQU 1
SETACC EQU 2
SPKK EQU 3
SPKAL1 EQU 4
SPKAL2 EQU 5
J5MS EQU 6
SPKTWO EQU 7
;---------------------STATUS
C EQU 0
DC EQU 1
Z EQU 2
PD EQU 3
TO EQU 4
RP0 EQU 5
RP1 EQU 6
;--------------------
RMK_A EQU 08H
RMK_B EQU 04H
RMK_C EQU 02H
RMK_D EQU 01H
;--------------------
ORG 0000H
GOTO MAIN
ORG 0004H
TMR0SERV
MOVWF W_TEMP
SWAPF STATUS,W
MOVWF STATUS_TEMP
CLRWDT
BTFSC FLAGS,SPKAL2
GOTO TMR0_2
MOVLW 04
XORWF GPIO,1
DECFSZ SPKDATA2,1
GOTO TMR0_2
MOVLW 10
MOVWF SPKDATA2
BTFSC FLAGS,SPKAL1
GOTO TMR0_1
INCF SPKDATA1,1
DECFSZ SPKDATA3,1
GOTO TMR0_2
MOVLW 45
MOVWF SPKDATA3
BSF FLAGS,SPKAL1
GOTO TMR0_2
TMR0_1
DECF SPKDATA1,1
DECFSZ SPKDATA3,1
GOTO TMR0_2
BSF FLAGS,SPKAL2
TMR0_2
MOVFW SPKDATA1
MOVWF RTCC
TMP0_2
BCF INTCON,T0IF
SWAPF STATUS_TEMP,W
MOVWF STATUS
SWAPF W_TEMP,F
SWAPF W_TEMP,W
RETFIE
;---------------------
EEWRITE
CLRWDT
BSF STATUS,RP0
MOVFW ADDRESS
MOVWF EEADR
MOVFW TMP1
MOVWF EEDATA
BSF EECON1,WREN
MOVLW 55H
MOVWF EECON2
MOVLW 0AAH
MOVWF EECON2
BSF EECON1,WR
NOP
EEWRITE_1
CLRWDT
BTFSC EECON1,WR
GOTO EEWRITE_1
BSF EECON1,RD
NOP
MOVFW TMP1
XORWF EEDATA,0
BTFSS STATUS,Z
GOTO EEWRITE
BCF EECON1,WREN
BCF STATUS,RP0
RETLW 00H
EEREAD
CLRWDT
BSF STATUS,RP0
MOVFW ADDRESS
MOVWF EEADR
BSF EECON1,RD
NOP
MOVF EEDATA,W
MOVWF TMP1
BCF STATUS,RP0
RETLW 00H
;--------------------------
WRITEBIAOZI:
CLRF ADDRESS
MOVFW BIAOZI
MOVWF TMP1
CALL EEWRITE
RETLW 00H
;--------------------
MAIN
CALL SET_OPTION
CLRF GPIO
MOVLW 07H
MOVWF CMCON
BSF STATUS,RP0
MOVLW 3AH
MOVWF TRISIO
CLRF EECON1
CLRF ANSEL
BCF STATUS,RP0
CLRF GPIO
CLRF FLAGS
CLRF BIAOZI
CALL DELAY0.8S
CLRF ADDRESS
CALL EEREAD
MOVFW TMP1
XORLW 0FFH
BNZ MAIN_1
MOVLW 0CH
MOVWF TMP1
MAIN_1
MOVFW TMP1
MOVWF BIAOZI
CALL WRITEBIAOZI
BTFSS BIAOZI,LOCK
BSF GPIO,SKY
MOVLW 03H
MOVWF ADDRESS
CALL EEREAD
MOVLW 0FFH
XORWF TMP1,0
BTFSC STATUS,Z
CLRF TMP1
MOVFW TMP1
MOVWF SOCK
MOVLW 05 ;05,06 romt use
MOVWF ADDRESS
CALL EEREAD
MOVFW TMP1
MOVWF RDATA1
INCF ADDRESS,1
CALL EEREAD
MOVFW TMP1
MOVWF RDATA2
INCF ADDRESS,1
CALL EEREAD
MOVFW TMP1
MOVWF RDATA3
MOVLW 0AH
MOVWF ADDRESS
CALL EEREAD
MOVLW 0FFH
XORWF TMP1,0
BZ MAIN_2_B
MOVF TMP1,0
BZ MAIN_2_B
GOTO M_LOOP
MAIN_2_B
MOVLW RMK_D
MOVWF TMP1
CALL EEWRITE
INCF ADDRESS,1
MOVLW RMK_C
MOVWF TMP1
CALL EEWRITE
INCF ADDRESS,1
MOVLW RMK_B
MOVWF TMP1
CALL EEWRITE
INCF ADDRESS,1
MOVLW RMK_A
MOVWF TMP1
CALL EEWRITE
GOTO M_LOOP
;--------------------
M_SEARCH
CLRWDT
MOVFW RDATA1
XORWF CSR0,0
BNZ M_SEARCHEXT
MOVFW RDATA2
XORWF CSR1,0
BNZ M_SEARCHEXT
MOVFW RDATA3
XORWF CSR2,0
BNZ M_SEARCHEXT
CLRC
RETLW 0
M_SEARCHEXT
SETC
RETLW 1
;-----------------------
DELAY1MS
MOVLW 250
MOVWF DATA1
DELAY1MS_1
CLRWDT
DECFSZ DATA1,1
GOTO DELAY1MS_1
RETLW 0
;---------------------
DELAY ;DELAY0.2S
MOVLW 200
MOVWF DATA2
LP1
CALL DELAY1MS
DECFSZ DATA2,1
GOTO LP1
RETLW 0
;----------------------
DELAY0.8S
MOVLW 4
MOVWF DATA10
DELAY0.8S_1
CALL DELAY
DECFSZ DATA10,1
GOTO DELAY0.8S_1
RETLW 0
;---------------------
SPK0.1MS
CLRWDT
MOVLW 162 ;1.8KHZ--3.5K(0.2s)
MOVWF SPKDATA1
MOVLW 10
MOVWF SPKDATA2
MOVLW 45
MOVWF SPKDATA3
BSF STATUS,RP0
MOVLW 10000000B
MOVWF OPTION_REG
BCF STATUS,RP0
BCF FLAGS,SPKAL1
BCF FLAGS,SPKAL2
BCF INTCON,T0IF
BSF INTCON,T0IE
BSF INTCON,GIE
MOVFW SPKDATA1
MOVWF RTCC
SPKAUDIO_1
CLRWDT
BTFSC FLAGS,SPKAL2
GOTO SPKAUDIO_2
BTFSS FLAGS,SPKK
GOTO SPKAUDIO_1
CALL RECEIVE
BC SPKAUDIO_1
CALL M_SEARCH
BC SPKAUDIO_1
MOVLW RMK_B
XORWF CSR3,0
BNZ SPKAUDIO_1
CALL SET_OPTION
GOTO RMT_SS1
SPKAUDIO_2
CALL SET_OPTION
GOTO RMT_SS2
;----------------------
SET_OPTION
CLRF RTCC
CLRF INTCON
BSF STATUS,RP0
MOVLW 87H
MOVWF OPTION_REG
BCF STATUS,RP0
RETLW 0
;----------------------
TST_RTCC
CLRWDT
BSF STATUS,RP0
MOVLW 3AH
MOVWF TRISIO
BCF STATUS,RP0
BTFSS RTCC,7
RETLW 0
BCF RTCC,7
INCF CNT_LW,F
BTFSC STATUS,Z
INCF CNT_HI,F
TST_RTCCEXT
RETLW 0
;--------------------
SET_RTCC
CLRF CNT_LW
CLRF CNT_HI
CLRF RTCC
CLRWDT
RETLW 0
;--------------------
DRMT0.5S
MOVFW CSR3
MOVWF DATA5
MOVLW 18
MOVWF DATA3
CALL SET_RTCC
DRMT0.5S_1
CALL TST_RTCC
BTFSC CNT_LW,3 ;0.2S
GOTO DRMT0.5S_2
CALL RECEIVE
BC DRMT0.5S_1
CALL M_SEARCH
BC DRMT0.5S_1
MOVF CSR3,0
XORWF DATA5,0
BNZ DRMT0.5S_EXT
CLRF CNT_LW
DECFSZ DATA3,1
GOTO DRMT0.5S_1
DRMT0.5S_2
BCF STATUS,C
RETLW 0
DRMT0.5S_EXT
BSF STATUS,C
RETLW 1
;---------------------
M_LOOP
CALL TST_RTCC
BTFSC CNT_HI,1 ;15S
BCF FLAGS,SPKTWO
CALL RECEIVE
BC M_LOOP1
CALL M_SEARCH
BC M_LOOP1
;-----------------------
YREM
CLRWDT
MOVF CSR3,0
XORLW RMK_A
BZ KEY1
MOVF CSR3,0
XORLW RMK_B
BZ KEY2
MOVF CSR3,0
XORLW RMK_C
BZ KEY3
MOVF CSR3,0
XORLW RMK_D
BZ KEY4
GOTO M_LOOP1
;-------------------------
KEY1
CALL DRMT0.5S
BC M_LOOP
MOVF DATA3,1
BZ KEY1C
MOVLW 10
SUBWF DATA3,0
BNC M_LOOP
KEY1_1
BTFSC GPIO,ACC ;ACC ON WORING
GOTO M_LOOP
CALL SPK0.1MS
BCF GPIO,SKY
BSF BIAOZI,LOCK
BCF FLAGS,SPKTWO
BTFSC BIAOZI,PWWER
BSF BIAOZI,POSS
NOP
CALL WRITEBIAOZI
GOTO M_LOOP
KEY1C
BTFSC BIAOZI,LOCK
GOTO M_LOOP
BTFSS BIAOZI,PWWER
GOTO M_LOOP
BCF STATUS,C
CALL DPOSS
BC M_LOOP
KEY1C_3
CALL SPK0.1MS
BCF BIAOZI,POSS
BSF GPIO,SKY
CALL WRITEBIAOZI
CALL DELAY0.8S
GOTO M_LOOP
;--------------------------
KEY2
BTFSS BIAOZI,LOCK ;ACC ON WORING
GOTO KEY2_1
KEY2_I
CALL SPK0.1MS
CALL DELAY
CALL SPK0.1MS
BCF BIAOZI,LOCK
CALL WRITEBIAOZI
BTFSS BIAOZI,POSS
BSF GPIO,SKY
GOTO M_LOOP
KEY2_1
BTFSS GPIO,ACC
GOTO KEY2_I
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -