hola redPic estan buenos tus ejemplos muy esplicativos. te comento que suky me dio un ejemplo a seguir y ahora resulta bien, pero ahora tengo dos dudas con dicho ejemplo, como ago para al presionar cada tecla se me valla visualisando en la lcd, por que en este caso tengo que presionar la tecla D para ver el resultado optenido de las teclas presionadas, y por ultimo cuando compilo me sale los siguientes warning>
line 47(1,1):assingnment inside relational expression
:line 58(0,1):imterrupts disabled during to prevent re-entrancv (@MULFF)
bueno y el codigo es este:
#include <16F877a.h>
#device adc=10
#FUSES NOWDT, HS, NOPUT, NOPROTECT, BROWNOUT, NOLVP, NOCPD, NOWRT
#use delay (clock=20000000) //Fosc=20Mhz
#define use_portd_lcd TRUE //definir salida del puerto D para la lcd
#include<lcd420.c> //libreria manejo lcd
#include <keypad.c> //Libreria de teclado 4x4
#include <stdlib.h>
unsigned char key; //Variable global tecla
int1 kbhit_tecla=0; // Para saber si se ha pulsado alguna tecla.
int1 Nuevatecla=1; // Indica que es el primer ingreso, así que borra pantalla antes de imprimir.
char String[6];
int i,a=0,b=0;
float Valor;
// Interrupcion RB4 - RB7 /////////////////////////////////////////////////////
#INT_RB
void interrupt_keypad()
{
key=read_keypad(); //Asigna la tecla pulsada
if(key==read_keypad()){a++;}
if(key!='D'){ // Hay que establecer una tecla o algo que te de por terminado el ingreso de datos
String[ b ]=key;
b=a-1;
kbhit_tecla=1; // Hay un nuevo caracter a imprimir.
}else{
Valor=atof(String); // Se pulso tecla D, como un "enter", así que guardamos dato, y indicamos que al llegar...
Nuevatecla=1; // ...otro dato se borre pantalla, como una calculadora. Y reseteamos i.
i=0;
}
clear_interrupt(INT_RB); //Limpia bandera RBIF
}
// Programa Principal /////////////////////////////////////////////////////////
void main()
{
lcd_init();
enable_interrupts(INT_RB); //interrupcion INT_RB activada
disable_interrupts(GLOBAL); //todas las interrupciones desactivadas
init_keypad();
i=0;
while(true)
{
if(kbhit_tecla=1){ // Se ha pulsado alguna tecla?
if(NuevaTecla==1){
lcd_putc("\f"); // Borro pantalla.-
NuevaTecla=0;
}
else
kbhit_tecla=0;
printf(lcd_putc,"%f",valor); // Imprimimos la Tecla pulsada
lcd_gotoxy(1,1);
}}}