GLOBDEF.C: //************************************************************************** // UART Buffer Defines //************************************************************************** #define USART_RX_BUFFER_SIZE 32 // 2,4,8,16,32,64,128 or 256 bytes #define USART_TX_BUFFER_SIZE 8 // 2,4,8,16,32,64,128 or 256 bytes //************************************************************************** // Globale Variablen //************************************************************************** static unsigned char USART_TxBuf[USART_TX_BUFFER_SIZE]; static unsigned char USART_RxBuf[USART_RX_BUFFER_SIZE]; static unsigned char *ReceivePtr = &USART_RxBuf[0]; static unsigned char *RxTailPtr = &USART_RxBuf[0]; static unsigned char *RxHeadPtr = &USART_RxBuf[0]; static unsigned char *TransmitPtr = &USART_TxBuf[0]; static unsigned char *TxTailPtr = &USART_TxBuf[0]; static unsigned char *TxHeadPtr = &USART_TxBuf[0]; static unsigned char *Parser = &USART_RxBuf[0]; main.c: //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //@INCLUDES //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #include #include //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //@INCLUDE Prototypes //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #include "Glodef.c" #include "Port_Init.h" #include "USART_Init.h" #include "Receive_USART.h" #include "Transmit_USART.h" #include "SyntaxParser.h" #include "main.h" //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //@GLOBAL VARIABLES //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ extern unsigned char USART_TxBuf[]; extern unsigned char USART_RxBuf[]; extern unsigned char *ReceivePtr; extern unsigned char *TailPtr; extern unsigned char *HeadPtr; //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //@HAUPTPROGRAMM //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ void main(void) { Port_Init(); //Port Initialization USART_Init(25); //Set to 384000kps(16,000MHz Osz.) /*Enable Interrupts for USART Interrupt*/ _SEI(); // ++++ main programm ++++ while(1) { while (USART_Receive() == 0x0D) //Warte bis Returntaste gedrückt wurde { Pars(); //Parse Syntax } } } Receive_USART.c #define ENABLE_BIT_DEFINTIONS /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Includes ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ #include #include "Glodef.c" #include "Receive_USART.h" #pragma vector=USART_RXC_vect //USART RX Interruptroutine __interrupt void USART0_RX_interrupt( void ) { unsigned char data; extern unsigned char USART_RxBuf[]; extern unsigned char *ReceivePtr; extern unsigned char *RxTailPtr; extern unsigned char *RxHeadPtr; data=UDR; //Read incoming data *RxHeadPtr=data; // Store received data RxHeadPtr++; if(RxHeadPtr == &USART_RxBuf[32]) { //Error --->Overflow } } //Send received data unsigned char USART_Receive( void ) { unsigned char send; extern unsigned char USART_RxBuf[]; extern unsigned char *ReceivePtr; extern unsigned char *RxTailPtr; extern unsigned char *RxHeadPtr; while ( RxHeadPtr == RxTailPtr ); // Wait for incomming data RxTailPtr++; send=*ReceivePtr++; // Store new index return send; // Return data } Receive_USART.h #ifndef __RECEIVE_USART_H #define __RECEIVE_USART_H unsigned char USART_Receive( void ); #endif