X-Git-Url: https://hackdaworld.org/gitweb/?p=my-code%2Fatmel.git;a=blobdiff_plain;f=led_plex%2Fport.asm;fp=led_plex%2Fport.asm;h=55e90e2ccf45c3355647a3aadc4fd63a307fc37c;hp=715a40280ae80e435a594a24402685748a5ea3fb;hb=87ef21d9eacec01abdbf3306dd2493aecf0b4afb;hpb=28f8496b45653e6db6fb3d3863f546a4b1a8b042 diff --git a/led_plex/port.asm b/led_plex/port.asm index 715a402..55e90e2 100644 --- a/led_plex/port.asm +++ b/led_plex/port.asm @@ -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