increased wait
authorhackbard <hackbard>
Sun, 7 Dec 2003 22:11:14 +0000 (22:11 +0000)
committerhackbard <hackbard>
Sun, 7 Dec 2003 22:11:14 +0000 (22:11 +0000)
beginners/test_port_d.asm

index 0e31045..8dc6e44 100644 (file)
@@ -1,47 +1,55 @@
 .include "../include/2313def.inc"
 
 INIT:
 .include "../include/2313def.inc"
 
 INIT:
-ldi r31,0
-ldi r30,0
-ldi r29,0
-out DDRD,r29 ; select all pins as input
-jmp DECIDE
+ldi r31,0 ; wait counter
+ldi r30,0 ; decide counter
+ldi r29,0 ; another wait counter
+ldi r28,1 ; constant
+out DDRD,r30 ; select all pins as input
+rjmp DECIDE ; goto decide
 
 DECIDE:
 
 DECIDE:
-adiw r30,1
-cp r30,0
+add r30,r28 ; add 1 to decission counter .. so we start with SET_1
+cpi r30,0
 breq SET_0
 breq SET_0
-cp r30,1
+cpi r30,1
 breq SET_1
 breq SET_1
-cp r30,2
+cpi r30,2
 breq SET_2
 breq SET_2
-ldi r30,0
-jmp DECIDE
+ldi r30,0 ; now begin with SET_0
+rjmp DECIDE
 
 SET_0:
 ldi r16,0
 
 SET_0:
 ldi r16,0
-sbr r16,14
+sbr r16,14 ; ports 3,4,5
 out PORTD,r16
 out PORTD,r16
-jmp WAIT
+rjmp WAIT
  
 SET_1:
 ldi r16,0
  
 SET_1:
 ldi r16,0
-sbr r16,48
+sbr r16,48 ; ports 6,7
 out PORTD,r16
 out PORTD,r16
-jmp WAIT
+rjmp WAIT
 
 SET_2:
 ldi r16,0
 
 SET_2:
 ldi r16,0
-sbr r16,42
+sbr r16,42 ; ports 3,5,7
 out PORTD,r16
 out PORTD,r16
-jmp WAIT
+rjmp WAIT
 
 WAIT:
 
 WAIT:
-adiw r31,1
-cpi r31,0xff
-breq RESET
-jmp WAIT
+ldi r29,0 ; reset inner wait counter
+add r31,r28 ; increment wait counter
+cpi r31,0xff ; after 255 steps
+breq RESET ; reset wait counter
+rjmp WAIT_MORE
+
+WAIT_MORE:
+add r29,r28 ; increment inner wait loop counter
+cpi r29,0xff ; goto first wait loop after 255 cycles
+breq WAIT
+rjmp WAIT_MORE
 
 RESET:
 ldi r31,0
 
 RESET:
 ldi r31,0
-jmp DECIDE
+rjmp DECIDE