; port functions PORT_INIT: ; port b 0-3 -> output ldi tmp1,0x0f out DDRB,tmp1 ; 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