You are on page 1of 5

#include <18f4550.

h>
#fuses HS, NOWDT
#use delay(clock=4M)
//!#define use_portb_kbd TRUE
//!#include <KBD4x4.c>

//.............................................................................
int barrido[]={0b00000001,
0b00000010,
0b00000100,
0b00001000,
0b00010000,
0b00100000,
0b01000000,
0b10000000};

int nro1[]={0b00011000,
0b00111000,
0b01011000,
0b00011000,
0b00011000,
0b00011000,
0b00011000,
0b01111110};

int nro2[]={0b01111110,
0b01111110,
0b00000110,
0b01111110,
0b01111110,
0b01100000,
0b01111110,
0b01111110};

int nro3[]={0b01111110,
0b01111110,
0b00000110,
0b00011110,
0b00011110,
0b00000110,
0b01111110,
0b01111110};

int nro4[]={0b01100110,
0b01100110,
0b01100110,
0b01111110,
0b01111110,
0b00000110,
0b00000110,
0b00000110};

int nro5[]={0b01111110,
0b01111110,
0b01100000,
0b01111110,
0b01111110,
0b00000110,
0b01111110,
0b01111110};

int nro6[]={0b01111110,
0b01111110,
0b01100000,
0b01111110,
0b01111110,
0b01100110,
0b01111110,
0b01111110};

int nro7[]={0b01111110,
0b01111110,
0b00000110,
0b00000110,
0b00000110,
0b00000110,
0b00000110,
0b00000110};

int nro8[]={0b01111110,
0b01111110,
0b01100110,
0b01111110,
0b01111110,
0b01100110,
0b01111110,
0b01111110};

int nro9[]={0b01111110,
0b01111110,
0b01100110,
0b01111110,
0b01111110,
0b00000110,
0b00000110,
0b00000110};

int nro0[]={0b01111110,
0b01111110,
0b01100110,
0b01100110,
0b01100110,
0b01100110,
0b01111110,
0b01111110};

int mas[]={0b00011000,
0b00011000,
0b00011000,
0b11111111,
0b11111111,
0b00011000,
0b00011000,
0b00011000};

int igual[]={0b00000000,
0b11111111,
0b11111111,
0b00000000,
0b00000000,
0b11111111,
0b11111111,
0b00000000};

int off[]={0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000};
//......................PROTOTIPOS.............................................
void configuracion();
void mostrar(char dato);
void leerSelector1();
void leerSelector2();
void pulsador();
//......................VARIABLES..............................................
int cont=0;
//......................PROGRAMA.PRINCIPAL....................................
void main()
{
configuracion();
while(true)
{
pulsador();
switch(cont)
{
case 0:
mostrar('o');
break;
case 1:
leerSelector2();
break;
case 2:
mostrar('+');
break;
case 3:
leerSelector1();
break;
case 4:
mostrar('=');
break;
case 5:
break;
default:
break;
}//fin del switch
}//fin while
}

void configuracion()
{
set_tris_b(0b00000000);
set_tris_d(0b00000000);
set_tris_d(0b00111111);
setup_adc_ports(NO_ANALOGS);
}

void mostrar(char dato)


{
int j=0, i, db=50, ms=1;
while(j<db){
for(i=0;i<8;i++){
output_b(barrido[i]);
switch(dato)
{
case '0':
output_d(nro0[i]);
break;
case '1':
output_d(nro1[i]);
break;
case '2':
output_d(nro2[i]);
break;
case '3':
output_d(nro3[i]);
break;
case '4':
output_d(nro4[i]);
break;
case '5':
output_d(nro5[i]);
break;
case '6':
output_d(nro6[i]);
break;
case '7':
output_d(nro7[i]);
break;
case '8':
output_d(nro8[i]);
break;
case '9':
output_d(nro9[i]);
break;
case '+':
output_d(mas[i]);
break;
case '=':
output_d(igual[i]);
break;
case 'o':
output_d(off[i]);
break;
default:
break;
}
delay_ms(ms);
}//fin for
j++;
}//fin while
}
void leerSelector1()
{
int8 dato=input_A();
dato<<=5;
dato>>=5;
switch(dato)
{
case 1: mostrar('1'); break;
case 2: mostrar('2'); break;
case 3: mostrar('3'); break;
case 4: mostrar('4'); break;
case 5: mostrar('5'); break;
case 6: mostrar('6'); break;
case 7: mostrar('7'); break;
case 0: mostrar('0'); break;
default: break;
}
}

void leerSelector2()
{
int8 dato=input_A();
dato<<=2;
dato>>=5;
switch(dato)
{
case 1: mostrar('1'); break;
case 2: mostrar('2'); break;
case 3: mostrar('3'); break;
case 4: mostrar('4'); break;
case 5: mostrar('5'); break;
case 6: mostrar('6'); break;
case 7: mostrar('7'); break;
case 0: mostrar('0'); break;
default: break;
}
}

void pulsador()
{
int8 pulso=input(PIN_A6);
if(pulso==0)
{
cont++;
if(cont==6) cont=0;
}
//else pulso=input(PIN_A6);
}

You might also like