📄 reshuiqi.asm
字号:
.listinclude
INCLUDE HT46R48.INC
INCLUDE MEMORY.ASM
;;********************************
;IDE Version : ver 6.6 sp5
;Program:ht46r48.prj
;Program Version:VER0.0
;Established Date 2006/8/15
;Programmer:lxp
;Mcu body: Ht46r48
;;-------MASK OPTION----------------
;FSYS : RC MODE R=80k=4Mhz
;Vdd : 5v
;Wake_up : Non_wake up
;Pull_high :PA Pull_high,Pb Non pull_high,pd pull high
;20 DIP ;PC no use
;Wdt :enable
;Clr wdt:one clear Insruction
;Wdt Source:Wdtosc
;Pa3:enable Pfd
;Pd0:Disbale pwm
;Lvr:disable
;ram:29byte,rom:890
;;**********************************
CODE_MAIN .SECTION AT 00H 'CODE'
NOP
JMP MLP_MAIN
ORG 04H
RETI
ORG 08H
JMP ISR_TIMER
ORG 0CH
RETI
MLP_MAIN:
SZ TO
JMP L_WARM_RESTART
MOV A,R_NORMAL_FLAG1
XOR A,55H
SNZ Z
JMP L_COOL_RESTART
MOV A,R_NORMAL_FLAG2
XOR A,0AAH
SNZ Z
JMP L_COOL_RESTART
CALL INITIAL_IOS
JMP L_POLLING_EVENT
L_COOL_RESTART:
CALL INI_RAM
CALL INITIAL_IOS
CALL SBR_SOUND3S
SNZ PB.3
JMP L_POLLING_EVENT
SET F_FAILURE
SET F_WATER_STREAM
MOV A,0A0H
MOV R_TEMP[2],A
JMP L_POLLING_EVENT
L_WARM_RESTART:
MOV A,R_NORMAL_FLAG1
XOR A,55H
SNZ Z
JMP L_COOL_RESTART
MOV A,R_NORMAL_FLAG2
XOR A,0AAH
SNZ Z
JMP L_COOL_RESTART
CALL INITIAL_IOS
;;-----------------------
L_POLLING_EVENT:
CLR WDT
CALL SBR_SOUNDOPEN
CALL SBR_SHOWPROCEDURE
CALL SBR_WATERSWICH_CHECK
SZ ACC
JMP L_POLLING_EVENT
MOV A,R_PROGRAMCNT
AND A,0FH
ADDM A,PCL
JMP L_PROCEDURE0
JMP L_PROCEDURE1
JMP L_PROCEDURE2
JMP L_PROCEDURE3
JMP L_PROCEDURE4
JMP L_PROCEDURE5
JMP L_PROCEDURE6
JMP L_PROCEDURE7
JMP L_PROCEDURE8
JMP L_PROCEDURE9
JMP L_PROCEDURE10
JMP L_PROCEDURE11
CLR R_PROGRAMCNT
JMP L_POLLING_EVENT
;;-----------------
;;TETEMPERATURE CALCULA&LED SHOW PROCE
SBR_SHOWPROCEDURE:
SNZ F_5MS
RET
CLR F_5MS
CALL SBR_SHOW_LED
CALL SBR_CHECK_FLAME
SZ F_FAILURE
RET
SZ F2_500MS
CALL SBR_MAN_AVG
RET
;;---------CHECK WATER SWICH------------------
SBR_WATERSWICH_CHECK:
SZ PB.3 ;;
JMP L_OPEN_WATER
L_CLOSE_WATER:
CLR F_FAILURE
CLR F_WATER_STREAM
L_WAIT_CLOSE_WATER:
CLR R_TIMER_COUNTER5
CLR R_TIMER_COUNTER6
CLR R_TIMER_COUNTER7
MOV A,07H
ORM A,PA
SZ F_GASGATEOPEN ;;CHECK GAS GATE FLAG
JMP L_DELAY20S_OPEN
CLR F_2TIMERS_FIRE
CLR P_CSB_PD0
CLR R_PROGRAMCNT ;;CLOSE WATCH
RET A,1
L_DELAY20S_OPEN:
SET F_2TIMERS_FIRE
MOV A,0BH
MOV R_PROGRAMCNT,A
RET A,0
L_TEMPERATURE_EEOR:
SET F_FAILURE
JMP L_WAIT_CLOSE_WATER
L_OPEN_WATER:
SET F_WATER_STREAM
SZ F_TEMPERATURE_EEOR
JMP L_TEMPERATURE_EEOR
SNZ F_FAILURE
JMP L_NORMAL_FIRE
SNZ F_GASGATEOPEN ;;
RET A,1
MOV A,0BH
MOV R_PROGRAMCNT,A
RET A,0 ;;
L_NORMAL_FIRE:
SNZ F_2TIMERS_FIRE ;;
RET A,0
CLR F_2TIMERS_FIRE
MOV A,01H
MOV R_PROGRAMCNT,A
CLR R_TIMER_COUNTER3
CLR R_TIMER_COUNTER4
RET A,0
;;---------------------------------------
L_NORMAL_WORK:
CLR R_TIMER_COUNTER3
CLR R_TIMER_COUNTER4
INC R_PROGRAMCNT
JMP L_POLLING_EVENT
L_PROCEDURE0:
SNZ PB.1 ;;CHECK WIND SWICH
JMP L_NORMAL_WORK ;;OPEN WIND SWICH
SET F_FAILURE ;;CLOSE WIND SWICH
MOV A,0A7H
MOV R_TEMP[2],A
CLR R_PROGRAMCNT
JMP L_POLLING_EVENT
;------------------------------------------
L_PROCEDURE1:
SET P_CSB_PD0 ;OPEN 2S
SNZ F_5000US ;
JMP L_POLLING_EVENT
CLR F_5000US
INC R_TIMER_COUNTER3
MOV A,R_TIMER_COUNTER3
XOR A,CONST1
SNZ Z
JMP L_POLLING_EVENT
CLR R_TIMER_COUNTER3
INC R_TIMER_COUNTER4
MOV A,R_TIMER_COUNTER4
XOR A,CONST2
SNZ Z
JMP L_POLLING_EVENT ;;DELAY 100*5MS*4=2S
JMP L_NORMAL_WORK
;;----------------------------------------------
L_PROCEDURE2: ;;6S CHECK WIND SWICH
SZ PB.1
JMP L_NORMAL_WORK ;; WIND SWICH CLOSE
SNZ F_5000US ;
JMP L_POLLING_EVENT
CLR F_5000US
INC R_TIMER_COUNTER3
MOV A,R_TIMER_COUNTER3
XOR A,CONST_WINDSWICH1 ;;64H*0.5MS=0.5S
SNZ Z
JMP L_POLLING_EVENT
CLR R_TIMER_COUNTER3
INC R_TIMER_COUNTER4
MOV A,R_TIMER_COUNTER4
XOR A,CONST_WINDSWICH2
SNZ Z ;;100*5MS*12=6S
JMP L_POLLING_EVENT
SET F_FAILURE
MOV A,0A6H
MOV R_TEMP[2],A
CLR P_CSB_PD0
CLR R_PROGRAMCNT
JMP L_POLLING_EVENT
;;----------------------------------------
L_PROCEDURE3: ;CHECK flame
SNZ F_FLAME
JMP L_NORMAL_WORK
SET F_FAILURE ;HAVE flame,SHOW E1
MOV A,0A1H
MOV R_TEMP[2],A
CLR R_PROGRAMCNT
JMP L_POLLING_EVENT
;;--------------------------------------------
L_PROCEDURE4: ;;START FIRE
CLR PA.2
CLR P_CSB_PD0
SNZ F_FLAME
JMP L_FLAME_OFF
SET PA.2 ;;HAVE flame,STOP FIRE
SET F_FAILURE
SET P_CSB_PD0 ;;
MOV A,0A2H
MOV R_TEMP[2],A
CLR R_PROGRAMCNT
JMP L_POLLING_EVENT
L_FLAME_OFF:
SNZ F_5000US ;
JMP L_POLLING_EVENT
CLR F_5000US
INC R_TIMER_COUNTER3
MOV A,R_TIMER_COUNTER3 ;;200*5MS=1S NO flame
XOR A,CONST3
SNZ Z
JMP L_POLLING_EVENT
CLR PA.0 ;;OPEN FA
CLR PA.1 ;;
JMP L_NORMAL_WORK
;;----------------------------------------------
;***********************************************
L_PROCEDURE5:
CLR PA.2
CLR R_TIMER_COUNTER8
CLR R_TIMER_COUNTER9
SET F_GASGATEOPEN
SZ F_FLAME
JMP L_NORMAL_WORK ;; FLAME ON
SNZ F_5000US ;
JMP L_POLLING_EVENT
CLR F_5000US
INC R_TIMER_COUNTER3
MOV A,R_TIMER_COUNTER3
XOR A,CONST1
SNZ Z
JMP L_POLLING_EVENT
SET PA.0 ;;AFTER 0.5s COLSE FA
CLR R_TIMER_COUNTER3
INC R_TIMER_COUNTER4
MOV A,R_TIMER_COUNTER4
XOR A,CONST4
SNZ Z
JMP L_POLLING_EVENT
SET F_FAILURE
SET PA.2
MOV A,0A3H
MOV R_TEMP[2],A
JMP L_COLSEGASGATE_DELAY20S
;;---------------------------
L_CONTINUE_FIRE:
MOV A,05H
MOV R_PROGRAMCNT ,A
JMP L_POLLING_EVENT
L_PROCEDURE6: ;;
CLR PA.2
SNZ F_FLAME
JMP L_CONTINUE_FIRE
SET P_CSB_PD0
SNZ F_5000US ;
JMP L_POLLING_EVENT
CLR F_5000US
INC R_TIMER_COUNTER3
MOV A,R_TIMER_COUNTER3 ;;100*5MS=0.5S
XOR A,CONST1
SNZ Z
JMP L_POLLING_EVENT
SET PA.0 ;AFTER 0.5s COLSE FA
CLR R_TIMER_COUNTER3
INC R_TIMER_COUNTER4
MOV A,R_TIMER_COUNTER4
XOR A,2
SNZ Z
JMP L_POLLING_EVENT
JMP L_NORMAL_WORK
;**********************************************
;**********************************************
L_PROCEDURE7: ;;GAS GATE OPEN
SET PA.2 ;;AFTER 1s STOP FIRE
CLR PA.1
SET P_CSB_PD0
SNZ F_WATER_STREAM ;;CHECK IF COLSE WATER
JMP L_COLSEGASGATE_DELAY20S
SZ F_FLAME
JMP L_NORMAL_WORK ;; HAVE FLAME
SNZ F_5000US ;; NO FLAME
JMP L_POLLING_EVENT
CLR F_5000US
INC R_TIMER_COUNTER3
MOV A,R_TIMER_COUNTER3 ;;200*5MS=1S
XOR A,CONST5
SNZ Z
JMP L_POLLING_EVENT
SET F_FAILURE
MOV A,0A3H
MOV R_TEMP[2],A
JMP L_COLSEGASGATE_DELAY20S
;---------------------------------------
L_PROCEDURE8: ;;2S CHECK WIND SWICH
SZ PB.1 ;;CHECK WIND SWICH
JMP L_NORMAL_WORK ;;WIND SWICH CLOSE
SNZ F_5000US ;;WIND SWICH OPEN
JMP L_POLLING_EVENT
CLR F_5000US
INC R_TIMER_COUNTER3
MOV A,R_TIMER_COUNTER3 ;
XOR A,100
SNZ Z
JMP L_POLLING_EVENT
CLR R_TIMER_COUNTER3
INC R_TIMER_COUNTER4
MOV A,R_TIMER_COUNTER4
XOR A,4
SNZ Z
JMP L_POLLING_EVENT
SET F_FAILURE
MOV A,0A6H
MOV R_TEMP[2],A
JMP L_COLSEGASGATE_DELAY20S
;;---------------------------------------
L_PROCEDURE9:
SNZ F_OVER85C
JMP L_NORMAL_WORK
SNZ F_5000US
JMP L_POLLING_EVENT
CLR F_5000US
INC R_TIMER_COUNTER3
MOV A,R_TIMER_COUNTER3 ;
XOR A,CONST6
SNZ Z
JMP L_POLLING_EVENT
CLR R_TIMER_COUNTER3
INC R_TIMER_COUNTER4
MOV A,R_TIMER_COUNTER4
XOR A,CONST8
SNZ Z
JMP L_POLLING_EVENT
SET F_FAILURE
MOV A,0A5H
MOV R_TEMP[2],A
JMP L_COLSEGASGATE_DELAY20S
;-------------------------
L_PROCEDURE10:
SNZ PB.4 ;;CHECK TIMER SWICH
JMP L_ALL_WORKNORMAL ;;20MIN TIMER SWICH OFF
SNZ F_5000US ;
JMP L_ALL_WORKNORMAL
CLR F_5000US
INC R_TIMER_COUNTER5
MOV A,R_TIMER_COUNTER5 ;;200*5MS=1S
XOR A,200
SNZ Z
JMP L_ALL_WORKNORMAL
CLR R_TIMER_COUNTER5
INC R_TIMER_COUNTER6
MOV A,R_TIMER_COUNTER6
XOR A,60
SNZ Z
JMP L_ALL_WORKNORMAL
CLR R_TIMER_COUNTER5
CLR R_TIMER_COUNTER6
INC R_TIMER_COUNTER7
MOV A,R_TIMER_COUNTER7
XOR A,CONST9
SNZ Z
JMP L_ALL_WORKNORMAL
SET F_FAILURE
MOV A,0ABH
MOV R_TEMP[2],A
JMP L_COLSEGASGATE_DELAY20S
L_ALL_WORKNORMAL:
MOV A,07H
MOV R_PROGRAMCNT ,A
JMP L_POLLING_EVENT
;-------------------------------------------
L_COLSEGASGATE_DELAY20S:
CLR R_TIMER_COUNTER3
CLR R_TIMER_COUNTER4
L_PROCEDURE11:
SET P_CSB_PD0
MOV A,0BH
MOV R_PROGRAMCNT,A
SET PA.0
SET PA.1
SNZ F_5000US ;
JMP L_POLLING_EVENT
CLR F_5000US
INC R_TIMER_COUNTER8
MOV A,R_TIMER_COUNTER8 ;;200*5MS=1S
XOR A,200
SNZ Z
JMP L_POLLING_EVENT
CLR R_TIMER_COUNTER8
INC R_TIMER_COUNTER9
MOV A,R_TIMER_COUNTER9
XOR A,20
SNZ Z
JMP L_POLLING_EVENT
CLR F_GASGATEOPEN
CLR R_PROGRAMCNT
CLR P_CSB_PD0
CLR R_TIMER_COUNTER8
CLR R_TIMER_COUNTER9
JMP L_POLLING_EVENT
;;====================================
INCLUDE SUBROUTINE.ASM
INCLUDE LEDSHOW.ASM
INCLUDE CALCULA_TETEMPERATURE.ASM
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -