;
;      
;               hardsoft_ngt13.txt
;
;
		init:                    ;   
   ;     WDT
   wdr
   ldi tmp0,(1<<WDCE | 1<<WDE)
   ldi cnt0,(1<<WDE | 1<<WDP3) ; 4.0S
   wdr
   out WDTCR,tmp0
   out WDTCR,cnt0
      ;ldi tmpd,low (RAMEND)
      ;out spl,tmpd ;   
  ;     spl  low (RAMEND)    
      sbi acsr,acd ;  
      ;    , -   
      ; /WDT   /   "WDT  "
      ;       / 
 hard:
  in tmp0,MCUCR
  sbr tmp0,(1<<PUD)
  out MCUCR,tmp0 ;  ""
  ldi tmp0,(1<<PB5 | 1<<P_flame | 1<<P_valve_f | 1<<P_valve)
  out PORTB,tmp0
  ldi tmp0,(1<<P_ignits | 1<<P_valve_f | 1<<P_valve)
  out DDRB,tmp0
 soft:
  wdr
   tim0 15 ; ~1S
  wdr
 test_zz:
  sbis PINB,P_flame ;   
   rjmp drav_zz
 ignits_on:
  sbi PORTB,P_ignits
   tim0 5 ; ~0,5S
  wdr
 gas_on_forse:
  in tmp0,PORTB
  cbr tmp0,(1<<P_valve_f | 1<<P_valve)
  out PORTB,tmp0
   tim0 4 ; ~0,5S
  wdr
 disforse:
  sbi PORTB,P_valve_f
  wdr
  ldi cnt_wfl,16 ;     0,5 
 wait_flame:
    sbis PINB,P_flame
     rjmp wait_stable_flame ;    
    tim0 4
   wdr
   dec cnt_wfl
    brne wait_flame ;   
 restart_ignitions:
   wdr ;    8   
   sbi PORTB,P_valve ;   
    tim0 10
    wdr
   cbi PORTB,P_ignits ;  
   tim0 10
   wdr
   tim0 10 ;   `2 
   wdr
       ; cnt_ignits_error +/-1      (  )
    rjmp soft
wait_stable_flame:
   cbi PORTB,P_ignits ;  
 test_works:
   sbic PINB,P_flame
    rjmp error_works
    tim0 2
    wdr
    rjmp test_works
 error_works:     ;      
   sbi PORTB,P_valve ;   
   wdr
       ; cnt_works_error +/-1      (  )
 rjmp  restart_ignitions ;   -    
             ;     
;
 drav_zz:
  wdr
   sbi PORTB,P_ignits
   tim0 10 ; ~0,5S
   wdr
   cbi PORTB,P_ignits
   ;     
   ;        
   ;   
 stop:
  wdr
  rjmp stop ;  
;