Gast
#626343
Hi all,
ich fange an, mein atmel mega16 zu programmieren, und versuche dieses
einfache programm, zu programmieren. aber es klappt bei der
zeicheneingabe net. weist jemand vielleicht woran es liegt.
------------------------------------------------------------------------
---
#define FOSC 3686400 // Clock Speed
#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1
#include <avr/io.h>
// USART initialisieren
void USART_Init(unsigned int ubrr)
{
/* Set baud rate */
UBRRH = (unsigned char) (ubrr >> 8);
UBRRL = (unsigned char) ubrr;
/* Enable receiver and transmitter */
UCSRB = (1 << RXEN) | (1 << TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1 << URSEL) | (1 << USBS) | (3 << UCSZ0);
}
// Zeichen senden
void USART_Transmit (unsigned char data)
{
/* Wait for empty transmit buffer */
while (! (UCSRA & (1 << UDRE) ) )
;
/* Put data into buffer, sends the data */
UDR = data;
}
// Zeichen empfangen
unsigned char USART_Receive (void)
{
/* Wait for data to be received */
while (! (UCSRA & (1 << RXC) ) )
;
/* Get and return received data from buffer */
return UDR;
}
int main (void)
{
// Parameter definieren
unsigned char temp;
// Schnittstelle Initialisierung
USART_Init (MYUBRR);
// Hauptprogramm
USART_Transmit ('>');
temp = USART_Receive ();
USART_Transmit (' ');
USART_Transmit (temp);
return 0;
}
------------------------------------------------------------------------
---