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

📄 fireplace.src.bak

📁 使用三星芯片的控制程序,可供三星8位MCU初学者参考!
💻 BAK
📖 第 1 页 / 共 4 页
字号:
;*******************************************************
;Project:   fireplace     
;Designer:       
;Subject:        
;File name:      fireplace.src
;MCU name:       S3C9454
;MCU Clock:      3.2MHz
;Original Date:  
;last ver  date: 
;Finished Date:  
;*******************************************************
	.include	"define.mac"

        vector  0000H,int_vec         ;interrupt vector
        
         .org    003cH
        
        db      00H
        db      00H
        db      00110000B                    ;DISABLE LVR=3.9V
        db      03H                     ;3.2M RC
	
	.org	0100H
	
reset:	
        DI
        
        init_clock_sp
        
        init_timer

        disable_base_time
		
        init_port

;*************************************	
clear_ram:

	LD	R0,#0BFH
	
clear_ram1:

	DEC	R0
	LD	@R0,#00H
	JR	NZ,clear_ram1	
 
 



;************************************
	
	;EI
	
        ;enable_base_time     
	
;**************************************
;initial_ram:
	ld  fire_status,#00h
        ld  temp_status,#00h
        ld  led_display_flag,#01H
       
        and  p2,#10111111B              ;motor=p2.6  disenble motor
        ;or   p0,#00001000B               ;set p0.3  disenble spker
        and   p0,#11110111B
        
        ld  beep_flag,#01h
        ld      AD_convert_time,#01h
        
        CALL    wait_1S
	call    restore
        
        EI
	
        enable_base_time   
;*************************************************
                        
main:                         
        OR	BTCON,#02h                       ;clear watchdog
        
        CALL    led_scan
        CALL    led_scan        
        CALL    led_scan
        CALL    led_scan
        CALL    led_scan        
        CALL    led_scan
        
                        
        CALL    key_scan
        
        
        
        CALL    led_scan
        CALL    led_scan        
        CALL    led_scan
        CALL    led_scan
        CALL    led_scan        
        CALL    led_scan
        
        
        call    motor_change
        
        
        CALL    led_scan
        CALL    led_scan        
        CALL    led_scan
        CALL    led_scan
        CALL    led_scan        
        CALL    led_scan
        
        
        call    AD_judge
        
        CALL    led_scan
        CALL    led_scan        
        CALL    led_scan
        CALL    led_scan
        CALL    led_scan        
        CALL    led_scan
       
        
        
        call    remote_deal_program
        
        
        jp      main

;*******************************************************************
wait_1S:
        LD      R0,#0FFH
        LD      R1,#0FFH
        LD      R2,#05H
wait_1:  
        DEC     R0      
        JP      NZ,wait_1
        DEC     R1
        JP      NZ,wait_1
        DEC     R2
        JP      NZ,wait_1
	RET     
;*************************Interrupt Vector***************************
int_vec:
         
        TM      T0CON,#01H
        JP      NZ,time0_program
       
        TM	P0PND,#04H		
	JP	nz,remote_program
      
int_vec_end:

	IRET
 
;****************************************************************** 
 
;********************************************
time0_program:

        push    flags

      
        tm beep_flag,#01h
        jr z,counter_program
        
beep_program:
        tm  p0,#01000000B               ;beep=p0.6
        jr  z,beep_set
        and p0,#10111111B
        jr  counter_program 
beep_set:
        or  p0,#01000000B        
        
counter_program:        
        inc common_counter
        cp common_counter,#10
        jr ult,time0_program1
        ld common_counter,#0
        ld common_flag,#01h

        call    counter_check   
        
        
time0_program1:  
       
        inc     remote_pulse_time
        cp      remote_pulse_time,#143                ;90
        ;cp      remote_pulse_time,#220                      ;90
        
        jr      ne,time_program_end
        ld      remote_pulse_time,#0
        ld      remote_flag,#0                   

                       

time_program_end:                 
        pop     flags   
        AND	T0CON,#0feh
        
        IRET

;**********************************************
;**********************************************
remote_program:
        
        push    r0
        push    r1
  
        call   remote_receive_program
        

remote_int_program_end:        
        
        
        pop     r1
        pop     r0   
        AND	p0pnd,#0fbh  
        
        IRET 	

;*******************************************************************



;*************************************      
remote_receive_program:
      
        ld     r0,remote_pulse_time                              
        ld     remote_pulse_time,#0
        
        tm  remote_repeat_start,#01h
        jr  nz,remote_head_code  
        
        tm     remote_flag,#01h                   ;judge head_byte
        jr     nz,remote_data_program
        
remote_head_code:
        
        cp     r0,#143
        ;cp     r0,#220
        jr     ult,remote_head_data0              ;less 90
        ld     remote_bit_num,#0 
        ld     remote_byte_num,#0       
        ld     remote_data,#0
        and    remote_flag,#0feh
        ret
        
remote_head_data0:
        
        cp     r0,#70
        ;cp     r0,#190
        jr     ugt,remote_head_data1              ;more 90
        ld     remote_bit_num,#0 
        ld     remote_byte_num,#0       
        ld     remote_data,#0
        and    remote_flag,#0feh
        ret
        
