uart changes for tiny2313, hc595 set routine, touch timer.asm, mods to main in order...
[my-code/atmel.git] / led_plex / port.asm
index 715a402..55e90e2 100644 (file)
@@ -7,15 +7,172 @@ PORT_INIT:
        out DDRB,tmp1
 
        ; g, rck, sck -> low / scl -> high
-       cbi PORTB,(1<<0)|(1<<1)|(1<<2)
-       sbi PORTB,(1<<3)
+       ldi tmp1,0x07
+       out PORTB,tmp1
+       sbi PORTB,3
 
        ; port d 6 -> output
-       ldi tmp1,(1<<6)
-       out DDRD,tmp1
+       sbi DDRD,6
 
        ; ser -> low
-       cbi PORTD,(1<<6)
+       cbi PORTD,6
 
        ret
 
+SET_HC595:
+
+       ; storage clock -> low
+       cbi PORTD,1
+
+       ; source driver
+
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_source,7
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_source,6
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_source,5
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_source,4
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_source,3
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_source,2
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_source,1
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_source,0
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+
+       ; sink driver
+       
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_sink,7
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+       
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_sink,6
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+       
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_sink,5
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+       
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_sink,4
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+       
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_sink,3
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+       
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_sink,2
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+       
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_sink,1
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+       
+       ; clock -> low
+       cbi PORTB,2
+       ; set ser line
+       cbi PORTD,6
+       sbrc hc595_sink,0
+       sbi PORTD,6
+       ; clock -> high
+       sbi PORTB,2
+       
+       ; store to storage register
+       sbi PORTB,1
+
+       ret