arrrrgh!
[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 .equ    UART_BR_L       = 8
9
10 UART_INIT:
11
12         ; baudrate
13         ldi tmp1,UART_BR_H
14         out UBRRH,tmp1
15         ldi tmp1,UART_BR_L
16         out UBRRL,tmp1
17
18         ; enable
19         ldi tmp1,(1<<RXEN)|(1<<TXEN)
20         out UCSRB,tmp1
21
22         ; frame format -> 8n1
23         ldi tmp1,(1<<UCSZ0)|(1<<UCSZ1)
24         out UCSRC,tmp1
25
26         ret
27
28 UART_INT_RX_INIT:
29
30         in tmp1,UCSRB
31         sbr tmp1,(1<<RXCIE)
32         out UCSRB,tmp1
33
34         ret
35
36 UART_INT_TX_INIT:
37
38         in tmp1,UCSRB
39         sbr tmp1,(1<<TXCIE)
40         out UCSRB,tmp1
41
42         ret
43
44 UART_RX:
45
46         ; get/store received byte
47         sbis UCSRA,RXC
48                 rjmp UART_RX
49         in uart_rxtx,UDR
50
51         ret
52
53 UART_TX:
54
55         ; transmit content of uart_rxtx
56         sbis UCSRA,UDRE
57                 rjmp UART_TX
58         out UDR,uart_rxtx
59
60         ret
61