Hola a tod@s.
Tengo un programa el cual esta funcionando en el que visualizo los datos en un PC a través de una comunicación serie asíncrona. Hasta ahí me va todo bien, osea, el circuito está funcionando y hace lo que pretendo hasta ahora.
El problema surge cuando quiero visualizar esos datos en una LCD (es la primera vez que lo intento...). La LCD tiene acoplado el Driver HD44780. El programa es el siguiente:
#include "16F876.h"
#device PIC16f876 ADC=10
#use delay (clock=4000000)
#include <LCD.c>
#fuses HS,NOWDT,PUT,BROWNOUT,NOLVP,NOPROTECT,NOCPD,NOWRT
#byte PORTA=0x05
#byte PORTB=0X06
#byte PORTC=0x07
static int cont=0;
long int pto=0,pulse=0;
main()
{
set_tris_A(0b001010);
set_tris_B(0b11000000);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
setup_adc_ports(A_ANALOG_RA3_REF);
setup_adc(ADC_CLOCK_INTERNAL);
SET_ADC_CHANNEL(1);
lcd_init();
lcd_gotoxy(1,1);
lcd_putc("r.p.m.:"

;
INICIO:
portb=(0b00000001);
pulse=0;cont=0;pto=0;
set_timer1(3036);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
while(cont<10)
{
output_low(PIN_B1);
while((pto<160)&&(cont<10))
{delay_us(5);
pto=read_adc();
}
output_high(PIN_B1);
while((pto>=155)&&(cont<10))
{
delay_us(5);
pto=read_adc();
}
pulse++;
}
pulse--;
pulse=pulse*12;
lcd_gotoxy(1,2);
printf(lcd_putc,"%ld",pulse);
setup_timer_1(T1_DISABLED);
goto inicio;
}
#INT_TIMER1
interrupcion_timer1()
{
setup_timer_1(T1_DISABLED);
cont++;
set_timer1(3036);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
}
..........................................................................................................
Quiero aclarar que el mismo, quitando todo lo referente a la LCD me compila y funciona perfectamente. En este me da el siguiente error:
Error[23] 16f876.h 2 : Can"t change device type this far into the code
Halting build on first failure as requested.
Alguien me puede decir que es lo que hago mal?
Gracias.