+; uart functions
+
+; default uart settings / 19.2k @ 8 mhz
+; ifndef UART_BR_H
+.equ UART_BR_H = 0
+; ifndef UART_BR_L
+.equ UART_BR_L = 25
+
+UART_INIT:
+
+ ; baudrate
+ ldi tmp1,UART_BR_H
+ out UBRRH,tmp1
+ ldi tmp1,UART_BR_L
+ out UBRRL,tmp1
+
+ ; enable
+ ldi tmp1,(1<<RXEN)|(1<<TXEN)
+ out UCSRB,tmp1
+
+ ; frame format -> 8n1
+ ldi tmp1,(1<<UCSZ0)|(1<<UCSZ1)
+ out UCSRC,tmp1
+
+ ret
+
+UART_INT_RX_INIT:
+
+ in tmp1,UCSRB
+ sbr tmp1,(1<<RXCIE)
+ out UCSRB,tmp1
+
+ ret
+
+UART_INT_TX_INIT:
+
+ in tmp1,UCSRB
+ sbr tmp1,(1<<TXCIE)
+ out UCSRB,tmp1
+
+ ret
+
+UART_RX:
+
+ ; get/store received byte
+ sbis UCSRA,RXC
+ rjmp UART_RX
+ in uart_rxtx,UDR
+
+ ret
+
+UART_TX:
+
+ ; transmit content of uart_rxtx
+ sbis UCSRA,UDRE
+ rjmp UART_TX
+ out UDR,uart_rxtx
+
+ ret
+