Hola!Gracias por vuestras respuestas!!
Lo estoy probando en físico...
El caso es que..la 1ªvez que muestra la frecuencia, me muestra el dato correctamente pero cuando vuelve al main y se vuelve a ejecutar el programa...me muestra símbolos raros, y si pongo un clear, directamente se me pone en negro y no muestra nada...y a la siguiente vez que ejecuto el programa lo muestra correctamente...y así siempre...es muy extraño..
Probaré mañana a aumentar el buff...a ver que pasa...la librería es correcta no??
Pero a mí me da qué pensar porque al ejecutar este código, que no muestra números, si borras el while(1) y pones un delay y dejas que se ejecute infinitas veces...ocurre lo mismo:
#include <p18f2525.h>
#include <delays.h> // Rutinas de retardo
#include "C:\PIC\18F\EUART\LCD4b2x16.h"//ruta del archivo en mi PC
#pragma config OSC = XT,FCMEN = OFF,IESO = OFF //CONFIG1H
#pragma config PWRT = ON,BOREN = OFF,BORV = 0 //CONFIG2L
#pragma config WDT = OFF,WDTPS = 32768 //CONFIG2H
#pragma config MCLRE = ON,LPT1OSC = OFF,PBADEN = OFF,CCP2MX = PORTC//CONFIG3H
#pragma config STVREN = OFF,LVP = OFF,XINST = OFF,DEBUG = OFF//CONFIG4L
#pragma config CP0 = ON,CP1 = ON,CP2 = ON//CONFIG5L
#pragma config CPB = ON,CPD = ON//CONFIG5H
#pragma config WRT0 = ON,WRT1 = ON,WRT2 = ON//CONFIG6L
#pragma config WRTB = ON,WRTC = ON,WRTD = ON//CONFIG6H
#pragma config EBTR0 = ON,EBTR1 = ON,EBTR2 = ON//CONFIG7L
#pragma config EBTRB = ON//CONFIG7H
//******************************************************//
//******************************************************//
//
//
// Programa Principal
//
//
//******************************************************//
//******************************************************//
char mensaje[]="Henry";
void main(void)
{
TRISA = 0X00;
TRISB = 0XF0;
TRISC = 0X00;
PORTA = 0X00;
PORTB = 0X00;
PORTC = 0X00;
Inicializa_LCD();
Comando_LCD(CURSOR_OFF & BLINK_ON);
Dato_LCD('#');//un dato
Datos_LCD(" PERU ");//una cadena desde la memoria de programa
Dato_String_LCD(mensaje);//una cadena desde la memoria de datos
//con este comando pasamos a la linea 2 del LCD
Comando_LCD(DDRAM_LINEA_2);
Datos_LCD("micro_cadaver");
while(1);
}
Una vez se muestran correctamente, otra vez no, otra vez sí y así sucesivamente...y utiliza la misma librería..