Hola kidpic,
Puse como comentario a esta directivas #use fast_io(A) y se me arreglo el problema ya puedo ver en el LCd el texto completo la pregunta es porque, aun tengo esa duda.
#include <16f876.h>
#fuses HS,NOWDT,NOPUT
#use delay(clock=20000000) //defino el crystal a utilizar
//#use fast_io(A) //optimizo el uso del puerto
//#use fast_io(B) //optimizo el uso del puerto
#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"
void main()
{
el programa es el mismo
}
======================================
Le agrege esto al programa , una entrada analoga que leo la quiero enviar a la segunda linea del lcd y me esta votando un error:
>>> Warning 203 "LCD_EDwin.c" Line 32(1,1): Condition always TRUE
*** Error 116 "LCD_EDwin.c" Line 36(33,38): Printf variable count (%) does not match actual count ::
1 Errors, 1 Warnings.
Existe alguna diferencia entre :
printf(lcd_putc,"valor = ",valor); y esta otra forma de poner: lcd_putc("valor = ",valor);
Te dejo el codigo con entrada analoga aver si me echas una mano gracias y saludos.
#include <16f876.h>
#fuses HS,NOWDT,NOPUT
#use delay(clock=20000000) //defino el crystal a utiliza
#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"
unsigned long int valor;
void main()
{
set_tris_a(0);
set_tris_b(0);
output_a(0);
lcd_init(); /* inicinializo en LCD */
SETUP_ADC(ADC_CLOCK_INTERNAL); // configuras para que el a/d funcione con reloj interno del uC
SETUP_ADC_PORTS(AN0); // RA0 será analógico
SET_ADC_CHANNEL(0); // vamos a usar el canal RA0
lcd_gotoxy(1,1); /* inicia en la primera linea del LCD */
printf(lcd_putc,"Lectura"); /* muestra en el LCD */
while(1){
valor=READ_ADC();
delay_ms(10);
lcd_gotoxy(1,2);
printf(lcd_putc,"valor = ",valor);
}
}