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
Code:
/*
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){
}
}
Gruß Michi
[Edit] Da das Programm in einer Endlosschleife ist, wertet es kontinuierlich die Daten aus und zeigt das Ergebnis an [/Edit]
Lesezeichen