📄 subroutine.asm
字号:
;;------------------------------------------
;RAM 4BYTE,2BIT
; STACK 1
; WDT ENABLE
; TIMER 1
; INTERRUPT 0
; PORT 0
; MAXRUNTIME:27CYCLE (4MHZ)
;-------------------------------------------
ISR_TIMER:
MOV R_ACC_BAK,A
MOV A,STATUS
MOV R_STATUS_BAK,A
INC R_TIMER_COUNTER1
MOV A,R_TIMER_COUNTER1
XOR A,14H ;;20*250us=5ms
SNZ Z
JMP L_EXIT_ISR_TIMER ;; IF A<14H(5ms),EXIT ISR_TIMER
SET F_5MS
;;------------------------------
SET F_5000US
CLR R_TIMER_COUNTER1
INC R_TIMER_COUNTER2
MOV A,R_TIMER_COUNTER2
XOR A,064H ;;100*5ms=0.5S
SNZ Z
JMP L_EXIT_ISR_TIMER
SET F2_500MS
CLR R_TIMER_COUNTER2
SNZ F_500MS
JMP L_SET_500MSFLAG
CLR F_500MS
JMP L_EXIT_ISR_TIMER
L_SET_500MSFLAG:
SET F_500MS
L_EXIT_ISR_TIMER:
MOV A,R_STATUS_BAK
MOV R_STATUS_BAK,A
MOV A,R_ACC_BAK
RETI
;;---------INITIAL MEMORYS---------------------
INI_RAM:
MOV A,40H
MOV MP,A
L_INITIAL_RAM:
CLR R0
INC MP0
MOV A,MP0
XOR A,80H
SNZ Z
JMP L_INITIAL_RAM
MOV A,55H
MOV R_NORMAL_FLAG1,A
MOV A,0AAH
MOV R_NORMAL_FLAG2,A
CLR R_PROGRAMCNT
MOV A,25H
MOV R_TEMP[2],A
RET
;---------INITIAL IOS----------------------
INITIAL_IOS:
MOV A,00011111B
MOV PBC,A
SET PB
CLR PAC
MOV A,0F7H
MOV PA,A
CLR PCC
CLR PC
CLR PDC
CLR PD
MOV A,05H
MOV INTC,A
MOV A,06H
MOV TMR,A ;;EVENT 256-6=250us ENTER ISR
MOV A,92H ;;TIMER MODE
MOV TMRC,A ;;FINT=(4MHZ)Fsys/4=1MHZ
RET
;;---------DELAY25MS------------------
SBR_DELAY25MS:
MOV A,50
MOV R_TIMER_COUNTER3,A
L_DEL_LOOP:
SNZ F_5000US
JMP L_DEL_LOOP
CLR F_5000US
SDZ R_TIMER_COUNTER3
JMP L_DEL_LOOP
RET
SBR_SOUND3S:
SET PA.3
CALL SBR_DELAY25MS
CLR PA.3
RET
SBR_SOUNDOPEN:
MOV A,00011111B
MOV PBC,A
CLR PAC
SZ F_FAILURE
JMP L_CLOSE_BZ
CLR PA.3
RET
L_CLOSE_BZ:
MOV A,07H
ORM A,PA
SZ F_500MS
JMP CLOSE_BZ
OPEN_BZ:
SET PA.3
RET
CLOSE_BZ:
CLR PA.3
RET
;;-----CHECK flame flag---------------------
SBR_CHECK_FLAME:
SZ F_5MS
RET
MOV A,8
MOV R_TEMP[4],A
CLR R_TEMP[5]
CLR R_TEMP[6]
CLR R_TEMP[7]
L_CHECK_FLAME:
MOV A,01H
MOV ACSR,A
MOV A,1AH ;;only ch3 a/d
MOV ADCR,A
CALL SBR_MAN
MOV A,R_TEMP[9]
ADDM A,R_TEMP[5]
MOV A,R_TEMP[8]
ADCM A,R_TEMP[6]
MOV A,0
ADCM A,R_TEMP[7]
SDZ R_TEMP[4]
JMP L_CHECK_FLAME
;--------------------------
RRC R_TEMP[7]
RRC R_TEMP[6]
RRC R_TEMP[5]
RRC R_TEMP[7]
RRC R_TEMP[6]
RRC R_TEMP[5]
RRC R_TEMP[7]
RRC R_TEMP[6]
RRC R_TEMP[5]
;-----------------------
CLR F_FLAME
MOV A,R_TEMP[6]
SUB A,C_FLAMEVOLTAGE
SNZ C
SET F_FLAME
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -