#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,NODEBUG,BROWNOUT,NOCPD,NOWRT // 0x3F72
#use delay(clock=20000000)
#use rs232(baud=9600, BITS=8, PARITY=N, xmit=PIN_C6, rcv=PIN_C7)
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#byte porta =5
#byte portb =6
#byte portc =7
#byte portd =8
#byte porte =9
#include <lcd.c>
int const caracter0_direccion[8]={0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47};
int const caracter0_datos[8]={0b00000,0b00100,0b01000,0b11111,0b01000,0b00100,0b00000,0b0};
int const caracter1_direccion[8]={0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f};
int const caracter1_datos[8]={0b00000,0b00100,0b00010,0b11111,0b00010,0b00100,0b00000,0b0};
void main() {
int caracter1,caracter2,caracter3,caracter4;
int contador;
set_tris_a(0x0);
set_tris_b(0x0);
set_tris_c(0x0);
set_tris_e(0x0);
porta=0;
portc=0;
porte=0;
port_b_pullups(true);
//----------------------------------------
lcd_init();
// grabando en la CGRAM
for(contador=0;contador<8;contador++){
lcd_send_byte(0,caracter0_direccion[contador]); //modo comando
lcd_send_byte(1,caracter0_datos[contador]); // modo dato
lcd_send_byte(0,caracter1_direccion[contador]); //modo comando
lcd_send_byte(1,caracter1_datos[contador]); // modo dato
}
//*******************************************//
lcd_gotoxy(9,1); // posición del <-
lcd_send_byte(1,0); //modo dato '<-'
lcd_gotoxy(10,1); // posicion de la cadena "Sen 5"
lcd_putc("Sen 5");
lcd_gotoxy(15,1); // posicion del ->
lcd_send_byte(1,1); //modo dato '->'
caracter1 =lcd_getc(10,1); // toma el caracter de la cadena
printf("primer carácter= %c\n\r",caracter1
); // lo envía al COM
caracter2 =lcd_getc(11,1);
printf("segundo carácter= %c\n\r",caracter2
);
caracter3 =lcd_getc(12,1);
printf("tercer carácter= %c\n\r",caracter3
);
caracter4 =lcd_getc(14,1)-0x30; // convierte el tipo char del LCD
printf("cuarto carácter= %d\n\r",caracter4
);
}