⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 9222asm.asm

📁 用78F9222做的电热水器程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
        BF      value_change_f,$Set_turnoff_judge_r
        CLR1    value_change_f
;        BF      run_in_night_f,$Set_turnoff_judge0
;        MOV     A,settime_off_h
;        CMP     A,#0
;        BNZ     $Set_turnoff_judge0
;        MOV     A,settime_off_m
;        CMP     A,#0
;        BNZ     $Set_turnoff_judge0
;        CLR1    run_in_night_f
;Set_turnoff_judge0:
        BF      set_turnon_f,$Set_turnoff_judge1
        MOV     A,settime_off_h
        CMP     A,settime_on_h
        BNZ     $Set_turnoff_judge1
        MOV     A,settime_off_m
        CMP     A,settime_on_m
        BNZ     $Set_turnoff_judge1
        CLR1    set_turnon_f
Set_turnoff_judge1:
        SET1    set_turnoff_f
Set_turnoff_judge_r:
        RET
;--------------------------------
Pre_display:
        MOVW    AX,t_3s
        CMPW    AX,#300
        BNC     $Pre_display0  
        INCW    AX               
        MOVW    t_3s,AX
        BR      Pre_display_r
Pre_display0:
        MOV     A,error_f
        CMP     A,#0
        BNZ     $Error_display 
        BR      Normal_display
Error_display:
        MOV     display_buffer1,#0
        MOV     display_buffer2,#10000000B
        MOV     display_buffer3,#0      
        MOV     display_buffer4,#10000000B 
        MOV     display_buffer7,#0
        MOV     A,flash_c
        CMP     A,#50
        BNC     $Error_display0
        INC     flash_c      
Error_display01:
        MOVW    HL,#DISPLAY_TABLE
        MOV     A,#10
        CALL    !Check_table    
        OR      A,#10000000B
        MOV     display_buffer5,A
        BR      Error_display1
Error_display0:
        CMP     A,#100
        BNC     $Error_display00
        INC     flash_c                     
        MOV     display_buffer5,#10000000B
        MOV     display_buffer6,#0
        BR      Pre_display_r
Error_display00:
        MOV     flash_c,#0
        BR      Error_display01
Error_display1:
        BF      over_tem_f,$Error_display_judge
        BR      Over_tem_display
Error_display_judge:
        BF      sensor_error_f,$Error_display_judge0
        BR      Sensor_error_display
Error_display_judge0:
        BT      heat_no_water_f,$Heat_no_water_display
        BR      Normal_display
Over_tem_display:
        MOV     A,#3
Error_display2:
        MOVW    HL,#DISPLAY_TABLE
        CALL    !Check_table
        MOV     display_buffer6,A
        BR      Pre_display_r
Sensor_error_display:
        MOV     A,#2
        BR      Error_display2
Heat_no_water_display:       
        MOV     A,#1
        BR      Error_display2
Normal_display:
        BT      tem_set_f,$Tem_set_display
        BR      Tem_display
Tem_set_display:       
        MOV     A,set_buffer
        CALL    !Flash_pro 
        MOV     A,set_buffer
        CMP     A,#10
        BNC     $Tem_set_display1
        MOV     display_high_bit,#0
Tem_set_display1:
        BF      run_in_night_f,$Tem_set_high_display0
        OR      display_high_bit,#10000000B
Tem_set_high_display0:
        MOV     A,display_high_bit
        MOV     display_buffer1,A
Tem_set_low_display:
        OR      display_low_bit,#10000000B
Tem_set_low_display0:          
        MOV     A,display_low_bit
        MOV     display_buffer2,A 
        MOV     A,flash_c
        CMP     A,#50
        BNC     $Tem_set_display0
        OR      display_buffer7,#10100000B
        BR      Time_display      	  
Tem_set_display0:
        AND     display_buffer7,#01011111B
        BR      Time_display         
Tem_display:
        OR      display_buffer7,#10100000B
;        MOV     A,delay_c
;        CMP     A,#100
;        BNC     $Tem_display00
;        INC     delay_c
;        BR      Time_display
;Tem_display00:
;        MOV     delay_c,#0
        MOV     A,wt_display_buffer                       
	CALL    !Data_convert	
	MOV     A,wt
	CMP     A,#10
	BNC     $Tem_display0
	MOV     display_high_bit,#0
