1 | #include <avr/io.h>
|
2 | #include <stdio.h>
|
3 |
|
4 | #define FOSC 16000000 //Quarzfrequenz
|
5 | #define BAUD0 9600 //Baudrate
|
6 | #define BAUD1 9600 //Baudrate
|
7 | #define MYUBRR0 FOSC/16/BAUD0-1 //Werte für UBRR Register serial 0
|
8 | #define MYUBRR1 FOSC/16/BAUD1-1 //Werte für UBRR Register serial 1
|
9 |
|
10 | #define BV(bit) (1<<(bit))
|
11 | #define cbi(reg, bit) reg&=~(BV(bit))
|
12 | #define sbi(reg, bit) reg|=(BV(bit))
|
13 |
|
14 |
|
15 | void USART0_Init( unsigned int ubrr )
|
16 | {
|
17 | //Baudrate setzen
|
18 | UBRR0H = (unsigned char)(ubrr>>8);
|
19 | UBRR0L = (unsigned char)ubrr;
|
20 |
|
21 | //Sender Empfänger aktivieren
|
22 | UCSR0B = (1<<RXEN0)|(1<<TXEN0);
|
23 |
|
24 | //Frame Format setzen: 8data, 1stop bit */
|
25 | UCSR0C = (0<<USBS0)|(1<<UCSZ01)|(1<<UCSZ00);
|
26 | }
|
27 |
|
28 | void USART1_Init( unsigned char ubrr )
|
29 | {
|
30 | //Baudrate setzen
|
31 | UBRR1H = (unsigned char)(ubrr>>8);
|
32 | UBRR1L = (unsigned char)ubrr;
|
33 |
|
34 | //Sender Empfänger aktivieren
|
35 | UCSR1B = (1<<RXEN1)|(1<<TXEN1);
|
36 |
|
37 | //Frame Format setzen: 8data, 2stop bit */
|
38 | UCSR1C = (1<<USBS1)|(1<<UCSZ11)|(1<<UCSZ10);
|
39 | }
|
40 |
|
41 | void USART0_Transmit( unsigned char data )
|
42 | {
|
43 | //warten bis Sendepuffer leer
|
44 | while ( !( UCSR0A & (1<<UDRE0)) );
|
45 |
|
46 | //Daten in Puffer und senden
|
47 | UDR0 = data;
|
48 | }
|
49 |
|
50 | void USART1_Transmit( unsigned char data )
|
51 | {
|
52 | //warten bis Sendepuffer leer
|
53 | while ( !( UCSR1A & (1<<UDRE1)) );
|
54 |
|
55 | //Daten in Puffer und senden
|
56 | UDR1 = data;
|
57 | }
|
58 |
|
59 | int main( void )
|
60 | {
|
61 | USART0_Init ( MYUBRR0 ); //USART initialisieren
|
62 | USART1_Init ( MYUBRR1 );
|
63 |
|
64 | USART0_Transmit( '\f' );
|
65 | USART0_Transmit( 'S' );
|
66 | USART0_Transmit( 'e' );
|
67 | USART0_Transmit( 'n' );
|
68 | USART0_Transmit( 's' );
|
69 | USART0_Transmit( 'o' );
|
70 | USART0_Transmit( 'r' );
|
71 | USART0_Transmit( '\r' );
|
72 | USART0_Transmit( '\n' );
|
73 |
|
74 | USART1_Transmit( 0x00 );
|
75 | USART1_Transmit( 0x5D );
|
76 | USART0_Transmit( UDR1 );
|
77 | USART0_Transmit( UDR1 );
|
78 | USART0_Transmit( UDR1 );
|
79 | USART0_Transmit( UDR1 );
|
80 | USART0_Transmit( UDR1 );
|
81 | USART0_Transmit( UDR1 );
|
82 | USART0_Transmit( UDR1 );
|
83 | USART0_Transmit( UDR1 );
|
84 |
|
85 | USART1_Transmit( 0x00 );
|
86 | USART1_Transmit( 0x54 );
|
87 | if (!((UCSR1A & (1 << RXC)) == 0))
|
88 | {
|
89 | USART0_Transmit( UDR1 );
|
90 | }
|
91 |
|
92 | return 0;
|
93 | }
|