Hi,
hier mal ein Testprogramm. Ich hab zwei Leds an den Ports Portc2 und Portc3. Du kannst au ne andere Auswertung machen anstelle des An- und Ausschaltens der Leds. Bei mir läuft's mit HTerm, AVRTem usw...
Einstellungen: Baudrate: 9600, Databits: 8, Stopbits: 1, Parity: None
Gruß MichiCode:/* Testprogramm: Wartet auf Daten, wertet sie aus und gibt anschließend das Ergebnis mittels zwei LEDs an Portc 2 und 3 aus. Autor: Michael Datum: 18.08.06 */ //Header einbinden #include <avr/io.h> #include <avr/interrupt.h> #include <avr/signal.h> //Takt einstellen #define F_CPU 16000000 //Baudrate angeben #define USART_BAUD_RATE 9600 //Buadrate ausrechnen #define USART_BAUD_SELECT (F_CPU/(USART_BAUD_RATE*16l)-1) //Variable für den Empfang anlegen volatile char zeichen; //Methode zum initialisieren void init(){ //Empfangsbit setzen UCSRB |= (1<<RXEN); //Empfangsinterrupt setzen UCSRB |= (1<<RXCIE); //Ausgerechneter Baudratewert ins Register schreiben UBRRL = (unsigned char) USART_BAUD_SELECT; DDRC = 0xFF; } SIGNAL(SIG_UART_RECV){ //Empfangsbuffer auslesen zeichen = UDR; //Irgendwas mit dem empfangenen Zeichen anstellen //Hier ein Vergleich: if(zeichen == 'a'){ PORTC = (1<<PC2); } else{ PORTC = (1<<PC3); } } int main(void){ //Global Interrupts aktivieren sei(); //Initialisierungmethode aufrufen init(); //Endlosschleife while(1){ } }
[Edit] Da das Programm in einer Endlosschleife ist, wertet es kontinuierlich die Daten aus und zeigt das Ergebnis an [/Edit]







Zitieren

Lesezeichen