X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=led_plex%2Fport.asm;h=f57bda919a0dd809fd7856ec5528a03998a16609;hb=32e3f51bc0f4248019379fe784d38c7fb770f952;hp=55e90e2ccf45c3355647a3aadc4fd63a307fc37c;hpb=87ef21d9eacec01abdbf3306dd2493aecf0b4afb;p=my-code%2Fatmel.git diff --git a/led_plex/port.asm b/led_plex/port.asm index 55e90e2..f57bda9 100644 --- a/led_plex/port.asm +++ b/led_plex/port.asm @@ -6,10 +6,20 @@ PORT_INIT: ldi tmp1,0x0f out DDRB,tmp1 - ; g, rck, sck -> low / scl -> high - ldi tmp1,0x07 - out PORTB,tmp1 - sbi PORTB,3 + ; disable hc595 outputs + sbi PORTB,0 + + ; rck -> low + cbi PORTB,1 + + ; clear hc595 registers + cbi PORTB,3 + + ; rck -> high (store shift register data) + sbi PORTB,1 + + ; enable outputs + cbi PORTB,0 ; port d 6 -> output sbi DDRD,6 @@ -17,12 +27,27 @@ PORT_INIT: ; ser -> low cbi PORTD,6 + ; port d 2 -> output (debug clk!) + sbi DDRD,2 + + ; port d 3 -> output (debug vertical!) + sbi DDRD,3 + + ; release hc595 register clear + sbi PORTB,3 + ret SET_HC595: ; storage clock -> low - cbi PORTD,1 + cbi PORTB,1 + + ; zero to everything ... + cbi PORTB,3 ; clear hc595 registers + sbi PORTB,1 ; store shift register data + cbi PORTB,1 ; release hc595 register clear + sbi PORTB,3 ; storage clock -> low ; source driver @@ -30,8 +55,14 @@ SET_HC595: cbi PORTB,2 ; set ser line cbi PORTD,6 - sbrc hc595_source,7 + sbrc hc595_source,0 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_source,0 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -39,8 +70,14 @@ SET_HC595: cbi PORTB,2 ; set ser line cbi PORTD,6 - sbrc hc595_source,6 + sbrc hc595_source,1 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_source,1 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -48,8 +85,14 @@ SET_HC595: cbi PORTB,2 ; set ser line cbi PORTD,6 - sbrc hc595_source,5 + sbrc hc595_source,2 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_source,2 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -57,8 +100,14 @@ SET_HC595: cbi PORTB,2 ; set ser line cbi PORTD,6 - sbrc hc595_source,4 + sbrc hc595_source,3 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_source,3 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -66,8 +115,14 @@ SET_HC595: cbi PORTB,2 ; set ser line cbi PORTD,6 - sbrc hc595_source,3 + sbrc hc595_source,4 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_source,4 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -75,8 +130,14 @@ SET_HC595: cbi PORTB,2 ; set ser line cbi PORTD,6 - sbrc hc595_source,2 + sbrc hc595_source,5 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_source,5 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -84,8 +145,14 @@ SET_HC595: cbi PORTB,2 ; set ser line cbi PORTD,6 - sbrc hc595_source,1 + sbrc hc595_source,6 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_source,6 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -93,8 +160,14 @@ SET_HC595: cbi PORTB,2 ; set ser line cbi PORTD,6 - sbrc hc595_source,0 + sbrc hc595_source,7 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_source,7 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -106,6 +179,12 @@ SET_HC595: cbi PORTD,6 sbrc hc595_sink,7 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_sink,7 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -115,6 +194,12 @@ SET_HC595: cbi PORTD,6 sbrc hc595_sink,6 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_sink,6 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -124,6 +209,12 @@ SET_HC595: cbi PORTD,6 sbrc hc595_sink,5 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_sink,5 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -133,6 +224,12 @@ SET_HC595: cbi PORTD,6 sbrc hc595_sink,4 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_sink,4 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -142,6 +239,12 @@ SET_HC595: cbi PORTD,6 sbrc hc595_sink,3 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_sink,3 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -151,6 +254,12 @@ SET_HC595: cbi PORTD,6 sbrc hc595_sink,2 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_sink,2 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -160,6 +269,12 @@ SET_HC595: cbi PORTD,6 sbrc hc595_sink,1 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_sink,1 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2 @@ -169,6 +284,12 @@ SET_HC595: cbi PORTD,6 sbrc hc595_sink,0 sbi PORTD,6 +.ifdef DEBUG_PORTS + ldi uart_rxtx,0x30 + sbrc hc595_sink,0 + ldi uart_rxtx,0x31 + rcall UART_TX +.endif ; clock -> high sbi PORTB,2