Empfangen
Wie sieht ein einfaches Programm zum Empfang serieller Daten auf dem ATmega32 aus?
|
rs232_empfangen.zip - Projekt zum nachfolgenden Programm.
#include<avr/io.h>
//Definition von Taktfrequenz und Bausrate als Konstanten
#define TAKTFREQUENZ 9216000
#define BAUDRATE 115200
int main()
{
unsigned char akku=0;
DDRA = 0b00000000;
DDRB = 0b00000000;
DDRD = 0b00000000;
DDRC = 0b11111111; //über RS232 gesendete Zahlen sollen auch an
//zweiten Mikrocontroller geschickt
//und angezeigt werden.
//Aktivieren der RS232-Schnittstelle des Mikrocontrollers:
//Merken des in UBRR zu speichernden Wertes.
unsigned int baudregister = TAKTFREQUENZ/8/BAUDRATE-1;
//setzen der Baudrate
UBRRH = (unsigned char) (baudregister>>8); //Setzen des HIGH-Bytes des Baudraten-Registers
UBRRL = (unsigned char) baudregister; //Setzen des LOW -Bytes des Baudraten-Registers
//Einschalten des Senders und des Empfängers
UCSRB = (1<<TXEN) | (1<<RXEN);
//Setzen des Nachrichtenformats: 8 Datenbits, 1 Stopbits
UCSRC = (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);
UCSRA = (1<<U2X);
//Es soll das zuletzt vom Hyperterminal empfangene ASCII-Zeichen
//dezimal angezeigt werden
while(1)
{
while( !(UCSRA & (1<<RXC)) ); //Warten bis der Uebertragungspuffer ein Zeichen empfangen hat
akku = UDR; //Zeichen aus dem Puffer holen
//...und anzeigen
PORTC = akku;
}
}
Code 0-1: ASCII-Zeichen vom Hyperterminal mit dem Mikrocontroller empfangen und anzeigen.