📄 fireplace.src.bak
字号:
key_scan_loop:
call serial_out ;serial out 1111 1110B
ld r7,p0
tm r7,#01H ;test P0.0=0 ?
jr z, key_validate_end ;if P0.0=0 to key_operation
inc r6 ;key_value add 1
rl serial_data ;1<-serial_data scan again
cp r6,#09 ;key value<8 jump loop
jr ult,key_scan_loop
key_validate_end:
ld key_value,r6 ;save key_value
ret
;***************************************************************
key_value_judge:
; tm key_release,#01H
; jp nz,key_judge_end ;key_release=1,exit
call key_validate ;key_release=0,key validate
ld key_hold_down,#01H
ld led_15s_time1,#0
ld led_15s_time2,#0
tm led_display_flag,#01H
jr z,first_key_press
call key_deal
key_judge_end:
ret
;*************************************************************
first_key_press:
ld led_display_flag,#01H
ld beep_flag,#01h
ld key_release,#01H
ld key_hold_flag,#00h
ret
;***************************************************************
;***************************************************************
key_deal:
cp key_value,#08H
jp eq,key_1_sub ;temp+
cp key_value,#07H
jp eq,key_2_sub ;temp-
cp key_value,#06H
jp eq,key_3_sub ;temp on-off
cp key_value,#05H
jp eq,key_4_sub ;lamp on-off
cp key_value,#01H
jp eq,key_5_sub ;fire+
cp key_value,#02H
jp eq,key_6_sub ;fire-
cp key_value,#03H
jp eq,key_7_sub ;fire on-off
cp key_value,#04H
jp eq,key_8_sub ;sound
ret
;**************************************************************
;***************************************************************
key_1_sub:
cp temp_value,#0ah
jr z,key_1_sub_end
tm key_hold_flag,#01h
jr z,key_1_sub_end
ld key_hold_flag,#00h
tm temp_status,#01H
jr z,key_1_sub_end ;temp off ,exit
inc temp_value ;temp+
cp temp_value,#01H
jr ult,temp_min
cp temp_value,#0AH
jr ugt,temp_max
jr key_1_sub1
temp_min:
ld temp_value,#01H
jr key_1_sub1
temp_max:
ld temp_value,#0AH
key_1_sub1:
ld I2C_data,temp_value
ld I2C_dress,#temp_value_dress
call WR_24C02
ld beep_flag,#01h
key_1_sub_end:
ret
;***************************************************************
;***************************************************************
key_2_sub:
cp temp_value,#01H
jr z,key_2_sub_end
tm key_hold_flag,#01h
jr z,key_2_sub_end
ld key_hold_flag,#00h
tm temp_status,#01H
jr z,key_2_sub_end ;temp off ,exit
dec temp_value ;temp-
cp temp_value,#01H
jr ult,temp_min_1
cp temp_value,#0AH
jr ugt,temp_max_2
jr key_2_sub1
temp_min_1:
ld temp_value,#01H
jr key_2_sub1
temp_max_2:
ld temp_value,#0AH
key_2_sub1:
ld I2C_data,temp_value
ld I2C_dress,#temp_value_dress
call WR_24C02
ld beep_flag,#01h
key_2_sub_end:
ret
;***************************************************************
;***************************************************************
key_3_sub:
tm key_release,#01H
jp nz,key_3_sub_end ;key_release=1,exit
tm temp_status,#01H
jr z,temp_on ;if temp_status=0=off jump to temp on
temp_off: ;if temp_status=1=on to temp off
ld temp_status,#00H
call temp_ad_off
jr key_3_sub1
temp_on:
ld temp_status,#01H
key_3_sub1:
nop
ld beep_flag,#01h
ld key_release,#01H
key_3_sub_end:
ret
;***************************************************************
;***************************************************************
key_4_sub:
tm key_release,#01H
jp nz,key_4_sub_end ;key_release=1,exit
tm fire_status,#01H
jr z,key_4_sub_end
tm lamp_status,#01H
jr nz,lamp_off ;if lamp_status=0=off jump to lamp on
lamp_on:
ld lamp_status,#01H
call lamp_open
jr key_4_sub1
lamp_off: ;if lamp_status=1=on to lamp off
ld lamp_status,#00H
call lamp_close
key_4_sub1:
ld I2C_data,lamp_status
ld I2C_dress,#lamp_status_dress
call WR_24C02
ld key_release,#01H
ld beep_flag,#01h
key_4_sub_end:
ret
;***************************************************************
;***************************************************************
key_5_sub:
cp fire_value,#0ah
jr z,key_5_sub_end
tm key_hold_flag,#01h
jr z,key_5_sub_end
ld key_hold_flag,#00h
tm fire_status,#01H
jr z,key_5_sub_end ;fire off ,exit
inc fire_value ;fire+
cp fire_value,#01H
jr ult,fire_min
cp fire_value,#0AH
jr ugt,fire_max
jr key_5_sub1
fire_min:
ld fire_value,#01H
jr key_5_sub1
fire_max:
ld fire_value,#0AH
key_5_sub1:
ld I2C_data,fire_value
ld I2C_dress,#fire_value_dress
call WR_24C02
ld beep_flag,#01h
key_5_sub_end:
ret
;***************************************************************
;***************************************************************
key_6_sub:
cp fire_value,#01H
jr z,key_6_sub_end
tm key_hold_flag,#01h
jr z,key_6_sub_end
ld key_hold_flag,#00h
tm fire_status,#01H
jr z,key_6_sub_end ;fire off ,exit
dec fire_value ;fire-
cp fire_value,#01H
jr ult,fire_min_1
cp fire_value,#0AH
jr ugt,fire_max_2
jr key_6_sub1
fire_min_1:
ld fire_value,#01H
jr key_6_sub1
fire_max_2:
ld fire_value,#0AH
key_6_sub1:
ld I2C_data,fire_value
ld I2C_dress,#fire_value_dress
call WR_24C02
ld beep_flag,#01h
key_6_sub_end:
ret
;***************************************************************
;***************************************************************
key_7_sub:
tm key_release,#01H
jp nz,key_7_sub_end ;key_release=1,exit
tm fire_status,#01H
jr z,fire_on
fire_off:
ld fire_status,#00H ;if fire_status=0=off jump to fire on
and p2,#10111111B ;motor=p2.6
and p0,#01111111B ;clear p0.7 disenble LIGHTS
call sound_close
call lamp_close
jp key_7_sub1
fire_on: ;if fire_status=1=on to fire off
ld fire_status,#01H
tm temp_sensor,#01h
jr z,sound_judge
or p0,#10000000B ;set p0.7 enble LIGHTS
sound_judge:
cp sound_status,#01H
jr eq,sound_judge_1
call sound_close
jr lamp_judge
sound_judge_1:
call sound_open
lamp_judge:
cp lamp_status,#01H
jr eq,lamp_judge_1
call lamp_close
jr key_7_sub1
lamp_judge_1:
call lamp_open
key_7_sub1:
ld beep_flag,#01h
ld key_release,#01H
key_7_sub_end:
ret
;**************************************************************
;***************************************************************
key_8_sub:
tm key_release,#01H
jp nz,key_8_sub_end ;key_release=1,exit
tm fire_status,#01H
jr z,key_8_sub_end
tm sound_status,#01H
jr z,sound_on ;if sound_status=0=off jump to sound on
sound_off: ;if sound_status=1=on to sound off
ld sound_status,#00H
call sound_close
jr key_8_sub1
sound_on:
ld sound_status,#01H
call sound_open
key_8_sub1:
ld I2C_data,sound_status
ld I2C_dress,#sound_status_dress
call WR_24C02
ld beep_flag,#01h
ld key_release,#01H
key_8_sub_end:
ret
;***************************************************************
;**************************************************************
sound_open:
tm temp_sensor,#01h
jr z,sound_open_end
or p0,#00001000B ;set p0.3 disenble spker
;and p0,#11110111B ;clear p0.3 enble spker
sound_open_end:
ret
sound_close:
and p0,#11110111B ;clear p0.3 enble spker
;or p0,#00001000B ;set p0.3 disenble spker
ret
lamp_open:
tm temp_sensor,#01h
jr z,lamp_open_end
or p0,#00100000B ;clear p0.5 enble lamp
lamp_open_end:
ret
lamp_close:
and p0,#11011111B ;set p0.5 disenble lamp
ret
;***************************************************************
;***************************************************************
delay20ms:
push r8
push r9
LD r8,#02H ;#01H
Delay1:
;ld r9,#08h
ld r9,#08h
Delay2:
NOP
NOP
NOP
DEC r9
nop
nop
nop
JR nz,Delay2
nop
nop
dec r8
jr nz,Delay1
pop r9
pop r8
RET
;********************************************
;***************************************************************
;********************************************
;**********************************************
I2C_start:
or I2C_PORT,#I2C_SDA1 ;SDA=1
nop
nop
or I2C_PORT,#I2C_SCL1 ;SCL=1
nop
nop
and I2C_PORT,#I2C_SDA0 ;SDA=0
nop
nop
and I2C_PORT,#I2C_SCL0 ;SCL=0
nop
nop
ret
;***********************************************
;***********************************************
I2C_stop:
and I2C_PORT,#I2C_SDA0 ;SDA=0
nop
nop
or I2C_PORT,#I2C_SCL1 ;SCL=1
nop
nop
or I2C_PORT,#I2C_SDA1 ;SDA=1
nop
nop
and I2C_PORT,#I2C_SDA0 ;SDA=0
nop
nop
and I2C_PORT,#I2C_SCL0 ;SCL=0
nop
nop
ret
;***********************************************
;***********************************************
I2C_ask:
and I2C_PORT,#I2C_SDA0 ;SDA=0
nop
nop
or I2C_PORT,#I2C_SCL1 ;SCL=1
nop
nop
and I2C_PORT,#I2C_SCL0 ;SCL=0
nop
nop
or I2C_PORT,#I2C_SDA1 ;SDA=1
nop
nop
ret
;***********************************************
;***********************************************
I2C_noask:
or I2C_PORT,#I2C_SDA1 ;SDA=1
nop
nop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -