;
;          "automat.txt"  
;          
;     
;       
;      
;      
;     0-180   
;   /   
;  "/"
;  
;     EEPROM    
;  
;  a_flags.st_reg     
;      
;
;
;--------------------------------------------------------
;       
;     a_DT
;     
;    mt_didh:mt_didl
;       DS18B20
;    - 
;        
; 
;
meter_transf
     movlw 0x0F
     andwf mt_didh,f ;      
     movlw 0xF0
     andwf mt_didl,w ;   
     iorwf mt_didh,f
     swapf mt_didh,f ;     
                   ; (  )   mt_didh
     btfss mt_didh,7 ;     
     goto metr_inc ;     
     comf mt_didl,f
     incf mt_didl,f ;     
     movlw 0x0F
     andwf mt_didl,f
     btfss STATUS,Z ;       okrugl
     goto bit3_tst ;      bit3_tst
okrugl
     movf mt_didh,w ;    w
     goto metr_end ;   = 0,  mt_didh  mt_didl
                   ;   =0,5      mt_didh
                   ;   (  1 )
bit3_tst
     btfsc mt_didl,3 ;   0,5 - goto okrugl 
     goto okrugl ;  =>0,5   okrugl
      incf mt_didh,w ;     1
metr_end
     movwf mt_didl ;    mt_didl
     clrf mt_didh ;  mt_didh,f
     addlw r_base ;    
     movwf a_DT ;    a_DT
    return ;  mt_didl     
           ;   (        )
metr_inc
     btfsc mt_didl,3 ;    ( 0,5    )
      incf mt_didh,f ;  mt_didh   f
       movf mt_didh,w ;  mt_didh  w
       goto metr_end
;
;--------------------------------------------------------
;
user_transf
      bsf a_flags,a_tipr ;   
      movlw user_type
      call ee_rd ;   
      movwf temp
      btfss temp,a_tipr
      bcf a_flags,a_tipr ;    =0  a_flags.a_tipr=0
;                       
      movlw user_rtt
      call ee_rd ;      
      movwf a_CRTT
;                   a_CRTT
      movlw user_data
      call ee_rd ;   
      addlw r_base ;       
      movwf temp
      incf temp,w
      movwf a_UH
      decf temp,w
      movwf a_UL
      btfss a_flags,a_tipr
      goto cold_max
      decf a_UH,f
    return
cold_max
      incf a_UL,f
    return
;
;--------------------------------------------------------
;
auto_reg
       btfsc a_flags,er_stop
        goto alarm_error ;       
uh_kont
     movf a_UH,w
     subwf a_DT,w ; a_DT - a_UH
       btfss STATUS,C
        goto ul_kont ; for a_DT<a_UH goto ul_kont
uh_work              ; for a_DT=>a_UH goto uh_work
     btfss a_flags,a_tipr ;
      goto cold_low ; for a_flags.a_tipr=0 cold_low
hot_high
     btfsc a_flags,st_reg
     bcf a_flags,st_reg ;      a_flags.st_reg  0
     bsf GPIO,L_OUT ;    
   return
cold_low
       btfsc a_flags,tm_rt ;    
     return ;     
       bcf GPIO,L_OUT ;     
     return
;
ul_kont
     movf a_DT,w
     subwf a_UL,w ; a_UL - a_DT
       btfss STATUS,C
        goto moro_zone ; return ; for a_UL<a_DT<a_UH " "
ul_work              ; for a_UL=>a_DT goto ul_work
     btfss a_flags,a_tipr ;
      goto cold_high ; for a_flags.a_tipr=0 cold_high
hot_low
      bcf GPIO,L_OUT ;    
    return
cold_high
      btfsc a_flags,st_reg
      bcf a_flags,st_reg ;      a_flags.st_reg  0
      bsf GPIO,L_OUT ;     
ldrt                ;    
     btfsc a_flags,tm_rt
    return ;  ,     
      bsf a_flags,tm_rt ; a_flags.tm_rt=1
       movf a_CRTT,w ; ,   (0,44S*t_base)/60= N minut
       movwf a_cdrt ;   
    return
moro_zone              ; for a_UL<a_DT<a_UH " "
       btfsc a_flags,st_reg
       bcf GPIO,L_OUT ;  (  )
       ;       " 
     return
;
;
;
;-------------------------------------
;           
;
;    Er-L
proc_m_erd  ;    
     bsf a_flags,er_stop ;   
     movlw (1<<s_D | 1<<s_E | 1<<s_F) ; m_erd=1 error_L
     goto alarm_error
;
;-------------------------------------
;    Er-C
proc_crce   ;   CRC
      bsf a_flags,er_stop ;   
      movlw (1<<s_A | 1<<s_D | 1<<s_E | 1<<s_F) ; m_ecrc=1 error_CRC
alarm_error
      movwf scrap_page
       bsf GPIO,L_OUT ;     
;
;       
;       bsf GPIO,L_ErO ; L_ErO=1
;       BSF STATUS,RP0 ; set file register bank to 1
;       bcf TRISIO,L_ErO ; L_ErO for output pin (red led)
;       BCF STATUS,RP0 ; set file register bank to 0
;alarm_stop
;       goto alarm_stop ;     
;----------------------------------------------------
;
;        extdi2313
ld_erprint
       movlw (scrap_page+1)
       movwf FSR
       movlw mt_smi ; '-'
       movwf INDF
       incf FSR,f
       movlw (1<<s_G | 1<<s_E) ; 'r'
       movwf INDF
       incf FSR,f
       movlw (1<<s_A | 1<<s_D | 1<<s_E | 1<<s_F | 1<<s_G) ; E
       movwf INDF
       incf FSR,f
       movlw low low_bright
       movwf INDF
       incf FSR,f
       movlw high low_bright
       movwf INDF
       incf FSR,f
       clrf INDF
       call crcg_7
          movlw temp
          movwf FSR
          clrf temp
         call t_mk_trb
;
wait_rxd0a
       btfsc GPIO,L_ErO
       goto wait_rxd0a
wait_rxd1a
       btfss GPIO,L_ErO
       goto wait_rxd1a
      movlw scrap_page
      movwf FSR
       movf INDF,w ; 0
       call t_mk_trb
       incf FSR,f
       movf INDF,w ; 1
       call t_mk_trb
       incf FSR,f
       movf INDF,w ; 2
       call t_mk_trb
       incf FSR,f
       movf INDF,w ; 3
       call t_mk_trb
       incf FSR,f
       movf INDF,w ; 4
       call t_mk_trb
       incf FSR,f
       movf INDF,w ; 5
       call t_mk_trb
       incf FSR,f
       movf INDF,w ; 6
       call t_mk_trb
       incf FSR,f
       movf INDF,w ; 7
       call t_mk_trb
alarm_stop
       goto alarm_stop ;     
;
;--------------------------------------------------------
;