es spielt eigentlich keine rolle ob disp_text() oder sonst eine Sendeaufgabe...
hier der disp_text() code und die UART initialisierung und senderoutine:
Code:void UART0_init(long int baudrate, long int quarzfrequenz) { int baudwert; baudwert = (quarzfrequenz/(baudrate*16))-1; UBRR0H = (baudwert>>8); UBRR0L = baudwert; UCSR0B = (1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0); UCSR0C = (1<<UCSZ01)|(1<<UCSZ00); } void UART0_send_char(char c0) { if(c0=='ü'||'ä'||'ö'||'Ü'||'Ä'||'Ö') // Falls das zu sendende Zeichen ein Umlaut { // wird der richtige Charaker zugeordnet switch(c0) { case 'ü': c0=129; break; case 'ä': c0=132; break; case 'ö': c0=148; break; case 'Ü': c0=154; break; case 'Ä': c0=142; break; case 'Ö': c0=153; break; default: break; } } while((PIND&0x02)==0x02); // Warten bis das Display bereit ist while ( !( UCSR0A & (1<<UDRE0)) ); // Warten bis der Sender bereit ist UDR0=c0; // Zeichen senden } /**************************************************************************************** * orientation: h=horizontal, v=vertikal * * position: l=linksbündig, c=zentriert, r=rechtsbündig * ****************************************************************************************/ void disp_text(char orientation, char position, int x, int y, char *text) { UART0_send_char(27); UART0_send_char('z'); if(orientation=='v') { switch(position) { case 'l': UART0_send_char('o'); break; case 'c': UART0_send_char('m'); break; case 'r': UART0_send_char('u'); break; default: UART0_send_char('o'); break; } } else { switch(position) { case 'l': UART0_send_char('l'); break; case 'c': UART0_send_char('z'); break; case 'r': UART0_send_char('r'); break; default: UART0_send_char('l'); break; } } UART0_send_char(x); UART0_send_char(y); UART0_send_string(text); UART0_send_char(0); }







Zitieren

Lesezeichen