Danke! Sieht gut aus, ob es geht konnte ich noch nicht testen, denke aber schon. Wäre aber gut wenn u es als Quelltext postest, dann kann man gleich rein schaun! EInfach hier rein kopieren, markieren und dann CODE-Button klicken
So:
Code:/* Testprogramm 2 Aufgabe: Testen vom MAX232 und RS232 Schnittstelle indem das Wort Hallo und eine Zahl an die RS232 sendet! Unter Windows kann man das mit dem Hyperterminal anzeigen lassen (9600 Baud einstellen) Noch einfacher kann man es anzeigen, wenn man in der Bascom Entwicklungsumgebung unter Tools TERMINAL EMULATOR aufruft (oder Modem Symbol klickt) Chip Mega 16 Takt 8.00 MHz Stand: läuft Größe 396 Byte Version 1.0 Verfasser: Dino Dieter */ #include <avr/io.h> #include <stdlib.h> //Deklaration der Funktionen void putc(char c); //Ausgabe eines Zeichen über RS232 void puts(char *s ); //Ausgabe eines Strings über RS232 void init(void); //Einstellen der Hardware des uC // Baudrate berechen zum einstellen des UART. Lassen wir vom Complier berechnen #define F_CPU 8000000 /* 8.000 */ #define UART_BAUD_RATE 9600 /* 9600 baud */ #define UART_BAUD_SELECT (uint)(F_CPU/(UART_BAUD_RATE*16l)-1) //Definition einiger Datentypen, reine Geschmacksache #define uchar unsigned char // 1 Byte ohne Vorzeichen 0 bis 255 erlaubt #define uint unsigned int // 2 Byte ohne Vorzeichen 0 bis 65535 erlaubt // Sendet ein Zeichen über die UART Schnittstelle (RS232) +++++++++++++++++++++ void putc(char c) { while( (UCSRA & 1<<UDRE) == 0 ); //warten, bis UDR leer ist UDR = c; //und ausgeben, den Rest macht der uC alleine } //Sendet einen String über die UART Schnittstelle (RS232) +++++++++++++++++++++ void puts(char *s ) { while( *s ) //Schleife solange wiederholen bis 0 kommt. Strings in //C werden immer mit einer 0 abgeschlossen. putc( *s++ ); //ein Zeichen ausgeben und nächste Zeichen einstellen } //Einstellen der Hardware des AVR +++++++++++++++++++++++++++++++++++++++++++++ void init(void) { // UART einstellen UCSRB = (1<<TXEN); // Senden erlauben //Baud rate einstellen für 9600 BAUD bei 8 MHz UBRRH = UART_BAUD_SELECT >> 8; // oberen 4 Bits schreiben UBRRL = UART_BAUD_SELECT; // unteren 8 Bits schreiben } //Hauptprogramm, hier startet der uC ++++++++++++++++++++++++++++++++++++++++++ void main (void) { init(); // Hardware einstellen gehen uint i; // Variable bekannt machen uchar s[10]; // Variable für itoa, zum umrechnen einer INT in einen String for(;;) // Endlosschleife { itoa( i, s, 10 ); // i umrechen in String für die Ausgabe. Ergebnis steht // dann in s. puts("Hallo "); // Text senden puts(s); // Zahlen ausgeben puts( "\n\r" ); // Zeilenumbruch senden -- >> neue Zeile i++; // i um 1 erhöhen. i++ --> i = i + 1 } }







Zitieren

Lesezeichen