.include "../include/2313def.inc" INIT: 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: add r30,r28 ; add 1 to decission counter .. so we start with SET_1 cpi r30,0 breq SET_0 cpi r30,1 breq SET_1 cpi r30,2 breq SET_2 ldi r30,0 ; now begin with SET_0 rjmp DECIDE SET_0: ldi r16,0 sbr r16,14 ; ports 3,4,5 out PORTD,r16 rjmp WAIT SET_1: ldi r16,0 sbr r16,48 ; ports 6,7 out PORTD,r16 rjmp WAIT SET_2: ldi r16,0 sbr r16,42 ; ports 3,5,7 out PORTD,r16 rjmp WAIT 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 rjmp DECIDE