#include #include #include #include #include #include #define FOSC 8000000 // Clock Speed #define BAUD 115200UL // calcul du Baudrate: #define UBRR_VAL ((FOSC+BAUD*8)/(BAUD*16)-1) // clever runden #define usart_buffer_size 100 /****************************************************/ /* Initialisation des variables */ volatile char data2 ; int i = 0, j = 0 ; // indixe des positions int counter = 0 ; // counter unsigned char x ; unsigned char y ; #define usart_buffer_size 50 volatile uint8_t usart0_rx_flag=0; // Flag, String completement recu volatile uint8_t usart1_tx_flag=1; // Flag, String completement envoye unsigned char usart0_rx_buffer[usart_buffer_size]; // Buffer de reception unsigned char usart1_tx_buffer[usart_buffer_size]; // Buffer de transmission /****************************************************/ /* Initialisation de LŽUSART USART: Unite du microcontrôleur permettant la communication entre le microcontrôleur et le port serie RS232 dŽun appareil(Ici PC) */ /****************************************************/ void USART_Init (unsigned int ubrr) { /* Reglage du baudrate */ UBRR0H = (unsigned char)(ubrr>>8); UBRR0L = (unsigned char) ubrr; UBRR1H = (unsigned char)(ubrr>>8); UBRR1L = (unsigned char) ubrr; /* Pins permettant reception et transmission de donnees */ /* USART0 = RS232 USART1 = RS485 si TXEN0 = 1 , Transmission de donnees actif a partir de l`USART0, si TXEN0 = 0 , Pas de transmission de donnees. si TXEN1 = 1 , Transmission de donnees actif a partir de l`USART1, si TXEN1 = 0 , Pas de transmission de donnees. si RXEN0 = 1 , Le buffer UDR0 de LŽUSART0 peut recevoir les donnees. si RXEN0 = 0 , pas dŽenvoi de donnees. si RXEN1 = 1 , Le buffer UDR1 de LŽUSART1 peut recevoir les donnees. si RXEN1 = 0 , pas dŽenvoi de donnees. */ UCSR0B = (1< 2 Stopbits et USBS0 = 0 ---> 1 Stop bit UCSZ02, UCSZ01 et UCSZ00: Taille des donnees. 0 0 0 ----> 5 bits 0 0 1 ----> 6 bits 0 1 0 ----> 7 bits 0 1 1 ----> 8 bits */ UCSR0C = (1< P = 2 USART1_puts("#2 sx \r");// Definir la distance (distance = x) a pacourir (USART1_puts("#3 s-4320 \r")) USART1_puts("#2A\r"); // Go } else { USART1_puts("#3C\r"); // Demande de la position actuelle sur lŽaxe y USART1_puts("#3p2\r"); // Mode de travail: Position absolue --> P = 2 USART1_puts("#3 sy \r");// Definir la distance a pacourir (USART1_puts("#2 s-4320 \r");) USART1_puts("#3A\r"); // Go } control++ ; /*-- Test USART0 (Receive and Transmit) --*/ // USART0_Transmit( 'X' ); // c = USART0_Receive(); // USART0_Transmit(c); /*-- Test USART1 (Receive and Transmit) --*/ // USART1_Transmit( 'X' ); // c = USART0_Receive(); // USART1_Transmit(c); } }