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

📄 fireplace.src.bak

📁 使用三星芯片的控制程序,可供三星8位MCU初学者参考!
💻 BAK
📖 第 1 页 / 共 4 页
字号:
        
        or  I2C_PORT,#I2C_SCL1  ;SCL=1
        nop
        nop
        
        and I2C_PORT,#I2C_SCL0  ;SCL=0
        nop
        nop
        
        and I2C_PORT,#I2C_SDA0  ;SDA=0
        nop
        nop
        
	ret        
;***********************************************

;***********************************************
I2C_cack:      
	
        or  I2C_PORT,#I2C_SDA1  ;SDA=1
        nop
        nop
        
        or  I2C_PORT,#I2C_SCL1  ;SCL=1
        nop
        nop
        
        ld  I2C_ack_flag,#00H
        ld   p2conh,#01001100b               ;set p2.4 inport
        nop
        nop
        
        tm  p2,#00010000B
        jr  nz,I2C_nocack
        ld  I2C_ack_flag,#01H
I2C_nocack:
        
        ld   p2conh,#01001111b                  ;set p2.4 outport
        nop
        nop
        
        and I2C_PORT,#I2C_SCL0  ;SCL=0
        nop 
        nop
                              
	ret        
;***********************************************

;***********************************************
WRbyte:
        ld  r0,#08H
wlp:
        rlc  I2C_wrdata
        jr   c,wr1
        jr   wr0
        
wr1:
       
        or  I2C_PORT,#I2C_SDA1  ;SDA=1       
        nop
        nop
        or  I2C_PORT,#I2C_SCL1  ;SCL=1
        nop
        nop
        
        and I2C_PORT,#I2C_SCL0  ;SCL=0
        nop
        nop
        
        jr  wlp1
        
wr0:
       
        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
        
        jr  wlp1

wlp1:
        sub  r0,#01H
        jr   nz,wlp
       
        ret
;***************************************************

;***************************************************
RDbyte:
        ld  r0,#08H
rlp:
        
        or  I2C_PORT,#I2C_SDA1  ;SDA=1
        nop
        nop
        
        or  I2C_PORT,#I2C_SCL1  ;SCL=1
        nop
        nop
        
        ld   p2conh,#01001100b               ;set p2.4 inport
        nop
        nop
       
        tm  I2C_PORT,#I2C_SDA1  ;SDA=0 ?
        jr  z,rd_0
        or I2C_rddata,#80H
        jr  rlp1
rd_0:   
        and  I2C_rddata,#7FH  
rlp1:
        ld   p2conh,#01001111b                  ;set p2.4 outport
        and I2C_PORT,#I2C_SCL0  ;SCL=0
        nop
        nop        
        rl  I2C_rddata 
         
        sub  r0,#01H
        jr   nz,rlp
        
        ret
;***************************************************

;***************************************************
WR_24C02:
        call  I2C_start
        ld  I2C_wrdata,#0A0H   ;write 24c02 dress
        call  WRbyte
        call  I2C_cack
        
        call  delay20us
;        tm  I2C_ack_flag,#01H
;        jr  z,exit_wr
        
        ld  I2C_wrdata,I2C_dress        ;write eeprom dress
        call  WRbyte
        call  I2C_cack
        
        call  delay20us
        
wrdata:
        ld  I2C_wrdata,I2C_data        ;write  data to 24C02
        call  WRbyte
        call  I2C_cack
        
        call  delay20us

exit_wr:
        call  I2C_stop
        
        ret        
;***************************************************

;***************************************************
RD_24C02:
        call  I2C_start
        ld  I2C_wrdata,#0A0H   ;write 24c02 dress A0H
        call  WRbyte
        call  I2C_cack
        
        call  delay20us
;        tm  I2C_ack_flag,#01H
;        jr  z,exit_rd
        
        ld  I2C_wrdata,I2C_dress        ;write eeprom dress
        call  WRbyte
        call  I2C_cack
        
        call  delay20us
        
        call  I2C_start
        ld  I2C_wrdata,#0A1H     ;read 24c02 dress A1H
        call  WRbyte
        call  I2C_cack
        
        call  delay20us
;        tm  I2C_ack_flag,#01H
;        jr  z,exit_rd
rddata:
        call  RDbyte
        ld  I2C_data,I2C_rddata ;save read data
        call  I2C_noask
        
        call  delay20us

exit_rd:
        call  I2C_stop
       
        ret  
;******************************************************

;******************************************************
restore:
        ld  I2C_dress,#lamp_status_dress
        call  RD_24C02
        ld  lamp_status,I2C_data
        call delay20ms
        
        ld  I2C_dress,#sound_status_dress
        call  RD_24C02
        ld  sound_status,I2C_data
        call delay20ms
        
        ld  I2C_dress,#fire_value_dress
        call  RD_24C02
        ld   fire_value,I2C_data
        call delay20ms
        
        ld  I2C_dress,#temp_value_dress
        call  RD_24C02
        ld  temp_value,I2C_data
        call delay20ms
        ret
;******************************************************
delay20us:
        push   r7
        ld     r7,#80h
delay20us_1
         dec   r7
         jr   nz,delay20us_1
         
         pop  r7
         ret
;******************************************************* 


;***************************************************************
AD_judge:

        tm      AD_convert_time,#01h
        jp      z,AD_judge_end
        ld      AD_convert_time,#00h
        
        
        call  AD_convert
        ld  ad_hdata_1,ad_hdata_back
        
        call  AD_convert
        ld  ad_hdata_2,ad_hdata_back
        
        call  AD_convert
        ld  ad_hdata_3,ad_hdata_back
        
        call  AD_convert
        ld  ad_hdata_4,ad_hdata_back
        
        call  AD_convert
        ld  ad_hdata_5,ad_hdata_back
        
        
        call    AD_Value_Middle
        
        
        ld  ad_hdata,ad_hdata_3
        
        cp  ad_hdata,#10
        jp  ult,temp_notconnect
        
        ld temp_sensor,#01h 
        
        ld  not_sensor_counter1,#0
        ld  not_sensor_counter2,#0
        
        tm  fire_status,#01h
        jr  z,AD_judge_3
        or p0,#10000000B                ;set p0.7 enble LIGHTS
        
AD_judge_1:
       
        tm  lamp_status,#01h
        jr  z,AD_judge_2
        call lamp_open
        
AD_judge_2: 
        
        tm  sound_status,#01h
        jr  z,AD_judge_3
        call sound_open      
                
AD_judge_3:  
        tm  temp_status,#01H
        jr  z,AD_judge_end
                   
        ld  r2,#0fh
        ld  r3,temp_value
        ldc r0,#30h[rr2]
        cp  ad_hdata,r0
        jr  ugt,temp_ad_off
        
        ld  r2,#0fh
        ld  r3,temp_value
        ldc r0,#40h[rr2]
        cp  ad_hdata,r0
        jr  ult,temp_ad_on
AD_judge_end:
        ret
;*************************************************************        
        
temp_ad_off:
        and p0,#0efh         ;clea p0.4   heater off      
        ret  
        
temp_ad_on:
        or  p0,#10h          ;set p0.4     heater on         
        ret

temp_notconnect:
        ld temp_sensor,#00h  
        call  sound_close 
        call  lamp_close
        and p0,#01111111B               ;clear p0.7 disenble LIGHTS
        and p0,#0efh                    ;clea p0.4   heater off
;        ld  beep_flag,#01h
        ret                          
;***************************************************************

;****************************************************************
AD_convert:
        ld  adcon,#00100101B   ;select P0.2  f=fosc/4  start convert
        call  delay2ms
        tm  adcon,#00001000B
        jr  z,ad_error
        ld  ad_hdata_back,addatah
        
        jr  ad_done
ad_error:
        ld  ad_hdata_back,#00H
        ld  ad_ldata,#00H
        
ad_done:
        
        ret
;*****************************************************************
;*****************************************************************
AD_Value_Middle:

        ld      ad_comp_cnt,#04h
