hola necesito ayuda urgente¡¡¡¡ tengo que hacer un contador de pulsos en forma descendente y ascendente, lo estoy realizando con el timer0 como contador y aparte realizo lecturas por el modulo adc en los pines a0 estos valores los mando a imprimir en una lcd. ya probe mi contador de pulsos por separado y me funciona corectamente, pero ya dentro del codigo con la lectura adc y la lcd no me funciona bien. les pongo el codigo espero me puedan ayudar¡¡¡¡¡¡¡¡ gracias
codigo del contador por separado
#include <18f4550.h>
#fuses INTHS,NOPBADEN
#use delay(internal=8Mhz)
#include <lcdd.c>
#BYTE TRISA=0xF92
#BYTE PORTA=0xF80
#BYTE TRISB=0xF93
#BYTE PORTB=0xF81
#BYTE TRISC=0xF94
#BYTE PORTC=0xF82
#BYTE TRISD=0xF95
#BYTE PORTD=0xF83
int16 counter;
int16 x;
void main()
{x=0;
SET_TRIS_A(0xFF);
lcd_init();
setup_timer_0(RTCC_DIV_2|RTCC_EXT_L_TO_H);
set_timer0(0);
while(true)
{counter=get_timer0();
lcd_gotoxy(1,1);
printf(lcd_putc,"\ %Lu",counter);
IF(counter==1){
set_timer0(0);
if(input(pin_B4)==1)
{
x++;
}// entonces incrementar una unidad el valor de X.
if(input(pin_B3)==1)
{
x--;
}
}
lcd_gotoxy(1,2);
printf(lcd_putc,"\ %Lu",x);
}
}
codigo completo
#include <18f4550.h>
#fuses INTHS,NOPBADEN
#use delay(internal=8Mhz)
#include <lcdd.c>
#BYTE TRISA=0xF92
#BYTE PORTA=0xF80
#BYTE TRISB=0xF93
#BYTE PORTB=0xF81
#BYTE TRISC=0xF94
#BYTE PORTC=0xF82
#BYTE TRISD=0xF95
#BYTE PORTD=0xF83
int16 counter;
int16 x;
int16 q;
void sensor();
void main()
{
lcd_init();
x=0;
SET_TRIS_A(0xFF);
setup_timer_0(RTCC_DIV_2|RTCC_EXT_L_TO_H);
set_timer0(0);
setup_adc_ports(all_analog);//declaracion para activar el modulo ADC
setup_adc(ADC_CLOCK_INTERNAL);
//setup_ccp1(CCP_PWM);//declaracion para usar el modulo CCP en modo PWM
//setup_timer_2(T2_DIV_BY_1, 127, 1); //Frecuencia de 15.62KHz
//set_pwm1_duty(500);
while(true)
{ counter=get_timer0();
lcd_gotoxy(10,1);
printf(lcd_putc,"\ %Lu",counter);
lcd_gotoxy(1,2);
printf(lcd_putc,"\ %Lu",x);
IF(counter==5){
delay_us(10);
if(input(pin_B3)==1)
{
x++;
}
set_timer0(0);
}
sensor();
//VARIANDO EL VALOR DE LA LECTURA ADC IRA REALIZANDO CIERTAS ACCIONES
//ENROLLANDO O DESENROLLANDO LA PERSIANA
//if(q>200)
//cero();
//if((q>150)&&(q<200))
// veinticinco();
// if((q>151)&&(q<100))
// mitad();
//if((q>50)&&(q<99))
// setentaycinco();
// if ((q>49)&&(q<98))
// cien();
}
}
void sensor()
{
//LECTURA DE VALOR ADC GENERADA POR UNA FOTORESISTENCIA POR EL PIN A0
set_adc_channel(0);
delay_us(20);
q = read_adc();
lcd_gotoxy(1,1);
printf(lcd_putc,"\ %Lu",q);
}