Tem_display0:
        BF      run_in_night_f,$Tem_display2
        OR      display_high_bit,#10000000B
Tem_display2:
        MOV     A,display_high_bit
        MOV     display_buffer1,A  
        OR      display_low_bit,#10000000B
        MOV     A,display_low_bit
        MOV     display_buffer2,A
Time_display:
        BF      time_h_set_f,$Time_display0
        BR      Time_h_set_display
Time_display0:
        BF      time_m_set_f,$Time_display1
        BR      Time_m_set_display 
Time_display1:
        BF      turnon_h_set_f,$Time_display2
        BR      Turnon_h_set_display
Time_display2:
        BF      turnon_m_set_f,$Time_display3
        BR      Turnon_m_set_display
Time_display3:
        BF      turnoff_h_set_f,$Time_display4
        BR      Turnoff_h_set_display
Time_display4:
        BF      turnoff_m_set_f,$Time_display5
        BR      Turnoff_m_set_display
Time_display5: 
        OR      display_buffer7,#01000000B                   
        MOV     A,time_h
        CALL    !Data_convert 
        MOV     A,time_h
        CMP     A,#10
        BNC     $Time_display10
        MOV     display_high_bit,#0
Time_display10:
        BT      set_turnoff_f,$Time_display6
        BR      Time_display7
Time_display6:
        OR      display_high_bit,#10000000B
Time_display7:
        MOV     A,display_high_bit
        MOV     display_buffer3,A
        MOV     A,display_low_bit
        MOV     display_buffer4,A
        MOV     A,time_m
        CALL    !Data_convert
        OR      display_high_bit,#10000000B
        BT      set_turnon_f,$Time_display8
        BR      Time_display9
Time_display8:
        OR      display_low_bit,#10000000B
Time_display9:
        MOV     A,display_high_bit
        MOV     display_buffer5,A
        MOV     A,display_low_bit
        MOV     display_buffer6,A
        BR      Pre_display1     
Turnon_h_set_display:
        MOV     A,set_buffer
        CALL    !Flash_pro 
        MOV     A,set_buffer
        CMP     A,#10
        BNC     $Turnon_h_set_display01
        MOV     display_high_bit,#0
Turnon_h_set_display01:  
        BF      set_turnoff_f,$Turnon_h_set_display0
        OR      display_high_bit,#10000000B
Turnon_h_set_display0:
        MOV     A,display_high_bit
        MOV     display_buffer3,A
        MOV     A,display_low_bit
        MOV     display_buffer4,A
        MOV     A,settime_on_m 
        CALL    !Data_convert
Turnon_h_set_display00:
        OR      display_high_bit,#10000000B
Turnon_h_set_display1:
        MOV     A,display_high_bit
        MOV     display_buffer5,A
        MOV     A,flash_c
        CMP     A,#50
        BNC     $Turnon_h_set_display2  
        OR      display_buffer7,#01000000B
        OR      display_low_bit,#10000000B
        BR      Turnon_h_set_display22
Turnon_h_set_display2:                    
        AND     display_buffer7,#10111111B
Turnon_h_set_display22:
        MOV     A,display_low_bit
        MOV     display_buffer6,A
        BR      Pre_display1  
Turnon_m_set_display:
        MOV     A,settime_on_h
        CALL    !Data_convert
        MOV     A,settime_on_h
        CMP     A,#10
        BNC     $Turnon_m_set_display00
        MOV     display_high_bit,#0
Turnon_m_set_display00:
        BF      set_turnoff_f,$Turnon_m_set_display0
        OR      display_high_bit,#10000000B
Turnon_m_set_display0:
        MOV     A,display_high_bit
        MOV     display_buffer3,A
        MOV     A,display_low_bit
        MOV     display_buffer4,A
        MOV     A,set_buffer
        CALL    !Flash_pro
        BR      Turnon_h_set_display00
Turnoff_h_set_display:
        MOV     A,set_buffer
        CALL    !Flash_pro
        MOV     A,set_buffer
        CMP     A,#10
        BNC     $Turnoff_h_set_display02
        MOV     display_high_bit,#0
Turnoff_h_set_display02:
        MOV     A,flash_c
        CMP     A,#50
        BNC     $Turnoff_h_set_display0 
        OR      display_buffer7,#01000000B
        OR      display_high_bit,#10000000B  
        BR      Turnoff_h_set_display01
Turnoff_h_set_display0:                   
        AND     display_buffer7,#10111111B 
Turnoff_h_set_display01:
        MOV     A,display_high_bit
        MOV     display_buffer3,A
        MOV     A,display_low_bit
        MOV     display_buffer4,A
        MOV     A,settime_off_m
        CALL    !Data_convert          
Turnoff_h_set_display00: 
        OR      display_high_bit,#10000000B
Turnoff_h_set_display1:
        MOV     A,display_high_bit
        MOV     display_buffer5,A
        BF      set_turnon_f,$Turnoff_h_set_display2
        OR      display_low_bit,#10000000B
Turnoff_h_set_display2:
        MOV     A,display_low_bit
        MOV     display_buffer6,A
        BR      Pre_display1  
Turnoff_m_set_display:
        MOV     A,settime_off_h
        CALL    !Data_convert
        MOV     A,settime_off_h
        CMP     A,#10
        BNC     $Turnoff_m_set_display01
        MOV     display_high_bit,#0
Turnoff_m_set_display01:
        MOV     A,flash_c
        CMP     A,#50
        BNC     $Turnoff_m_set_display0   
        OR      display_buffer7,#01000000B
        OR      display_high_bit,#10000000B 
        BR      Turnoff_m_set_display00
Turnoff_m_set_display0:                   
        AND     display_buffer7,#10111111B
Turnoff_m_set_display00:
        MOV     A,display_high_bit
        MOV     display_buffer3,A
        MOV     A,display_low_bit
        MOV     display_buffer4,A
        MOV     A,set_buffer
        CALL    !Flash_pro
        BR      Turnoff_h_set_display00
Time_h_set_display:
        MOV     A,set_buffer
        CALL    !Flash_pro 
        MOV     A,set_buffer
        CMP     A,#10
        BNC     $Time_h_set_display01
        MOV     display_high_bit,#0
Time_h_set_display01:   
        MOV     A,flash_c
        CMP     A,#50
        BNC     $Time_h_set_display000
        OR      display_buffer7,#01000000B
        BR      Time_h_set_display00
Time_h_set_display000:
        AND     display_buffer7,#10111111B     
Time_h_set_display00:
        BF      set_turnoff_f,$Time_h_set_display0
        OR      display_high_bit,#10000000B
Time_h_set_display0:
        MOV     A,display_high_bit
        MOV     display_buffer3,A
        MOV     A,display_low_bit
        MOV     display_buffer4,A
        MOV     A,time_m
        CALL    !Data_convert   
Time_m_set_display1:
        OR      display_high_bit,#10000000B
Time_m_set_display2:
        MOV     A,display_high_bit
        MOV     display_buffer5,A  
        BF      set_turnon_f,$Time_m_set_display3
        OR      display_low_bit,#10000000B
Time_m_set_display3:
        MOV     A,display_low_bit
        MOV     display_buffer6,A
        BR      Pre_display1
Time_m_set_display:
        MOV     A,time_h
        CALL    !Data_convert 
        MOV     A,time_h
        CMP     A,#10
        BNC     $Time_m_set_display01
        MOV     display_high_bit,#0
Time_m_set_display01:
        BF      set_turnoff_f,$Time_m_set_display0
        OR      display_high_bit,#10000000B
Time_m_set_display0:
        MOV     A,display_high_bit
        MOV     display_buffer3,A          
        MOV     A,display_low_bit
        MOV     display_buffer4,A
        MOV     A,set_buffer
        CALL    !Flash_pro     
        MOV     A,flash_c
        CMP     A,#50
        BNC     $Time_m_set_display00
        OR      display_buffer7,#01000000B
        BR      Time_m_set_display1       
Time_m_set_display00:
        AND     display_buffer7,#10111111B
        BR      Time_m_set_display1
Pre_display1:
        MOV     A,flash_c1
        CMP     A,#50
        BNC     $Pre_display2
        INC     flash_c1
        BR      Pre_display4
Pre_display2:
        MOV     flash_c1,#0
        XOR     display_buffer7,#00000100B
Pre_display4:
        BF      on_off_f,$Pre_display5
        BF      keep_tem_f,$Pre_display6
        OR      display_buffer7,#00010000B 
        AND     display_buffer7,#11110111B
        BR      Pre_display_r
Pre_display5:
        AND     display_buffer7,#11100111B
        BR      Pre_display_r
Pre_display6:
        OR      display_buffer7,#00001000B
        AND     display_buffer7,#11101111B
Pre_display_r:
        RET         
;--------------------------------
Flash_pro:
        CALL    !Data_convert
        MOV     A,flash_c
        CMP     A,#50
        BNC     $Flash_pro0
        INC     flash_c
        BR      Flash_pro_r
Flash_pro0:
        CMP     A,#100
        BNC     $Flash_pro1
        INC     flash_c
        MOV     display_high_bit,#0
        MOV     display_low_bit,#0
        BR      Flash_pro_r
Flash_pro1:
        MOV     flash_c,#0
Flash_pro_r:
        RET                    
;--------------------------------
Buzzer_deal: 
        BT      ring_3times_f,$Ring_3times
        BR      Buzzer_deal00
Ring_3times:
        MOV     A,ring_c1
        CMP     A,#0
        BNZ     $Ring_3times0
        SET1    ring_f
        INC     ring_c1
        BR      Buzzer_deal00
Ring_3times0:
        INC     ring_c1
        MOV     A,ring_c1
        CMP     A,#25
        BNC     $Ring_3times1
        BR      Buzzer_deal00
Ring_3times1:
        MOV     ring_c1,#0
        INC     three_times
        MOV     A,three_times
        CMP     A,#3
        BNC     $Ring_3times2
        BR      Buzzer_deal_r                    
Ring_3times2:
        MOV     three_times,#0
        CLR1    ring_3times_f
        BR      Buzzer_deal_r                            
Buzzer_deal00:        
        BT      ring_f,$Buzzer_deal0
        BR      Buzzer_deal_r
Buzzer_deal0:
        MOV     A,ring_c
        CMP     A,#0
        BZ      $Buzzer_deal1
        CMP     A,#10
        BNC     $Buzzer_deal2
        BR      Buzzer_deal3
Buzzer_deal1:   
        MOV     TMC00,#0 
        CLR1    TOC00.1
        SET1    TMMK000 
        MOVW    AX,#250
        MOVW    CR000,AX                ;T~=4KHz
        NOP
        NOP
        MOV     PRM00,#00000001B        ;F=f/4
        MOV     CRC00,#0
        MOV     TOC00,#00000111B
        MOV     TMC00,#00001100B
        BR      Buzzer_deal3
Buzzer_deal2:         
        CLR1    ring_f       
        MOV     ring_c,#0
        MOV     TOC00,#0
        MOV     TMC00,#0
        MOVW    AX,#0FFFFH
        MOVW    CR000,AX 
        BR      Buzzer_deal_r    
Buzzer_deal3:
        INC     ring_c               
Buzzer_deal_r:
        RET   
;--------------------------------
Data_convert: 
        MOV     high_bit_number,#0
Data_convert0:
        CMP	A,#10
	BC	$Data_convert_r	
	SUB	A,#10
	INC	high_bit_number
	BR      Data_convert0
Data_convert_r: 
        MOVW    HL,#DISPLAY_TABLE            
        CALL    !Check_table
        MOV     display_low_bit,A
        MOV     A,high_bit_number 
        MOVW    HL,#DISPLAY_TABLE
        CALL    !Check_table 
        MOV     display_high_bit,A
	RET
                  
;--------------------------------
Check_table:
        ADD     A,L
        MOV     L,A
        MOV     A,H
        ADDC    A,#0
        MOV     H,A
        MOV     A,[HL]
        RET
;--------------------------------
Delay:
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        RET       
;--------------------------------
Receive_byte:
        CMPW    AX,#zero_c_high
        BC      $Receive_byte1
Receive_byte0:
        CMPW    AX,#one_c_high
        BC      $Receive_byte2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -