removed interrupt stuff, basic blink functionality after 2 days, spitze! :/
[my-code/atmel.git] / beginners / pld_stily.asm
index 53a7f9d..624773b 100644 (file)
@@ -4,62 +4,48 @@
 ; author: hackbard@hackdaworld.org
 ;
 
-.include "../include/2313def.inc"
-
-; ------------------
-; interrupt vectors:
-; ------------------
-; reset
-rjmp INIT
-; int0
-reti
-; int1
-reti
-; timer/counter capt 1
-reti
-; timer/counter compare
-reti
-; timer/counter overflow 1
-rjmp INC_LASER_COUNT
-; timer/counter overflow 0
-reti
-; uart rx complete
-reti
-; uart data register empty
-reti
-; uart tx complete
-reti
-; analog comparator
-reti
+.include "../include/m163def.inc"
 
 INIT:
-; set stackpointer
-ldi r16,low(RAMEND)
-out SPL,r16
-; timer 0 setting
-ldi r16, 3
-out TCCR1B, r16
-; timer 0 enable
-ldi r16, (1<<TOIE1)
-out TIMSK, r16
-; registers
-ldi r23,0
-ldi r24,0
-
-MAIN:
-rcall SET_FREQ ; read/set frequency from adc
-
-rjmp MAIN
-
-SET_FREQ:
-
-
-INC_LASER_COUNT:
-inc r23
-reti
-
-TOGGLE_LASER:
-inc r24
-reti
-
-
+ldi r30,0x00 ; light status
+ldi r28,1 ; constants
+ldi r27,0x01;
+out DDRC,r27 ; select pin 0 as output
+rjmp LIGHT
+
+LIGHT:
+cpi r30,0x00
+breq LIGHT_ON
+rjmp LIGHT_OFF
+
+LIGHT_ON:
+ldi r31,0 ; reset wait counter
+ldi r30,0x01
+out PORTC,r30
+rjmp WAIT
+
+LIGHT_OFF:
+ldi r31,0
+ldi r30,0x00
+out PORTC,r30
+rjmp WAIT
+
+WAIT:
+ldi r29,0 ; reset inner wait counter
+add r31,r28 ; increment wait counter
+cpi r31,0xff ; after 255 steps
+breq LIGHT
+rjmp WAIT_MORE
+
+WAIT_MORE:
+ldi r25,0 ; reset inner inner wait counter
+add r29,r28 ; increment inner wait loop counter
+cpi r29,0xff ; goto first wait loop after 255 cycles
+breq WAIT
+rjmp WAIT_MORE_MORE
+
+WAIT_MORE_MORE:
+add r25,r28 ; inc inner inner wait counter
+cpi r25,0x05 ; goto wait_more loop
+breq WAIT_MORE
+rjmp WAIT_MORE_MORE