Buenas tardes, estoy haciendo un proyecto para introducir en el pic los datos de un calibre digital, el programa para tomar 8 bits de datos esta hecho, pero ahora cuando quiero visualizarlo en lcd no pasa nada, me parece q es un problema de donde inicializo el lcd(dentro de la interrupcion o fuera). y falta de uso de punteros puede ser cierto esto?
Este es el programa.
Espero q me puedan ayudar. Saludos
#include <16f877.h>
#fuses hs,nowdt,put,nowrt,nolvp,noprotect
#use delay(clock=20000000)
#use fast_io(b)
#include <lcd.c>
int8 dato;
#int_ext
ext_isr()
{
delay_us(496);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1)
bit_set(dato,0);
else
bit_clear(dato,0);
delay_us(12);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1)
bit_set(dato,1);
else
bit_clear(dato,1);
delay_us(12);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1)
bit_set(dato,2);
else
bit_clear(dato,2);
delay_us(12);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1)
bit_set(dato,3);
else
bit_clear(dato,3);
delay_us(12);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1)
bit_set(dato,4);
else
bit_clear(dato,4);
delay_us(12);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1)
bit_set(dato,5);
else
bit_clear(dato,5);
delay_us(12);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1)
bit_set(dato,6);
else
bit_clear(dato,6);
delay_us(12);
output_high(pin_b7);
output_low(pin_b7);
if (input(pin_b1)==1)
bit_set(dato,7);
else
bit_clear(dato,7);
printf(lcd_putc,"\f%u",dato);
}
void main()
{
lcd_init();
set_tris_b(0x03);
output_low(PIN_B7);
port_b_pullups(true);
enable_interrupts(int_ext);
ext_int_edge(l_to_h);
enable_interrupts(global);
while(1)
{
}
}