// Abaixo parte do meu código, usando o PIC16F877A //
// atraves da linhas: (printf("LED 8 LIGADO"); envio para serial //
// ENVIO DE STRING PARA MCU, PELA PORTA SERIAL //
#include <16F877.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#use delay(clock=4000000)
#fuses XT, PUT, NOWDT, NOBROWNOUT, NOLVP
#use rs232(BAUD=9600, parity=N, BITS=8, XMIT=pin_c6, RCV=pin_c7)
#include <regs_16F87X.h>
#define MAX_BUFFER 15 // Define tamanho do BUFFER recepcao 15 //
char RECEPCAO[MAX_BUFFER+1]; // Define variavel recepcao = max_buffer 15+1
boolean COMANDO_ENVIADO = false; // Inicialmente definido como falso
#define lcd_enable pin_c4
#define lcd_rs pin_c5
#define lcd_d4 pin_c3
#define lcd_d5 pin_c2
#define lcd_d6 pin_c1
#define lcd_d7 pin_c0
#include <mod_lcd.c>
//-------------------------------------------------//
//Interrupção de recebimento de caracter pela UART.
//-------------------------------------------------//
void inicio1()
{
int pos;
pos=16;
while(pos>=0 && pos<=16 || pos>=256 && pos<=256)
{
lcd_pos_xy(1,1);
lcd_escreve(" ");
lcd_pos_xy(pos,1);
lcd_escreve(" PCI TECLADO 8CH");
delay_ms(200);
pos=pos-1;
}
delay_ms(500);
return;
}
void inicio2()
{
int pos;
pos=16;
while(pos>=0 && pos<=16 || pos>=256 && pos<=256)
{
lcd_pos_xy(1,2);
lcd_escreve(" ");
lcd_pos_xy(pos,2);
lcd_escreve(" VERSAO 01 BY-WA");
delay_ms(200);
pos=pos-1;
}
delay_ms(500);
return;
}
#int_rda
void Serial_Recebe_Car()
{
static unsigned char ch;
static int QTDE_RECEBIDA=0;
ch = getc(); //Pega o caracter no registrador da UART.
RECEPCAO[QTDE_RECEBIDA] = ch; //Guarda o caracter no buffer.
if( RECEPCAO[QTDE_RECEBIDA] == '>' ) // se for (*) finaliza a string.
{
RECEPCAO[QTDE_RECEBIDA+1] = '