📄 s597g1.src
字号:
;===
case_SOUND_TWO:
AND BellStatus,#0FH
OR BellStatus,#SOUND_ONE
case_SOUND_CONTINUE:
set_bell_on:
LD BellFreeTime,#BELL_SOUND_TIME
set_bell_status_on:
CLR BellFreeTime1
AND BellStatus,#0F0H
OR BellStatus,#BELL_ON
skip_check_bell_command:
set_bell_off:
buzzer_on
RET
;=======
case_SOUND_TWOCONTINUE:
LD BellFreeTime,#2
XOR UserFlag,#SpkFlag
TM UserFlag,#SpkFlag
JR Z,is_sec_sound
LD BellCycleTime,#3
JR set_bell_status_on
is_sec_sound:
LD BellCycleTime,#10
JR set_bell_status_on
;=================================
OUT_80: .EQU 80
OUT_110: .EQU 110
OUT_115: .EQU 115
OUT_120: .EQU 120
OUT_125: .EQU 125
VOLT_180V: .EQU 0*3
VOLT_250V: .EQU 1*3
VOLT_255V: .EQU 2*3
VOLT_265V: .EQU 3*3
VOLT_275V: .EQU 4*3
VOLT_NORMAL: .EQU 5*3
_180V: .EQU 000
_250V: .EQU 300
_255V: .EQU 300
_265V: .EQU 300
_275V: .EQU 300
CJUGER0L: .MACRO L,addr
CP R0,#L/256
JP UGT,addr
JR ULT,nxt
CP R1,#L%256
JP UGT,addr
nxt:
.ENDM
CJULER0L: .MACRO L,addr
CP R0,#L/256
JP ULT,addr
JR UGT,nxt
CP R1,#L%256
JP ULT,addr
nxt:
.ENDM
set_out_voltage_status::
LD R0,OutVoltValue
LD R1,OutVoltValue+1
CJUGER0L _275V,ret_out_volt_highist
CJUGER0L _265V,set_volt_VOLT_265V
CJUGER0L _255V,set_volt_255
CJUGER0L _250V,set_volt_250
CJULER0L _180V,set_volt_180V
LD R7,#VOLT_NORMAL
no_protect:
LD VoltProtect10s,#_10s
LD VoltProtect5s,#_5s
LD VoltProtect3s,#_3s
RET
ret_out_volt_highist:
LD R7,#VOLT_275V
OR FlagReg,#VoltHigh
RET
set_volt_180V:
LD R7,#VOLT_180V
AND FlagReg,#~VoltHigh
JR no_protect
set_volt_VOLT_265V:
LD R7,#VOLT_265V
OR FlagReg,#VoltHigh
protect_5s:
LD VoltProtect3s,#_3s
RET
set_volt_255:
LD R7,#VOLT_255V
OR FlagReg,#VoltHigh
protect_10S:
LD VoltProtect5s,#_5s
LD VoltProtect3s,#_3s
RET
set_volt_250:
LD R7,#VOLT_250V
OR FlagReg,#VoltHigh
JR no_protect
;=================================
fan_flag: .RAM_DS 1
fan_on_temp: .EQU 01H
setfan_fortemp::
LD R0,TempValue
LD R1,TempValue+1
TM fan_flag,#fan_on_temp
JR NZ,If_fan_off
RCF
SUB R1,#TEMP_FAN_ON%256
SBC R0,#TEMP_FAN_ON/256
JR NC,test_temp_pro
OR fan_flag,#fan_on_temp
JR test_temp_pro
;----------
If_fan_off:
RCF
SUB R1,#TEMP_FAN_OFF%256
SBC R0,#TEMP_FAN_OFF/256
JR C,test_temp_pro
AND fan_flag,#~fan_on_temp
test_temp_pro:
RET
;=================================
CurrStatus: .RAM_DS 1
deal_protect::
CLRWDT
CALL setfan_fortemp
CP fan_flag,#0
JR NE,skip_open_fan
FAN_off
JR skip_off_fan
skip_open_fan:
FAN_on
skip_off_fan:
LD R0,TempValue
LD R1,TempValue+1
SCF
SBC R1,#TEMP_OVER_LIMIT%256
SBC R0,#TEMP_OVER_LIMIT/256
JP C,halt_function_temp
CALL set_out_voltage_status
CP R7,#VOLT_NORMAL
JP EQ,detect_isvolt_normal
TM FlagReg,#RelayStatus
JR NZ,skip_is_RelayOff
TM UserFlag,#DispUnchange
JP NZ,check_off_relay
LD DispStatus,#DISP_UNNORMAL
TM UserFlag,#haltalarmFLAG2
JR NZ,nogiveHALTSPKTIME2
LD HaltAlarmTime,#HALTSPKTIME
OR UserFlag,#haltalarmFLAG2
nogiveHALTSPKTIME2:
CP HaltAlarmTime,#0
JR EQ,noalarmtwocontinu
ALARM_TWO_CONTINUE
JR continuasdfgh
noalarmtwocontinu:
ALARM_UNDO
continuasdfgh:
TM FlagReg,#VoltHigh
JR Z,set_disp_out_l
check_off_relay:
CLRWDT
TM FlagReg,#VoltHigh
JR Z,is_DispUnchange_and_is_low_volt
CP VoltProtect10s,#0
JR EQ,set_output_relay_off_of_volt
CP VoltProtect5s,#0
JR EQ,set_output_relay_off_of_volt
CP VoltProtect3s,#0
JR EQ,set_output_relay_off_of_volt
is_DispUnchange_and_is_low_volt:
RET
set_output_relay_off_of_volt:
LD DispStatus,#DISP_VOLT_HIGH
LD HaltAlarmTime,#HALTSPKTIME
RelayOff
OR FlagReg,#RelayStatus
AND UserFlag,#~DispUnchange
RET
;-------
set_disp_out_l:
LD DispStatus,#DISP_VOLT_L
RET
;=============================
skip_is_RelayOff:
CP HaltAlarmTime,#0
JR EQ,set_no_sound_volt
ALARM_TWO_CONTINUE
JR skip_chkee_volt
set_no_sound_volt:
ALARM_UNDO
skip_chkee_volt:
TM FlagReg,#VoltHigh
JR Z,Skip_boot_display_L
CLR VoltProtect3s
CLR VoltProtect5s
CLR VoltProtect10s
LD DispStatus,#DISP_VOLT_HIGH
JR set_boot_delay_value
;----
Skip_boot_display_L:
LD DispStatus,#DISP_VOLT_L
set_boot_delay_value:
TM FlagReg,#DELAY_FLAG
JR NZ,boot_set_delay_long
LD RelayOnTime,#_6s
JR skip_boot_long_here
boot_set_delay_long:
LD RelayOnTime,#_120s
skip_boot_long_here:
RET
;=============================
detect_isvolt_normal:
AND UserFlag,#~haltalarmFLAG2
ALARM_UNDO
TM FlagReg,#RelayStatus
JR Z,set_disp_normal
LD DispStatus,#DISP_DELAY
CP RelayOnTime,#0
JR NE,skip_to_output_on
RelayOn
AND FlagReg,#~RelayStatus
LD DispStatus,#DISP_NORMAL
skip_to_output_on:
RET
;-----------------------
set_disp_normal:
CP DispStatus,#DISP_PREC_PRESS
JR EQ,skip_normal
CP DispStatus,#DISP_INVOLT
JR EQ,skip_normal
LD DispStatus,#DISP_NORMAL
skip_normal:
RET
;====================
halt_function_temp::
LD DispStatus,#DISP_TEMP_TOO_HIGH
LD BellCycleTime,#10
LD HaltAlarmTime,#HALTSPKTIME
halt_function:
CLRWDT
CP HaltAlarmTime,#0
JR EQ,set_no_sound
ALARM_ONE_CONTINUE
JR skip_chkee
set_no_sound:
ALARM_UNDO
skip_chkee:
OR FlagReg,#RelayStatus
RelayOff
CALL deal_input
CALL auto_regulate
CALL deal_display
LD R0,TempValue
LD R1,TempValue+1
SCF
SBC R1,#TEMP_RESET_LIMIT%256
SBC R0,#TEMP_RESET_LIMIT/256
JR C,halt_function
LD DispStatus,#DISP_DELAY
TM FlagReg,#DELAY_FLAG
JR NZ,is_set_delay_long
LD RelayOnTime,#_6s
JR skip_long_here
is_set_delay_long:
LD RelayOnTime,#_120s
skip_long_here:
RET
;=================================
DispStatus: .RAM_DS 1
DISP_UNNORMAL: .EQU 0*3
DISP_NORMAL: .EQU 1*3
DISP_INVOLT: .EQU 2*3
DISP_PREC_PRESS: .EQU 3*3
DISP_DELAY: .EQU 4*3
DISP_TEMP_TOO_HIGH: .EQU 5*3
DISP_VOLT_HIGH: .EQU 6*3
DISP_VOLT_L: .EQU 7*3
;-------------------------------------------------------------------
InVoltForDisp: .RAM_DS 2
OutVoltForDisp: .RAM_DS 2
DispCnt: .RAM_DS 1
checkallfordisp:
LD R1,InVoltForDisp+1
LD R0,InVoltForDisp
LD R3,DispCnt
CLR R2
CALL dbl_divs
LD InVoltValue+1,R1
LD InVoltValue,R0
LD R1,OutVoltForDisp+1
LD R0,OutVoltForDisp
LD R3,DispCnt
CLR R2
CALL dbl_divs
LD OutVoltValue+1,R1
LD OutVoltValue,R0
CLR DispCnt
CLR InVoltForDisp+1
CLR InVoltForDisp
CLR OutVoltForDisp+1
CLR OutVoltForDisp
RET
sumallfordisp:
ADD InVoltForDisp+1,InVoltValue+1
ADC InVoltForDisp,InVoltValue
ADD OutVoltForDisp+1,OutVoltValue+1
ADC OutVoltForDisp,OutVoltValue
INC DispCnt
RET
;===================================
deal_display::
CLRWDT
TM FlagReg,#FreshDisp
JR NZ,deal_disp_goon
CALL sumallfordisp
RET
deal_disp_goon:
AND FlagReg,#~FreshDisp
CALL sumallfordisp
CALL checkallfordisp
LD R6,#disp_status_function/256
LD R7,#disp_status_function%256
ADD R7,DispStatus
ADC R6,#0
JP @RR6
disp_status_function:
JP case_DISP_UNNORMAL ;0
JP case_DISP_NORMAL ;1
JP case_DISP_INVOLT ;2
JP case_DISP_PREC_PRESS ;3
JP case_DISP_DELAY ;4
JP case_DISP_TEMP_TOO_HIGH ;5
JP case_DISP_VOLT_HIGH ;6
JP case_DISP_VOLT_L ;7
;------------------------------------------------
case_DISP_UNNORMAL ;0
WORKING_LED ON
INPUT_LED OFF
OUTPUT_LED BLINK
XOR UserFlag,#SelfBlink
TM UserFlag,#SelfBlink
JR Z,set_disp_off_bk
set_disp_normal_data:
LD R7,OutVoltValue+1
LD R6,OutVoltValue
JP number_display
;---------------
set_disp_off_bk:
AND DispBuf+2,#80H
AND DispBuf+0,#80H
AND DispBuf+1,#80H
OR DispBuf+0,#(LED_OFF&(~80h))
OR DispBuf+1,#(LED_OFF&(~80h))
OR DispBuf+2,#(LED_OFF&(~80h))
RET
;=================================
case_DISP_NORMAL:
WORKING_LED ON
INPUT_LED OFF
OUTPUT_LED ON
LD R7,OutVoltValue+1
LD R6,OutVoltValue
TM UserFlag,#DispUnchange
JR Z,send_disp_volt_FAIL
WORKING_LED BLINK
INPUT_LED OFF
OUTPUT_LED BLINK
JR send_disp_volt
send_disp_volt_FAIL:
CP R6,#0
JR NE,send_disp_volt
LD R5,R7
SUB R5,#220
JR NC,is_dfjdDJF
COM R5
INC R5
is_dfjdDJF:
CP R5,#5
JR UGE,send_disp_volt
LD R7,#220
send_disp_volt:
CALL BCD_conversion
CALL set_display_data
RET
;=================================
case_DISP_INVOLT:
TM UserFlag,#DispUnchange
JR NZ,is_verify_model
CP SetDispTime,#SETDISPTIME_LIMIT
JR UGE,chang_to_disp_out_volt
WORKING_LED ON
INPUT_LED ON
OUTPUT_LED OFF
JR set_in_volt_disp
is_verify_model:
WORKING_LED BLINK
INPUT_LED BLINK
OUTPUT_LED OFF
set_in_volt_disp:
LD R7,InVoltValue+1
LD R6,InVoltValue
JR number_display
chang_to_disp_out_volt:
LD DispStatus,#DISP_NORMAL
JP case_DISP_NORMAL
number_display:
CALL BCD_conversion
CALL set_display_data
RET
;=================================
case_DISP_PREC_PRESS:
CP SetDispTime,#SETDISPTIME_LIMIT
JR UGE,chang_to_disp_out_volt
WORKING_LED BLINK
INPUT_LED OFF
OUTPUT_LED OFF
TM FlagReg,#PRECTION_FLAG
JR NZ,_need_disp_msg_prec_high
LD R7,#MSG_PRECISION_L%256
LD R6,#MSG_PRECISION_L/256
JP load_message
;----------------------
_need_disp_msg_prec_high:
LD R7,#MSG_PRECISION_H%256
LD R6,#MSG_PRECISION_H/256
JP load_message
;=================================
case_DISP_DELAY:
WORKING_LED BLINK
INPUT_LED OFF
OUTPUT_LED OFF
LD R7,RelayOnTime
CLR R6
JP number_display
;=================================
case_DISP_TEMP_TOO_HIGH
WORKING_LED BLINK
INPUT_LED BLINK
OUTPUT_LED BLINK
XOR UserFlag,#SelfBlink
TM UserFlag,#SelfBlink
JP Z,set_disp_off_bk
LD R7,#MSG_TEMP_HIGH%256
LD R6,#MSG_TEMP_HIGH/256
JP load_message
;=================================
case_DISP_VOLT_HIGH:
WORKING_LED ON
INPUT_LED OFF
OUTPUT_LED BLINK
XOR UserFlag,#SelfBlink
TM UserFlag,#SelfBlink
JP Z,set_disp_off_bk
LD R7,#MSG_VOLT_HIGH%256
LD R6,#MSG_VOLT_HIGH/256
JP load_message
;=================================
case_DISP_VOLT_L:
WORKING_LED ON
INPUT_LED OFF
OUTPUT_LED BLINK
XOR UserFlag,#SelfBlink
TM UserFlag,#SelfBlink
JP Z,set_disp_off_bk
LD R7,#MSG_VOLT_LOW%256
LD R6,#MSG_VOLT_LOW/256
load_message:
CALL load_string
RET
;=================================
delaydeal_f: .RAM_DS 1
IN_OUT_KEY: .equ 338
DELAY_KEY: .equ 210
DIM: .EQU 45
IN_OUT_KEYB: .equ 148
DELAY_KEYB: .equ 900
read_key::
CLR R7
LD R2,KeyAdcValue
LD R3,KeyAdcValue+1
TM delaydeal_f,#80H
JR Z,go_wqe
SUB R3,#DELAY_KEYB%256
SBC R2,#DELAY_KEYB/256
JR NC,delay_6
LD RelayOnTime,#_120s
OR FlagReg,#DELAY_FLAG
LD precision,#PREC_H
OR FlagReg,#PRECTION_FLAG
JR go_over_ini
delay_6:
LD RelayOnTime,#_6s
AND FlagReg,#~DELAY_FLAG
LD precision,#PREC_L
AND FlagReg,#~PRECTION_FLAG
go_over_ini:
LD KeyStatus,#Key_normal
AND delaydeal_f,#~80H
RET
go_wqe:
SUB R3,#IN_OUT_KEY%256
SBC R2,#IN_OUT_KEY/256
JR NC,is_key_large
COM R3
COM R2
ADD R3,#1
ADC R2,#0
is_key_large:
SUB R3,#DIM
SBC R2,#0
JR NC,cmp_inout_keyb
JR in_out_key_press
cmp_inout_keyb:
LD R2,KeyAdcValue
LD R3,KeyAdcValue+1
SUB R3,#IN_OUT_KEYB%256
SBC R2,#IN_OUT_KEYB/256
JR NC,is_key_large_b
COM R3
COM R2
ADD R3,#1
ADC R2,#0
is_key_large_b:
SUB R3,#DIM
SBC R2,#0
JR NC,cmp_nxt_key
in_out_key_press:
OR R7,#K_IN_OUT
AND delaydeal_f,#~01h
JR delay_key_not_press
;=================================
cmp_nxt_key:
TM FlagReg,#DELAY_FLAG
JR NZ,cmp_delaykeyB
LD R2,KeyAdcValue
LD R3,KeyAdcValue+1
SUB R3,#DELAY_KEY%256
SBC R2,#DELAY_KEY/256
JR NC,is_key_large_a
COM R3
COM R2
ADD R3,#1
ADC R2,#0
is_key_large_a:
SUB R3,#DIM
SBC R2,#0
JR NC,delay_key_not_press
OR delaydeal_f,#02H
JR delay_key_press
cmp_delaykeyB:
LD R2,KeyAdcValue
LD R3,KeyAdcValue+1
SUB R3,#DELAY_KEYB%256
SBC R2,#DELAY_KEYB/256
JR C,delay_key_not_press
AND delaydeal_f,#~02H
delay_key_press:
OR R7,#K_DELAY
OR delaydeal_f,#01h
delay_key_not_press:
LD R5,#key_status_tab%256
LD R4,#key_status_tab/256
ADD R5,KeyStatus
ADC R4,#0
JP @RR4
key_status_tab:
JP CaseKey_uncertain
JP CaseKey_wait_release
JP CaseKey_normal
JP CaseKey_continue
;------------------------
CaseKey_uncertain:
CP key_uncertain_time,#0
JR EQ,return_key_first
LD key_old,R7
CLR R7
RET
return_key_first:
TM delaydeal_f,#01h
JR Z,go_mmmm
AND delaydeal_f,#~01h
LD KeyStatus,#Key_normal
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -