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

📄 9222asm.asm

📁 用78F9222做的电热水器程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
        BR      Receive_byte_error
Receive_byte1:
        CMPW    AX,#zero_c_low
        BNC     $Receive_zero
        BR      Receive_byte_error
Receive_byte2:
        CMPW    AX,#one_c_low
        BNC     $Receive_one
        BR      Receive_byte_error
Receive_zero:
        CLR1    CY
        BR      Bit_shift
Receive_one:
        SET1    CY
Bit_shift:      
        MOV     A,receive_buffer
        RORC    A,1
        MOV     receive_buffer,A
        INC     bit_c
        MOV     A,bit_c
        CMP     A,#8
        BNC     $Bit_shift_end
        BR      Receive_byte_r
Bit_shift_end:
        MOV     bit_c,#0  
        SET1    byte_end_f  
        BR      Receive_byte_r
Receive_byte_error:
	SET1	Receive_bit_error_f
Receive_byte_r:
        RET     
;--------------------------------
Receive_two_byte:
        CALL    !Receive_byte
        BT      byte_end_f,$Receive_two_byte0
        BR      Receive_two_byte_r  
Receive_two_byte0:
        CLR1    byte_end_f
        BF      low_byte_f,$Receive_two_byte1
        CLR1    low_byte_f
        SET1    word_end_f
        BR      Receive_two_byte_r
Receive_two_byte1:
        SET1    low_byte_f
        MOV     A,receive_buffer
        MOV     receive_buffer1,A
Receive_two_byte_r:
	RET  
;--------------------------------
Send_one_data:
        DBNZ    display_data_bit_c,$Send_display_data1
        MOV     display_data_bit_c,#9
        CLR1    clk
        CLR1    data 
        CALL    !Delay         
        BR      Send_one_data_r
Send_display_data1:                                   
        ROL     A,1
        BC      $Send_one
Send_zero:
        CLR1	clk
	CALL	!Delay
	CLR1	data
	CALL	!Delay
	SET1	clk
	CALL	!Delay
	CLR1	clk
	BR      Send_one_data
Send_one:
        CLR1	clk
	CALL	!Delay
	SET1	data
	CALL	!Delay
	SET1	clk
	CALL	!Delay
	CLR1	clk
	BR      Send_one_data  
Send_one_data_r:
        RET
;================================
;-	interrupt program	-
;================================
Unused:
	RETI
;-------------------------------- 
Timer:                           ;T=2ms  
        PUSH_STACK
        INC     loop_c   
        BF      time_h_set_f,$Timer0
        BR      Timer_r  
Timer0:
        BF      time_m_set_f,$Timer1
        BR      Timer_r
Timer1:
        MOVW    AX,time_c
        CMPW    AX,#499
        BNC     $Timer_second
        INCW    AX
        MOVW    time_c,AX
        BR      Timer_r
Timer_second:
        MOVW    AX,#0
        MOVW    time_c,AX
        INC     time_s
        MOV     A,time_s
        CMP     A,#60
        BNC     $Timer_minute
        BR      Timer_r
Timer_minute:
        MOV     time_s,#0
        INC     time_m
        MOV     A,time_m
        CMP     A,#60
        BNC     $Timer_hour
        BR      Timer2
Timer_hour:
        MOV     time_m,#0
        INC     time_h
        MOV     A,time_h
        CMP     A,#24
        BNC     $Timer_hour0
        BR      Timer2
Timer_hour0:
        MOV     time_h,#0
Timer2:
        BF      run_in_night_f,$Timer3
        MOV     A,time_h
        CMP     A,#6
        BNZ     $Run_in_night_timer
        MOV     A,time_m
        CMP     A,#0
        BZ      $Run_in_night_timer00
        BR      Timer3
Run_in_night_timer00: 
        BF      set_turnon_f,$Run_in_night_timer01
        MOV     A,settime_on_h
        CMP     A,#6
        BNZ     $Run_in_night_timer01
        MOV     A,settime_on_m
        CMP     A,#0
        BNZ     $Run_in_night_timer01
        BR      Timer3
Run_in_night_timer01:
        CLR1    on_off_f
        BR      Timer3
Run_in_night_timer:
        CMP     A,#0
        BZ      $Run_in_night_timer0
        BR      Timer3
Run_in_night_timer0:      
        MOV     A,time_m
        CMP     A,#0
        BZ      $Run_in_night_timer1
        BR      Timer3
Run_in_night_timer1:
        SET1    on_off_f 
        BR      Timer3
Timer3:
        BT      set_turnon_f,$Turnon_set
        BR      Timer4
Turnon_set:
        MOV     A,settime_on_h
        CMP     A,time_h
        BZ      $Turnon_set0
        BR      Timer4
Turnon_set0:
        MOV     A,settime_on_m
        CMP     A,time_m
        BNZ     $Timer4
        SET1    on_off_f
Timer4:
        BT      set_turnoff_f,$Turnoff_set 
        BR      Timer_r
Turnoff_set:
        MOV     A,settime_off_h
        CMP     A,time_h
        BZ      $Turnoff_set0
        BR      Timer_r
Turnoff_set0:
        MOV     A,settime_off_m
        CMP     A,time_m
        BNZ     $Timer_r
        BF      run_in_night_f,$Turnoff_set1 
        MOV     A,time_h
        CMP     A,#0
        BNZ     $Turnoff_set1
        MOV     A,time_m
        CMP     A,#0
        BNZ     $Turnoff_set1
        BR      Timer_r
Turnoff_set1:
        CLR1    on_off_f   
Timer_r:  
        POP_STACK
        RETI     
;--------------------------------
Display_buzzer: 
        PUSH_STACK 
        BF      receive_start_f,$Display
        MOVW    AX,receive_c
        INCW    AX           
        CMPW    AX,#8000 
        BNC     $Receive_error_pro
        MOVW    receive_c,AX      
        BR      Display
Receive_error_pro:
        MOVW    AX,#0
        MOVW    receive_c,AX
        MOV     flag0,#0
        MOV     bit_c,#0
Display:
        MOV     A,display_c
        CMP     A,#40
        BNC     $Display0 
        INC     display_c
        BR      Display_r
Display0: 
        MOV     display_c,#0                    
        CLR1    dig1
        CLR1    dig2
        CLR1    dig3
        CLR1    dig4
        CLR1    dig5
        CLR1    dig6
        CLR1    dig7
Com_select:
        BT      dig_1,$Com1_select
        CLR1    dig1
        BR      Com2_select         
Com1_select:        
        MOV     A,display_buffer1
        CALL    !Send_one_data
        SET1    dig1            
        BR      Send_one_end
Com2_select:
        BT      dig_2,$Com2_select0
        CLR1    dig2
        BR      Com3_select
Com2_select0:       
        MOV     A,display_buffer2
        CALL    !Send_one_data
        SET1    dig2     
        BR      Send_one_end
Com3_select:
        BT      dig_3,$Com3_select0
        CLR1    dig3
        BR      Com4_select
Com3_select0: 
        MOV     A,display_buffer3
        CALL    !Send_one_data
        SET1    dig3
        BR      Send_one_end
Com4_select:
        BT      dig_4,$Com4_select0
        CLR1    dig4
        BR      Com5_select
Com4_select0: 
        MOV     A,display_buffer4
        CALL    !Send_one_data
        SET1    dig4
        BR      Send_one_end
Com5_select:
        BT      dig_5,$Com5_select0
        CLR1    dig5 
        BR      Com6_select
Com5_select0:                 
        MOV     A,display_buffer5
        CALL    !Send_one_data
        SET1    dig5 
        BR      Send_one_end   
Com6_select:         
        BT      dig_6,$Com6_select0
        CLR1    dig6
        BR      Com7_select
Com6_select0:                 
        MOV     A,display_buffer6
        CALL    !Send_one_data
        SET1    dig6 
        BR      Send_one_end
Com7_select:
        BT      dig_7,$Com7_select0
        CLR1    dig7
        BR      Display_r
Com7_select0:                 
        MOV     A,display_buffer7
        CALL    !Send_one_data
        SET1    dig7 
Send_one_end:
        MOV     A,com         
        ROL     A,1 
        MOV     com,A
        CMP     A,#10000000B  
        BNZ     $Send_one_end0            
        MOV     display_data_c,#0
        MOV     com,#1
        BR      Display_r
Send_one_end0:
        INC     display_data_c
Display_r: 
        POP_STACK
        RETI          
;-------------------------------- 
AD_sample: 
        PUSH_STACK
        CLR1    ADCS
        DBNZ    ad_c,$AD_sample1 
        CLR1    ad_first_f
        MOV     ad_c,#6
One_channel_end:
        MOVW    AX,sum
        XCH     A,X
        ADD     A,ADCRH
        XCH     A,X
        ADDC    A,#0
        XCH     A,X
        SUB     A,min
        XCH     A,X
        SUBC    A,#0
        XCH     A,X
        SUB     A,max
        XCH     A,X
        SUBC    A,#0
Average: 
        DBNZ    average_c,$Average0     
        MOV     average_c,#3
        XCH     A,X
        MOV     B,A
        MOV     A,ADS
        CMP     A,#key_channel
        BNZ     $Wt_average
Key_average:
        MOV     A,B
        MOV     key_ad_new,A
        MOV     ADS,#wt_channel
AD_sample_start:
        SET1    ADCS
        BR      AD_sample_r
Wt_average:
        MOV     A,B
        MOV     wt_ad_new,A
        MOV     ADS,#key_channel 
        SET1    AD_sample_end 
        BR      AD_sample_r  
Average0:       
        CLR1    CY
        RORC    A,1
        MOV     B,A
        XCH     A,X
        RORC    A,1
        XCH     A,X
        MOV     A,B
        BR      Average
AD_sample1:
        BF      ad_first_f,$AD_sample2
        MOV     A,ADCRH  
        MOV     B,A
        CMP     A,max 
        BZ      $Get_sum
        BNC     $Change_max
        CMP     A,min
        BC      $Change_min
