O codigo foi esse no 12F675
#include <12f675.h>
#device adc=10
#use delay(clock=4000000)
#fuses INTRC_IO,NOWDT, noprotect
#use rs232(baud=9600, xmit=PIN_A2,rcv=PIN_A3,bits=8)
float tensão;
long int tensao1;
void main()
{
setup_adc_ports(AN0_ANALOG|AN1_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);
while(true)
{
set_adc_channel(0);
delay_ms(100);
tensão= (5.0/1024)* read_adc()*20;
tensao1=tensão*100;
printf("\r\n%c",tensao1);
output_high(PIN_A4);
delay_ms(100);
output_low(PIN_A4);
delay_ms(100);
}
}
NO RECEPTOR QUE É O 16F877A FOI:
#include <16f877a.h>
#device ADC=10
#use delay(clock=8000000)
#USE RS232(baud=9600, xmit=PIN_C6, rcv=PIN_C7,bits=8)
#fuses HS,NOWDT,BROWNOUT,PUT,NOLVP
#include "LCD4B.c"
float tensão, ad0;
char dado[7];
#int_rda
void rda_isr()
{
dado[0]=getchar();
dado[1]=getchar();
dado[2]=getchar();
dado[3]=getchar();
}
void main()
{
enable_interrupts(global);
enable_interrupts(int_rda);
setup_adc_ports(AN0_AN1_AN3);
setup_ADC(ADC_CLOCK_DIV_8);
lcd_ini();
delay_ms(200);
printf(lcd_escreve,"PIC16F877A");
printf(lcd_escreve,"\rPROJETO VERSAO 00");
delay_ms(200);
while(true)
{
set_adc_channel(0);
delay_us(100);
ad0=read_adc();
tensão=5*ad0/1024;
tensão=tensão*20;
printf(lcd_escreve,"\fTENSAO=%fV\r\n",tensão);
printf(lcd_escreve,"COR=%c%c.%c%c",dado[0],dado[1],dado[2],dado[3]); //Nessa parte que recebe a informação fica com uns caracteres zuados variando(mostrando que ele está recebendo alguma informação) quando manda para o LCD,mas no PROTEUS imprime normalmente e qualquer outro programa o LCD imprime as duas linhas mostrando que o problema não e no hardware do LCD.valeu!!!! //
delay_ms(300);
}
}
O hardware A PRINCIPIO ESTA OK MAS MESMO ASSIM NÃO PEGA E NO CASO DO OSCILADOR INTERNO COLOQUEI OUTROS DOIS PICS12F675 PARA TESTAR E NADA TAMBÉM.
NO PROTEUS ESTA RODANDO TUDO LEGAL MAS quando LIGO O TX DO 12F AO RX DO 16F COMEÇA A LOUCURA!!
valeu pela força pessoal!!!, ABRAÇOS!!!!
@MatheusLPS
@Isadora Ferraz
@Fervolt