Gast
#693597
habe folgendes programm geschrieben zur ausgabe einzelner zeichen per
USART!
das problem liegt nun darin, dass die zeichen nicht nur einmal
ausgegebne werden, sondern werden immer wiederholt! ????
das ganze sieht dann so "123ABC123ABC123ABC...." keine Ahnung weshalb
die zeichen immer wiederholt werden, sollten ja nur einmal eigentlich
ausgegeben werden, oder???? vieln dank für eure antworten!
#include <avr/io.h>
#include <avr/interrupt.h>
#define FOSC 14745600// Clock Speed
#define BAUD 2400
#define MYUBRR FOSC/16/BAUD-1
void USART_Init(unsigned int ubrr);
void USART_Transmit(unsigned char data);
unsigned char USART_Receive(void);
int main(void){
USART_Init(MYUBRR);
USART_Transmit('1');
USART_Transmit('2');
USART_Transmit('3');
USART_Transmit('A');
USART_Transmit('B');
USART_Transmit('C');
while(1);
return 0;
}
void USART_Init( unsigned int ubrr )
{
/* Set baud rate */
UBRR0H = (unsigned char)(ubrr>>8);
UBRR0L = (unsigned char)ubrr;
/* Enable transmitter */
UCSR0B = (1<<RXEN0)|(1<<TXEN0);
/* Set frame format: 8data, 1stop bit */
UCSR0C = (3<<UCSZ0);
}
void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSR0A & (1<<UDRE0)) );
/* Put data into buffer, sends the data */
UDR0 = data;
}
unsigned char USART_Receive(void)
{
/* Wait for data to be received */
while ( !( UCSR0A & (1<<RXC0)) );
/* Put data into buffer, sends the data */
return UDR0;
}