Vale, pues en ese caso, tendrás que conectar el MAX232 al Pic como te dije en otro post y el teclado de la manera que puedes ver aquí:
http://www.x-robotics.com/rutinas.htm#Teclado%20Matricial%204x4Tu teclado tiene una columna menos, pero supongo que el esquema es suficientemente clarificador. Claro, tú gastarás un pin menos.
Para programar un PIC se utiliza un fichero HEX que contiene los Bytes del programa. A ese fichero HEX se llega compilando desde un lenguaje de programación de alto nivel, o ensamblando desde ASM, pero el resultado será un fichero HEX en cualquier caso.
Por ello, si te mueves bien en C, será seguramente lo más recomendable.
A grandes rasgos, tu programa debería tener un bucle infinito en el que espere mientras no haya una pulsación de tecla. Si esa tecla se pulsa, se enviarán los datos por el puerto serie y vuelta a empezar.
Creeme, es un programa sencillito. Te dejo algunos ejemplos aquí que pueden darte inspiración.
En este primer ejemplo se explora el teclado y se envía la tecla pulsada a una pantalla LCD:
Codigo:
#if defined(__PCB__)
#include <16c56.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20000000)
#elif defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#elif defined(__PCH__)
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#endif
#include <lcd.c>
#include <kbd.c>
void main() {
char k;
lcd_init();
kbd_init();
lcd_putc("fReady...
");
while (TRUE) {
k=kbd_getc();
if(k!=0)
if(k=="*")
lcd_putc("f");
else
lcd_putc(k);
}
}
Y en este otro se dialoga con el PC vía puerto serie, se reciben caracteres y se envían, por lo que será bastante ilustrativo:
Codigo:
#if defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) // Jumpers: 8 to 11, 7 to 12
#elif defined(__PCH__)
#include <18F452.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) // Jumpers: 8 to 11, 7 to 12
#endif
#include <stdlib.h>
#include <input.c>
void main() {
long int l;
float a, b;
while(TRUE) {
printf("
Enter first number: ");
a=get_float();
printf("
Enter second number: ");
b=get_float();
printf("
A= %E
", a);
printf("B= %E
", b);
printf("
a + b = %E", a + b);
printf("
a - b = %E", a - b);
printf("
a * b = %E", a * b);
printf("
a / b = %E
", a / b);
if(a <= b)
printf("a<=b, ");
else
printf("a>b, ");
if(a < b)
printf("a<b, ");
else
printf("a>=b, ");
if(a == b)
printf("a==b
");
else
printf("a!=b
");
l = (long int)a;
printf("
(long)a = %lu ", l);
a = (float)l;
printf("
(float)(long)a = %E
", a);
}
}
Bueno, ¿a qué estás esperando?, quiero ir viendo ya por aquí tu código...