;
;         "hard_uim.txt" ;   
;
;
MAIN_PROG       CODE

; these first 4 instructions are not required if the internal oscillator is not used
start
        call    0x3FF             ; retrieve factory calibration value
        bsf     STATUS,RP0        ; set file register bank to 1 
        movwf   OSCCAL            ; update register with factory cal value
        clrf ANSEL ;     
        bsf PIE1,TMR1IE ;   /1 
        bcf     STATUS,RP0        ; set file register bank to 0
;
     clrf PORTC ;    PORTC " "
     bsf     STATUS,RP0        ; set file register bank to 1
     clrf TRISC ; PORTC   ,      
     bcf     STATUS,RP0        ; set file register bank to 0
     movlw 7
     movwf CMCON ;  
     movlw b'00110100' ;    1:8   
     movwf T1CON ;  /1 
     clrf TMR1L
     clrf TMR1H
     bcf PIR1,TMR1IF ;   
     movlw (1<<GIE)|(1<<PEIE)
     movwf INTCON ;  
;     DS18B20
     movlw b'11111110'
     movwf PORTA
     bsf     STATUS,RP0        ; set file register bank to 1 
     movlw b'11111100'
     movwf TRISA
     bcf     STATUS,RP0        ; set file register bank to 0
     bcf port_m,L_APU ;  
; remaining code goes here

;        goto $
;
  call tst_strs
  nop
  nop
  nop
  call prepare
  call w_ksda
  bsf port_ksd,L_INH ;  
  bsf T1CON,TMR1ON ;   -
  nop
  nop
termotos
 call term_strt ;  
rept_tst
  btfss kd_flags,mark
  goto rept_tst
  bcf kd_flags,mark
rept_tst_1
  btfss kd_flags,mark
  goto rept_tst_1
  bcf kd_flags,mark
rept_tst_2
  btfss kd_flags,mark
  goto rept_tst_2
  bcf kd_flags,mark
 call m_rd9 ;  
 call m_crck ;   
  ;   CRC
 call manus ;   
 call kopy_am ;      
 call drift ;    
 bsf mt_flags,shot ;    
 call divider ;    - 
 bcf mt_flags,shot ;    
 call segmes ;  -        
  ;   
 call dabuf ;   
 call prepare ;      NJU6432BF/KS0035P
 call w_ksda ;    
rept_tst3
  btfss kd_flags,mark
  goto rept_tst3
  bcf kd_flags,mark
rept_tst4
  btfss kd_flags,mark
  goto rept_tst4
  bcf kd_flags,mark
rept_tst5
  btfss kd_flags,mark
  goto rept_tst5
  bcf kd_flags,mark
 goto termotos