hallo.
ich habe mein programm, welches tastendrücke bis 7 zählen und dann binär auf leds ausgeben soll (dies funktioniert ), jetzt um UART-ansteuerung erweitert. jetzt soll es beim zählvorgang bzw. beim betätigen des tasters "Eins", "Zwei", "Drei" u.s.w. zu HyperTerminal ausgeben. es funktioniert leider nicht. leute könnt ihr mir helfen. ach noch was was muss man bei HyperTerminal alles einstellen oder gibt es eine bessere alternative. ich hatte baudrate:9600, datenbits:8, parität:keine, stopbits:1, .

hier mein code:

Code:
#include <inttypes.h>
#include <avr/io.h>
#include <avr/delay.h> // definiert _delay_ms()
#include <stdint.h>
#ifndef F_CPU
#define F_CPU 8000000           /* Oszillator-Frequenz in Hz */
#endif
#define UART_BAUD_RATE 9600
#define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC) ((F_CPU)/((UART_BAUD_RATE)*16L)-1)

int main(void)
{

DDRD=0x00;// defeniert portD als Eingänge
DDRB=0x07;// defeniert portB0 bis portB2 als Ausgänge

PORTD=0x04;// bit 2 auf portD wird gesetzt PullUp
int i=0; // Definition der Laufvariable

UCSRB |= (1<<TXEN);			//UART TX einschalten
UCSRC |= (1<<URSEL)|(3<<UCSZ0);	//Asynchron 8N1
UBRRH=(uint8_t)(UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)>>8);
UBRRL=(uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0); // Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit 


while(1){

if(!(PIND & (1<<PIND2))){  // Abfrage von pinD2  ob da eine 0 anliegt bzw. pinD2 wird mit dem Taster auf masse gezogen d.h. Taster wurde betätigt 
    _delay_ms(100); // Tastenentprellung
   if((PIND & (1<<PIND2))){ // Abfrage von pinD2  ob da eine 1 anliegt bzw. Taster losgelassen wurde 
    _delay_ms(100);// Zeit zum Loslassen
	i=i+1; //Zählvorgang
   }
}

if(i==0){ // wenn i=0 ist soll
PORTB=0x00; // an portB nichts ausgegeben werden
}
if(i==1){ // wenn i=1 ist soll
PORTB=0x01;// an portB0 eine eins ausgegeben werden
while (!(UCSRA & (1<<UDRE))); //warten bis Senden möglich   
printf("%s: stdout Eins___\n");
}
if(i==2){ // wenn i=2 ist soll
PORTB=0x02; // an portB1 eine eins ausgegeben werden
while (!(UCSRA & (1<<UDRE))); //warten bis Senden möglich   
printf("%s: stdout Zwei___\n");
}
if(i==3){ // wenn i=3 ist soll
PORTB=0x03; // an portB1 und portB0 eine eins ausgegeben werden
while (!(UCSRA & (1<<UDRE))); //warten bis Senden möglich   
printf("%s: stdout Drei___\n");
}
if(i==4){ // und
PORTB=0x04;
while (!(UCSRA & (1<<UDRE))); //warten bis Senden möglich   
printf("%s: stdout Vier___\n");
}
if(i==5){ //so 
PORTB=0x05;
while (!(UCSRA & (1<<UDRE))); //warten bis Senden möglich   
printf("%s: stdout Fünf___\n");
}
if(i==6){ //weiter
PORTB=0x06;
while (!(UCSRA & (1<<UDRE))); //warten bis Senden möglich   
printf("%s: stdout Sechs___\n");
}
if(i==7){
PORTB=0x07;
while (!(UCSRA & (1<<UDRE))); //warten bis Senden möglich   
printf("%s: stdout Sieben___\n");
}
if(i==8){ //wenn i=8 ist
i=0;      // i 0 setzen
}
}
}
( Codetag eingebaut, damit werden auch die Smilies wieder zu 8ten, Kjion [Moderator])