Вы находитесь на странице: 1из 3

char uart_rd; void main() { UART1_Init(1200); // Initialize UART module at 9600 bps Delay_ms(100); // Wait for UART module

to stabilize UART1_Write_Text("Start"); while (1) { // Endless loop if (UART1_Data_Ready()) { // If data is received, uart_rd = UART1_Read(); // read the received data, UART1_Write(uart_rd); // and send data via UART } } }

Curso bsico de linguagem C para microcontroladores PIC _ Comunicao Serial (USART) USART= Universal Synchronous Asynchronous Receiver Transmitter Biblioteca USART no MIKROC Usart_init: Inicializa o modo de comunicao serial informando o Band-Rate (Taxa de Comunicao) utilizado para a comunicao Sintaxe: Usart_init (BaudRate) Exemplo: Usart_init (9600), inicializa a serial com taxa de 9600 bps. Usart_Data_Ready: Verifica se existe algum byte no buffer de recepo serial, retornando 1 se existir e 0 se no existir nenhum byte. onde var = varivel. Sintaxe: var = Usart_Data_Ready( ), { expresso...... } Exemplo: if (Usart_Data_Ready()) //se existir algum byte no buffer, executa a expresso abaixo:

Usart_Read: L o valor armazenado no buffer de recepo serial. Sintaxe: recepo = Usart_read( ); { receive = Usart_Read(); //armazena o byte recebido na varivel //receive. } Exemplo: if (Usart_Data_Ready()) //se existir algum byte no buffer, executa a expresso abaixo: Usart_Write: transmite um byte pela serial. Sintaxe: Usart_Write (byte chr), Exemplo: Usart_Write('A'); ou Usart_Write (61); // escreve o caracter A na serial. Curso bsico de linguagem C para microcontroladores PIC _ Projeto Serial: 1-) Enviar o caracter A pela serial. Resoluo: Neste caso, vamos atuar sobre o boto conectado ao pino 0 da porta D e a cada atuao, o caracter A ser enviado para a serial. Utilizamos, agora, uma maneira diferente de verificar o acionamento de um boto que atravs da biblioteca UTIL e o comando BUTTON, conforme segue: Sintaxe: unsigned short Button(unsigned short *port, unsigned short pin, unsigned short time, unsigned short active_state); { comando..... } Exemplo: if (Button(&PORTD,0,1,1)) Para o exemplo acima, conclui-se que se o boto conectado ao pino 0 da porta D, por um tempo de 1 ms, o estado do pino mudar para nvel lgico 1 e o que est entre chaves ser executado. Cdigo: void main() { // Initializa o mdulo USART (8 bit, baud rate 9600, no parity bit..) Usart_Init(9600); if (Button(&PORTD,0,100,1)) //Se o boto conectado ao pino 0 da Porta D, o comando //abaixo ser executado. Usart_Write('A'); //Envia o caracter A pela serial. } while (1) { } Obs.: Faa uma experncia modificando para baixo o tempo de 100ms.

Projeto Serial 2: 2-) Receber um caracter do PC e envi-lo novamente pela serial, alm de acender o LED1 se o caracter for ae apagar o led se o caracter for b. Curso bsico de linguagem C para microcontroladores PIC _ Cdigo: unsigned short i; void main() { TRISD = 0x00; PORTD = 0x00; // Initializa USART (8 bit, baud rate 9600, no parity bit..) Usart_Init(9600); if (Usart_Data_Ready()) { // Se algum dado for recebido i = Usart_Read(); // L o dado recebido Usart_Write(i); // Envia o dado pela serial novamente if (i=='a') PORTD.F0 = 1; //Se o caracter for 'a', acende o LED 1 if (i=='b') PORTD.F0 = 0; //Se o caracter for 'b', apaga o LED 1 } do { } while (1); Projeto Serial 3: 3-) Enviar a palavra MICROCONTROLADOR pela serial. Resoluo: No MikroC, no existe uma maneira de enviarmos uma string, somente podemos enviar 1 caracter por vez, portanto podemos enviar assim: Usart_Write('M'); Usart_Write('I'); Usart_Write('C'); Ou podemos utilizar uma maneira mais usual que a utilizao de ponteiros que ser mostrada no cdigo abaixo: No caso de ponteiros, podemos dizer que cada caracter ser colocado numa posio do ponteiro, ou seja, o caracter M ser colocado ou estar apontando para a posio 0, o caracter I ser colocado ou estar apontando para a posio 1 e assim por diante at o final, sendo que a ltima posio ser ocupada por um valor nulo e essa ser a finalizao do ponteiro.