remote_head_data1:
        
        or     remote_flag,#01h
        ld     remote_bit_num,#0 
        ld     remote_byte_num,#0       
        ld     remote_data,#0
        
 
       
        cp    remote_repeat_time,#40    ;20
        jr    ult,remote_head_data1_end
        
        inc   remote_again
        ld    remote_repeat_time,#0        
        
       
        cp  remote_again,#8             ;   #2  
        jp  ult,remote_head_data1_end
        
        ld   remote_again,#6          ;#00h
        
        cp  remote_value,#01h
        jp  eq,remote_fire_inc          
        cp  remote_value,#02h
        jp  eq,remote_fire_dec
        cp  remote_value,#03h
        jp  eq,remote_temp_inc
        cp  remote_value,#04h
        jp  eq,remote_temp_dec        
        ;ld   remote_again,#48          ;#00h

remote_head_data1_end:        

        ret
;****************************************

;****************************************
remote_data_program:
        
        cp     r0,#6
        ;cp     r0,#20
        jr     ugt,remote_data_start
        ld     remote_bit_num,#0 
        ld     remote_byte_num,#0       
        ld     remote_data,#0
        and    remote_flag,#0feh
        ret
                
remote_data_start:
        
        cp     r0,#11
        ;cp     r0,#40
        jr     ugt,remote_data_1
        
        and    remote_flag,#11111101b
        jr     remote_store_data
        
remote_data_1:
        
        cp     r0,#23
        ;cp     r0,#68
        jr     ugt,remote_head_code
        or     remote_flag,#00000010b
               
;********************************                
remote_store_data:
        
        inc    remote_bit_num
        rcf
        tm     remote_flag,#02h
        jr     nz,remote_receive_1
        jr     remote_store_data0
        
remote_receive_1:
        
        scf
        
remote_store_data0:
        
        rrc    remote_data
        cp     remote_bit_num,#8
        jr     eq,remote_store_byte       
        ret        

;**********************************
remote_store_byte:
        
        ld     r1,remote_data                
        ld     remote_bit_num,#0
        inc    remote_byte_num
        cp     remote_byte_num,#1
        jr     eq,store_byte1
        cp     remote_byte_num,#2
        jr     eq,store_byte2
        cp     remote_byte_num,#3
        jr     eq,store_byte3
        cp     remote_byte_num,#4
        jr     eq,store_byte4
     
        RET


;**********************************
store_byte1:
        
        ld     remote_byte_buf0,r1
       
        ret
        
store_byte2:
        
        ld     remote_byte_buf1,r1
       
        ret
        
store_byte3:
        
        ld     remote_byte_buf2,r1
       
        ret
        
store_byte4:
        
        ld     remote_byte_buf3,r1
        ld     receive_end_flag,#01h
        
        ld     remote_repeat_start,#01h
        
        ret
        

;**********************************************
;******************************************************************
remote_deal_program:
        push  r3
        
        tm  receive_end_flag,#01h
        jp  z,remote_deal_end
        ld  receive_end_flag,#00h
        
        cp  remote_byte_buf0,#00h
        jp  ne,remote_deal_end
        
        cp  remote_byte_buf1,#6fh
        jp  ne,remote_deal_end
        
        tm  led_display_flag,#01H
        jr  nz,remote_deal_1                    
        
        ld  beep_flag,#01h
        ld led_display_flag,#01H
        jp  remote_deal_end
        
remote_deal_1:        
        ld led_display_flag,#01H
        ld led_15s_time1,#0
        ld led_15s_time2,#0
fire_on_off: 
        ld  r3,remote_byte_buf2 
        cp  r3,#09h
        jr  ne,fire_inc
        add r3,remote_byte_buf3
        cp  r3,#0ffh
        jr  ne,fire_inc
        call  remote_fire_control
        
fire_inc:        
        ld  r3,remote_byte_buf2 
        cp  r3,#06h
        jr  ne,fire_dec
        add r3,remote_byte_buf3
        cp  r3,#0ffh
        jr  ne,fire_dec
        call  remote_fire_inc
        
fire_dec:
        ld  r3,remote_byte_buf2 
        cp  r3,#08h
        jr  ne,temp_on_off
        add r3,remote_byte_buf3
        cp  r3,#0ffh
        jr  ne,temp_on_off
        call  remote_fire_dec

temp_on_off:
        ld  r3,remote_byte_buf2 
        cp  r3,#05h
        jr  ne,temp_inc
        add r3,remote_byte_buf3
        cp  r3,#0ffh
        jr  ne,temp_inc
        call  remote_temp_control
        
temp_inc:
        ld  r3,remote_byte_buf2 
        cp  r3,#00h
        jr  ne,temp_dec
        add r3,remote_byte_buf3
        cp  r3,#0ffh
        jr  ne,temp_dec
        call  remote_temp_inc

temp_dec:
        ld  r3,remote_byte_buf2 
        cp  r3,#0ah
        jr  ne,sound_control
        add r3,remote_byte_buf3
        cp  r3,#0ffh
        jr  ne,sound_control
        call  remote_temp_dec
        
sound_control:
        ld  r3,remote_byte_buf2 
        cp  r3,#01h
        jr  ne,lamp_control
        add r3,remote_byte_buf3
        cp  r3,#0ffh
        jr  ne,lamp_control
        call  remote_sound_control
        
lamp_control:
        ld  r3,remote_byte_buf2 
        cp  r3,#0ch
        jr  ne,remote_deal_end
        add r3,remote_byte_buf3
        cp  r3,#0ffh
        jr  ne,remote_deal_end
        call  remote_lamp_control
        
        
        

        
remote_deal_end:
        
        pop  r3
        ret
;*******************************************************************
remote_fire_control:
        
        tm fire_status,#01H              
        jr z,remote_fire_on  
        
remote_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  remote_fire_control_end
        

⌨️ 快捷键说明

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