Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
#include <18f452.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,NOBROWNOUT
#use delay (clock=4000000)
#define use_portb_kbd TRUE
#include<kbd.c>
#include<lcd.c>
#include<stdlib.h>
#use fast_io(b)
#use fast_io(d)
int i;
unsigned char k,c[3];
unsigned long cantidad,uni,dec,cen;
void main(void) {
lcd_init();
port_b_pullups(TRUE);
delay_ms(80);
lcd_putc("\fIngrese numero");
for(i=0;i<=2;i++)
{
do{k=kbd_getc();
c[i]=(unsigned long)k;
c[i]=c[i]-48;
}while(k==0);
//c[i]=c[i]-48;
if(i==0)lcd_putc('\f');
//lcd_putc(k);
printf(lcd_putc,"%u",c[i]);
//printf(lcd_putc,"%lu",a);
}
cen=100*(c[0]);
dec=10*c[1];
uni=c[2];
cantidad=uni+dec+cen;
delay_ms(500);
printf(lcd_putc,"\nuni: %lu",uni);
delay_ms(2000);
printf(lcd_putc,"\ndec: %lu",dec);
delay_ms(2000);
printf(lcd_putc,"\ncen: %lu",cen);
delay_ms(2000);
lcd_putc('\f');
printf(lcd_putc,"numero: %lu",cantidad);
}
char* leeClave(){
//Método que lee del ADC (conversor análogo digital) 4 valores, los transforma a su equivalente del teclado y almacena en el
//arreglo de chars 'cl' (clave). Regresa el apuntador al arreglo.
char cl[4];
unsigned short contLeer;
unsigned int teclado;
contLeer = 0;
while(contLeer < 4){
/*
Este while espera a que se presione una tecla, checa qué tecla se presionó
y guarda ésta en el arreglo de chars 'clave'. Realiza este ciclo 4 veces.
*/
while((teclado = ADC_Read(3)) <= 590){//Espera a que se presione una tecla
//prende LED para saber que está aquí
}
//apaga LED para saber que salimos
//Checa qué tecla se presionó
if (teclado > 590 && teclado <= 606){cl[contLeer]= 0xF2;}
else{
if (teclado > 606 && teclado <= 625){cl[contLeer] = 0x03;}
else{
if (teclado > 625 && teclado <= 648){cl[contLeer] = 0x06;}
else{
if (teclado > 648 && teclado <= 677){cl[contLeer] = 0x09;}
else{
if (teclado > 677 && teclado <= 707){cl[contLeer] = 0xF1;}
else{
if (teclado > 707 && teclado <= 733){cl[contLeer] = 0x02;}
else{
if (teclado > 733 && teclado <= 764){cl[contLeer] = 0x05;}
else{
if (teclado > 764 && teclado <= 797){cl[contLeer] = 0x08;}
else{
if (teclado > 797 && teclado <= 829){cl[contLeer] = 0x00;}
else{
if (teclado > 829 && teclado <= 866){cl[contLeer] = 0x01;}
else{
if (teclado > 866 && teclado <= 910){cl[contLeer] = 0x04;}
else{
if (teclado > 910 && teclado <= 950){cl[contLeer] = 0x07;}
}
}
}
}
}
}
}
}
}
}
}
//PORTB=cl[contLeer];
contLeer++;
//Espera a que se deje de presionar la tecla
while ((teclado = ADC_Read(3)) > 590){}
}
return cl;
}
lo que pasa es que , como muchos sabran, se manejan las teclas por cruze de filas y columnas y por ejemplo si mezclo columna 1 y fila 1, habilitaria el numero "1", pero si habilito tambien por ejemplo, fila 2 y columna 2, tengo 4 teclas, para solo 2 arreglos..
es decir, si yo conecto fila 1 a led rojo y fila 2 a led azul, no solo con el numero 1 y 2 se va a prender el LED rojo y el LED azul , respectivamente, sino tambien con el numero 3 y 4, y nose como quitar este problema..
es decir, con solo una tecla, elegir una funcion respectiva..
hay un PIC para esto o como lo hago la coneccion?
saludos
...hay un PIC para esto o como lo hago la coneccion?
saludos