fbfbf3d9342ff655be3bf5dfbac3461ca1a5ef80
[my-code/atmel.git] / monolyzer / uart.asm
1 ; uart functions
2
3 ; default uart settings / 19.2k @ 8 mhz
4 ; ifndef UART_BR_H
5 .equ    UART_BR_H       = 0
6 ; ifndef UART_BR_L
7 .equ    UART_BR_L       = 25
8
9 UART_INIT:
10
11         ; baudrate
12         ldi tmp1,UART_BR_H
13         out UBRRH,tmp1
14         ldi tmp1,UART_BR_L
15         out UBRRL,tmp1
16
17         ; enable
18         ldi tmp1,(1<<RXEN)|(1<<TXEN)
19         out UCSRB,tmp1
20
21         ; frame format -> 8n1
22         ldi tmp1,(1<<UCSZ0)|(1<<UCSZ1)
23         out UCSRC,tmp1
24
25         ret
26
27 UART_INT_RX_INIT:
28
29         in tmp1,UCSRB
30         sbr tmp1,(1<<RXCIE)
31         out UCSRB,tmp1
32
33         ret
34
35 UART_INT_TX_INIT:
36
37         in tmp1,UCSRB
38         sbr tmp1,(1<<TXCIE)
39         out UCSRB,tmp1
40
41         ret
42
43 UART_RX:
44
45         ; get/store received byte
46         sbis UCSRA,RXC
47                 rjmp UART_RX
48         in uart_rxtx,UDR
49
50         ret
51
52 UART_TX:
53
54         ; transmit content of uart_rxtx
55         sbis UCSRA,UDRE
56                 rjmp UART_TX
57         out UDR,uart_rxtx
58
59         ret
60