.include "2313def.inc"
.dseg
.def temp=r30
.def temp1=r29

.cseg
  
; init 
  ldi r30,15
  out ddrb,r30

  ldi r30,15
  out portd,r30
  
  ldi r30,ramend
  out spl,r30

  cbi ddrd,4
  cbi portd,4
  sbi ddrd,5
  cbi portd,5

  sbi portb,0 ; forward
  sbi portb,2

start:
  
  ldi r28,2
  rcall s_wait

; distance sensor

  ldi temp1,10
ds00:		
  cbi portd,5
  ldi temp,19
dsdelay12:
  dec temp
  brne dsdelay12

  sbi portd,5
  ldi temp,19 
dsdelay22:
  dec temp 
  brne dsdelay22
  dec temp1
  brne ds00

  
; on-off
  sbic pind,4 
rjmp onn ;off
  cbi portb,0 ; motor off
  cbi portb,2
  ldi r28,5   ; pause for full stop
  rcall s_wait
  sbi portb,1 ; one motor rear
  ldi r28,6
  rcall s_wait 
  cbi portb,1 ; one motor stop
  ldi r28,5   ;pause for full stop
  rcall s_wait 
rjmp start  

onn:
  sbi portb,0 ; forward
  sbi portb,2
rjmp start
   
;----------------
s_wait:

s_wait1:

  ldi r27,$ff
s_wait2:

  ldi r26,$ff

s_wait3:
  dec r26
  nop
  nop
  nop
  cpi r26,0
  brne s_wait3

  dec r27
  cpi r27,0
  brne s_wait2

  dec r28
  cpi r28,0
  brne s_wait1
  ret

.exit

