X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=led_plex%2Fport.asm;h=55e90e2ccf45c3355647a3aadc4fd63a307fc37c;hb=87ef21d9eacec01abdbf3306dd2493aecf0b4afb;hp=aeb40f1670d7d45916e36adba3c6b0362c573a7d;hpb=df18c58bb7a380fd036a88b23282eeb19a1c42a5;p=my-code%2Fatmel.git diff --git a/led_plex/port.asm b/led_plex/port.asm index aeb40f1..55e90e2 100644 --- a/led_plex/port.asm +++ b/led_plex/port.asm @@ -1,14 +1,178 @@ ; port functions -GIO_PORT_INIT: +PORT_INIT: - ; port b 0-2 -> output - ldi tmp1,0x06 + ; port b 0-3 -> output + ldi tmp1,0x0f out DDRB,tmp1 - ; zero outputs - ldi tmp1,0x00 + ; g, rck, sck -> low / scl -> high + ldi tmp1,0x07 out PORTB,tmp1 + sbi PORTB,3 + + ; port d 6 -> output + sbi DDRD,6 + + ; ser -> low + 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