void USART_init()
{
/* Set baud rate */
UBRRH=(uint8_t)(UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)>>8);
UBRRL=(uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
USART_send_string("Blindentapete DEBUG Information");
...
}
void USART_send_string(char *s)
{
while (*s)
{ /* so lange *s != ‘\0’ also ungleich dem "Sting-Endezeichen" */
USART_send_char(*s);
s++;
}
}
void mp3stick_init(){
//push play button
position = 1;
track[0][0] = 1;
track[0][1] = 2;

....

track[7][7] =64;
DDRD |= (1<<PD3)|(1<<PD4)|(1<<PD5)|(1<<PD7);
PORTD = 0;
USART_send_string("MP3STICK READY");
}

void check_for_pressed_button(){
DDRC=255;
DDRA=255;
PORTC = 255;
PORTA = 0;
DDRB |= (1<<0);
DDRB |= (1<<1);
DDRB |= (1<<2);
DDRB |= (1<<3);
uint8_t zeile, spalte;
for (zeile = 0; zeile <= 7; zeile++) {
//Zeile umschalten
switch (zeile) {
case 0: PORTC = (1<<0);
break;
case 1: PORTC = (1<<1);
break;
case 2: PORTB = (1<<3);
break;
case 3: PORTB = (1<<2);
break;
case 4: PORTB = (1<<1);
break;
case 5: PORTB = (1<<0);
break;
case 6: PORTC = (1<<6);
break;
case 7: PORTC = (1<<7);
break;
}
for(spalte = 0; spalte <=7; spalte++) {
//for(i=0; i <= 1000; i++);
if (PINA & (1<<spalte)) {
if (ONLINE)
USART_send_char(track[zeile][spalte]);
else mp3stick_playtrack(zeile, spalte);
}
if(DEBUG) {
USART_send_string("Pruefe Taster #");
USART_send_char(16);
USART_send_char(zeile+48);
USART_send_char(‘,’);
USART_send_char(spalte+48);
USART_send_string(" ");
}
}
switch (zeile) {
case 0: PORTC &= ~(1<<0);
break;
case 1: PORTC &= ~(1<<1);
break;
case 2: PORTB &= ~(1<<3);
break;
case 3: PORTB &= ~(1<<2);
break;
case 4: PORTB &= ~(1<<1);
break;
case 5: PORTB &= ~(1<<0);
break;
case 6: PORTC &= ~(1<<6);
break;
case 7: PORTC &= ~(1<<7);
break;
}
}
}

void mp3stick_playtrack(uint8_t spalte, uint8_t zeile) {
//uint8_t taster = (spalte+1)+(zeile*8);
while (track[spalte][zeile]!=position) {
if (track[spalte][zeile]>position) mp3stick_ff();
else mp3stick_rw();
itoa(position, position_string, 10);
USART_send_string(position_string); }
if (position == track[spalte][zeile] ) {
mp3stick_pp();
mp3stick_pp();