AD_Value_Middle1:
        ld      ad_hdata_a,ad_hdata_1 
        ld      ad_hdata_b,ad_hdata_2
        call    compare_a_b
        ld      ad_hdata_1,ad_hdata_a
        ld      ad_hdata_2,ad_hdata_b
        
        ld      ad_hdata_a,ad_hdata_2 
        ld      ad_hdata_b,ad_hdata_3
        call    compare_a_b
        ld      ad_hdata_2,ad_hdata_a
        ld      ad_hdata_3,ad_hdata_b
        
        ld      ad_hdata_a,ad_hdata_3 
        ld      ad_hdata_b,ad_hdata_4
        call    compare_a_b
        ld      ad_hdata_3,ad_hdata_a
        ld      ad_hdata_4,ad_hdata_b
        
        ld      ad_hdata_a,ad_hdata_4 
        ld      ad_hdata_b,ad_hdata_5
        call    compare_a_b
        ld      ad_hdata_4,ad_hdata_a
        ld      ad_hdata_5,ad_hdata_b
        
        dec     ad_comp_cnt
        jp      nz,AD_Value_Middle1
        
        ret
        
        
        
        
;*****************************************************************
compare_a_b:
        ld      ad_hdata_temp,ad_hdata_a    
        sub     ad_hdata_a,ad_hdata_b
        jp      ult,a_low_b
a_big_b:   
        ld      ad_hdata_a,ad_hdata_b     
        ld      ad_hdata_b,ad_hdata_temp
        jp      compare_a_b_end

a_low_b: 
        ld      ad_hdata_a,ad_hdata_temp

compare_a_b_end:
        ret

;*****************************************************************
delay2ms:
        ld  r0,#20H
dalay_loop:
        dec r0
        ;nop        
        jr nz,dalay_loop
delay2ms_end:       
        ret
;********************************************************************  
;*********************************************************
motor_change:
        
        tm  fire_status,#01H
        jr  z,motor_change_end
        
        ld  r2,#0fh
        ld  r3,fire_value
        ldc r0,#70h[rr2]
        ld  motor_value,r0      
          
motor_change_end:
        ret
        
        

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

       .org     0f00h            ;temp_led q1  fire_led q2 
    db      11111111b            ;0
    db      11111111b            ;1
    db      11111111b            ;3
    db      01111111b            ;3
    db      00111111b            ;4
    db      00011111b            ;5
    db      00001111b            ;6   
    db      00000111b            ;7
    db      00000011b            ;8
    db      00000001b            ;9
    db      00000000b            ;a 
      
 
        .org     0f10h       ;temp_led q3
    db      11111111b            ;0
    db      11110111b            ;1
    db      11110011b            ;2
    db      11110011b            ;3
    db      11110011b            ;4    
    db      11110011b            ;5
    db      11110011b            ;6
    db      11110011b            ;7
    db      11110011b            ;8 
    db      11110011b            ;9
    db      11110011b            ;a 
    
        .org     0f20h       ;fire_led q3
    db      11111111b            ;0    
    db      11111101b            ;1
    db      11111100b            ;2
    db      11111100b            ;3
    db      11111100b            ;4    
    db      11111100b            ;5
    db      11111100b            ;6
    db      11111100b            ;7
    db      11111100b            ;8 
    db      11111100b            ;9
    db      11111100b            ;a 
    
       .org     0f30h            ;temp_value covert ad_value  to off heater
    db      0              ;0
    db      116            ;1
    db      121            ;2
    db      126            ;3
    db      131            ;4    
    db      136            ;5
    db      141            ;6
    db      145            ;7
    db      150            ;8 
    db      154            ;9
    db      159            ;a    
    
       .org     0f40h            ;temp_value covert ad_value  to start heater
    db      0              ;0   
    db      114            ;1
    db      119            ;2
    db      124            ;3
    db      129            ;4    
    db      134            ;5
    db      139            ;6
    db      143            ;7
    db      148            ;8 
    db      152            ;9
    db      157            ;a  


      .org     0f70h             ;fire_value covert motor value 
    db      26            ;0
    db      20            ;1
    db      18            ;2
    db      16            ;3
    db      13            ;4    
    db      11            ;5
    db      9             ;6
    db      8             ;7
    db      7             ;8 
    db      6             ;9
    db      0             ;a    


;**********************************************
       
         .end

⌨️ 快捷键说明

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