Get_sum:           
        CLR1    CY
        MOVW    AX,sum
        XCH     A,X
        ADD     A,ADCRH
        XCH     A,X
        ADDC    A,#0
        MOVW    sum,AX
        BR      AD_sample_start
Change_max:        
        MOV     A,B
        XCH     A,max
        BR      Get_sum     
Change_min:        
        MOV     A,B
        XCH     A,min
        BR      Get_sum
AD_sample2:
        SET1    ad_first_f
        MOV     A,ADCRH
        MOV     max,A
        MOV     min,A
        MOV     X,#0
        XCH     A,X
        MOVW    sum,AX
        BR      AD_sample_start
AD_sample_r: 
        POP_STACK       
        RETI
;--------------------------------
Receive: 
        PUSH_STACK 
        BF      receive_start_f,$Receive0
        MOVW    AX,receive_c
Receive0:
        BF      head_code_f,$Receive_head_code
        BF      custom_code_f,$Receive_custom_code
        BF      data_f,$Receive_data
        BR      Receive_inverse_data
Receive_head_code:
        BF      receive_start_f,$Receive_head_code0
        MOVW    AX,receive_c
        CMPW    AX,#head_c_high
        BC      $Receive_head_code1
        BR      Receive_error 
Receive_head_code0:
        SET1    receive_start_f 
Receive_head_code00:
        MOVW    AX,#0
        MOVW    receive_c,AX
        BR      Receive_r
Receive_head_code1:
        CMPW    AX,#head_c_low
        BNC     $Receive_head_code2
        BR      Receive_error
Receive_head_code2:
        SET1    head_code_f
        BR	Receive_head_code00
Receive_custom_code:
        CALL    !Receive_two_byte
        BT      word_end_f,$Receive_custom_code0
        BT      Receive_bit_error_f,$Receive_error
        BR      Receive_head_code00      
Receive_custom_code0:
        CLR1    word_end_f
        MOV     A,receive_buffer
        XCH	A,X                       
        MOV     A,receive_buffer1
        XCH	A,X
        CMPW    AX,#custom_code
        BZ      $Receive_custom_code1
        BR      Receive_error
Receive_custom_code1:
        SET1    custom_code_f
        BR      Receive_head_code00   
Receive_data:
        CALL    !Receive_byte
        BT      byte_end_f,$Receive_data0 
        BT      Receive_bit_error_f,$Receive_error
        BR      Receive_head_code00
Receive_data0:
        CLR1    byte_end_f 
        SET1    data_f
        MOV     A,receive_buffer
        MOV     data_buffer,A
        BR      Receive_head_code00
Receive_inverse_data:
        CALL    !Receive_byte  
        BT      byte_end_f,$Receive_inverse_data0
        BT      Receive_bit_error_f,$Receive_error
        BR      Receive_head_code00
Receive_inverse_data0:
        CLR1    byte_end_f
        MOV     A,receive_buffer
        AND     A,data_buffer
        BZ      $Receive_inverse_data1
        BR      Receive_error
Receive_inverse_data1: 
        MOV     A,data_buffer
        MOV     key_code,A 
        CLR1    first_pressed_f
        MOV     key_pressed_c,#0
        SET1    set_by_remote_f     
Receive_error:
        MOV     flag0,#0
        MOV     bit_c,#0 
        MOVW    AX,#0
        MOVW    receive_c,AX        
Receive_r:            
        POP_STACK
        RETI
;--------------------------------
;-      DEFINE TABLE            -
;--------------------------------
WT_TABLE:               ;from 68 to 233(0-99) 
        DB	0,0,1
	DB	1,2,2,3,3,3,4,4,5,5
	DB      6,6,6,7,7,8,8,9,9,9
	DB      10,10,11,11,11,12,12,13,13,13
	DB      14,14,15,15,15,16,16,17,17,17
	DB      18,18,19,19,19,20,20,21,21,21
	DB      22,22,23,23,23,24,24,25,25,26
	DB      26,26,27,27,28,28,28,29,29,30
	DB      30,31,31,31,32,32,33,33,34,34
	DB      34,35,35,36,36,37,37,38,38,39
	DB      39,40,40,41,41,42,42,43,43,44
	DB      44,45,45,46,46,47,47,48,49,49
	DB      50,50,51,51,52,53,53,54,55,55
	DB      56,56,57,58,58,59,60,61,61,62
	DB      63,64,64,65,66,67,68,68,69,70
	DB      71,72,73,74,75,76,77,78,79,80
	DB      81,83,84,85,86,88,89,91,92,93
	DB      95,97,99
DISPLAY_TABLE:
        DB	3FH	;0
	DB	6H	;1
	DB	5BH	;2
	DB	4FH	;3
	DB	66H	;4
	DB	6DH	;5
	DB	7DH	;6
	DB	7H	;7
	DB	7FH	;8
	DB	6FH	;9
	DB	79H	;E
	
END
                                                                                       

⌨️ 快捷键说明

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