/*---------------------------------------------------------------------------- Copyright: Radig Ulrich mailto: mail@ulrichradig.de Author: Radig Ulrich Remarks: known Problems: none Version: 24.10.2007 Description: RS232 Routinen ----------------------------------------------------------------------------*/ #include #include "usart.h" volatile unsigned char buffercounter = 0; char usart_rx_buffer[BUFFER_SIZE]; char *rx_buffer_pointer_in = &usart_rx_buffer[0]; char *rx_buffer_pointer_out = &usart_rx_buffer[0]; //---------------------------------------------------------------------------- //Init serielle Schnittstelle void usart_init(unsigned int baudrate) { //Serielle Schnittstelle 1 //Enable TXEN im Register UCR TX-Data Enable UCR =(1 << TXEN | 1 << RXEN | 1<< RXCIE); // 0 = Parity Mode Disabled // 1 = Parity Mode Enabled, Even Parity // 2 = Parity Mode Enabled, Odd Parity //UCSRC = 0x06 + ((parity+1)<<4); //UCSRC |= (1<0) { str_null_buffer[0] = by; str_null_buffer[1] = '\0'; move = atoi(str_null_buffer); by = pgm_read_byte(Buffer++); } switch (by) { case 's': ptr = va_arg(ap,char *); while(*ptr) { usart_write_char(*ptr++); } break; case 'b': Base = 2; goto ConversionLoop; case 'c': //Int to char format_flag = va_arg(ap,int); usart_write_char (format_flag++); break; case 'i': Base = 10; goto ConversionLoop; case 'o': Base = 8; goto ConversionLoop; case 'x': Base = 16; //**************************** ConversionLoop: //**************************** itoa(va_arg(ap,int),str_buffer,Base); int b=0; while (str_buffer[b++] != 0){}; b--; if (b