Hola a todos
Gracias por el dato encontre buena informacion en el foro, ahora tengo este problema hice este programa, consta de 4 leds lo uso para ver el nivel segun el voltaje k entra por RA0 el pin RC0 se pone en alto cuando pasa el nivel de 50.0 ahora en proteus esta todo bien me esta simulando tal como yo quiero pero cuando lo grabo el pic y lo pongo en mi entrenador no muestra nada en mi LCD pero los leds si funcionan bien, que puede ser amigos me falta configurar algo, o es un problema de hardware el programa al parecer esta bien ya llevo 4 dias con este problema, gracias de antemano y saludos.
#include <16f876.h>
#fuses HS,NOWDT,NOPUT
# DEVICE ADC=10
#use delay(clock=20000000)
#use fast_io(a)
#use fast_io(c)
#define LCD_RS PIN_B1
#define LCD_RW PIN_B2
#define LCD_E PIN_B3
#define LCD_DB4 PIN_B4
#define LCD_DB5 PIN_B5
#define LCD_DB6 PIN_B6
#define LCD_DB7 PIN_B7
#include "flex_lcd.c"
/******************************************************************************/
/*********************** PROGRAMA PRINCIPAL ******************************/
void main(){
int16 i=0;
float j=0;
set_tris_a(0x01); /* el pin RA0 como entrada */
set_tris_b(0); /* el portb como salida */
set_tris_c(0x00);
SETUP_ADC(ADC_CLOCK_INTERNAL); /* configuracion para que el a/d funcione con reloj interno del uC */
SETUP_ADC_PORTS(RA0_ANALOG); /* RA0 será analógico */
lcd_init(); /* inicializo en LCD */
lcd_gotoxy(1,1);
printf(lcd_putc,"EALSA"); /* muestra en el LCD */
while(TRUE){
SET_ADC_CHANNEL(0); /* vamos a usar el canal RA0 */
delay_us(20);
i = read_adc();
j = 100.0*i/1024.0;
lcd_gotoxy(1,2);
printf(lcd_putc,"Nivel = %01.2f",j); /* muestra en el LCD */
delay_ms(100);
if(25.0<=j){
output_high(pin_A2);
if(50.0<=j){
output_high(pin_A3);
output_high(pin_C0);
if(75.0<=j){
output_high(pin_A4);
if(95.0<=j)
output_high(pin_A5);
else
output_low(pin_A5);
}
else
output_low(pin_A4);
}
else{
output_low(pin_A3);
output_low(pin_C0);}
}
else
output_low(pin_A2);
}
}