#include <16F877A.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
int c1;
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
while(true){
if(input(PIN_B0)){
c1=5;
puts("1");
while(input(pin_b0)){\\ANTIREBOTE
}
}
if(input(PIN_B1)){
c1=8;
puts("2");
while(input(pin_b1)){
}
}
if(input(PIN_B2)){
c1=7;
puts("3");
while(input(pin_b2)){
}
}
}
}#include <16F877A.h>
#device adc=8
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#use delay(clock=4000000)
#use rs232(stream=PC,baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#use rs232(stream=LR,baud=9600,parity=N,xmit=PIN_C4,rcv=PIN_C5,bits=8)
#include "flex_lcd.c"
char c;
void main()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
c=0;
lcd_init();
while(TRUE){
c=getc(LR);
if(c!=0){
fprintf(PC,"\fRecibe:%d",c);\\mostrar en el PC
printf(lcd_putc,"\fRecibe:%d",c);\\mostrar en lcd
}
}
}
Hola.
Seria mejor que uses interrupciones para la recepcion. De esa manera puedes ir guardando en un bufer todo la que vaya llegando.
Hola.
La confusion es en el manejo del serial. El serial envia bytes, para enviar un float, por ejemplo, se necesitan 4 bytes, lo cual no alcanza en el bufer de recepcion del PIC, por lo tanto se envia mejor strings que son arreglos de bytes.
Ya habiendo recibido el string correspondiente tu puedes convertirlo a float o long o a lo que gustes.
printf("Hola");printf("Float: %f", valor);Pues para enviar es mas sencillo todavia !!!!Código: [Seleccionar]printf("Hola");
Y listo.
Si quieres enviar un float por ejemplo -guardado en la variable valor-:Código: [Seleccionar]printf("Float: %f", valor);
Saludos
printf("Float: %f", valor); como se recibe? ya que enviaste la palabra "float" y luego el valor.
printf("Float: %f", valor);:-) :-)