should work now, of course it does not!
[my-code/atmel.git] / hdw-tank / uart.asm
index 1ca82e0..bb189da 100644 (file)
@@ -1,36 +1,60 @@
 ; uart functions
 
+; default uart settings
+; infdef UART_BR_H
+.equ   UART_BR_H       = 0
+; infdef UART_BR_L
+.equ   UART_BR_L       = 25
+
 UART_INIT:
 
        ; baudrate
-       ldi tmp,
-       out UBRRH,tmp
-       ldi tmp,
-       out UBRRL,tmp
+       ldi uart_rxtx,UART_BR_H
+       sts UBRR0H,uart_rxtx
+       ldi uart_rxtx,UART_BR_L
+       out UBRR0L,uart_rxtx
 
        ; enable
-       ldi tmp,(1<<RXEN)|(1<<TXEN)
-       out UCSRB,tmp
+       ldi uart_rxtx,(1<<RXEN)|(1<<TXEN)
+       out UCSR0B,uart_rxtx
+
+       ; frame format -> 8n1
+       ldi uart_rxtx,(1<<UCSZ00)|(1<<UCSZ01)
+       sts UCSR0C,uart_rxtx
+
+       ret
+
+UART_INT_RX_INIT:
+
+       in uart_rxtx,UCSR0B
+       sbr uart_rxtx,(1<<RXCIE0)
+       out UCSR0B,uart_rxtx
+
+       ret
+
+UART_INT_TX_INIT:
 
-       ; frame format
+       in uart_rxtx,UCSR0B
+       sbr uart_rxtx,(1<<TXCIE0)
+       out UCSR0B,uart_rxtx
 
        ret
 
 UART_RX:
 
        ; get/store received byte
-       sbis UCSRA,RXC
+       sbis UCSR0A,RXC0
                rjmp UART_RX
-       in tmp,UDR0
+       in uart_rxtx,UDR0
 
        ret
 
 UART_TX:
 
-       ; transmit content of tmp
-       sbis UCSRA,UDRE
+       ; transmit content of uart_rxtx
+       sbis UCSR0A,TXC0
                rjmp UART_TX
-       out UDR0,tmp
+       out UDR0,uart_rxtx
 
        ret