should work now, of course it does not!
[my-code/atmel.git] / hdw-tank / uart.asm
1 ; uart functions
2
3 ; default uart settings
4 ; infdef UART_BR_H
5 .equ    UART_BR_H       = 0
6 ; infdef UART_BR_L
7 .equ    UART_BR_L       = 25
8
9 UART_INIT:
10
11         ; baudrate
12         ldi uart_rxtx,UART_BR_H
13         sts UBRR0H,uart_rxtx
14         ldi uart_rxtx,UART_BR_L
15         out UBRR0L,uart_rxtx
16
17         ; enable
18         ldi uart_rxtx,(1<<RXEN)|(1<<TXEN)
19         out UCSR0B,uart_rxtx
20
21         ; frame format -> 8n1
22         ldi uart_rxtx,(1<<UCSZ00)|(1<<UCSZ01)
23         sts UCSR0C,uart_rxtx
24
25         ret
26
27 UART_INT_RX_INIT:
28
29         in uart_rxtx,UCSR0B
30         sbr uart_rxtx,(1<<RXCIE0)
31         out UCSR0B,uart_rxtx
32
33         ret
34
35 UART_INT_TX_INIT:
36
37         in uart_rxtx,UCSR0B
38         sbr uart_rxtx,(1<<TXCIE0)
39         out UCSR0B,uart_rxtx
40
41         ret
42
43 UART_RX:
44
45         ; get/store received byte
46         sbis UCSR0A,RXC0
47                 rjmp UART_RX
48         in uart_rxtx,UDR0
49
50         ret
51
52 UART_TX:
53
54         ; transmit content of uart_rxtx
55         sbis UCSR0A,TXC0
56                 rjmp UART_TX
57         out UDR0,uart_rxtx
58
59         ret
60