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
}
}
Lesezeichen