Professional Documents
Culture Documents
CALCULADORA
CALCULADORA
h>
#define _XTAL_FREQ 20000000
#define rs RD6
#define en RD7
#define r0 RC0
#define r1 RC1
#define r2 RC2
#define r3 RC3
#define c0 RC4
#define c1 RC5
#define c2 RC6
#define c3 RC7
void lcdinit(){
__delay_ms(400); lcdcmd(0x30); __delay_ms(400); lcdcmd(0x30);
__delay_ms(400); lcdcmd(0x30); __delay_ms(400); lcdcmd(0x38);
lcdcmd(0x0F);
lcdcmd(0x01);
lcdcmd(0x06);
lcdcmd(0x80);
}
switch(key)
{
case '+':
disp_num(k1+k2);
break;
case '-':
disp_num(k2-k1);
break;
case '*':
disp_num(k2*k1);
break;
case '/':
disp_num((float)k2/k1);
break;
}
}
}
char scan_key()
{
unsigned char c='s',d;
while(c!='a')
{
r0=1;r1=0;r2=0;r3=0;
if(c0==1 ){ lcddata('7');__delay_ms(500);d= '7';c='a';}
if(c1==1 ){ lcddata('8');__delay_ms(500);d= '8';c='a';}
if(c2==1 ){ lcddata('9');__delay_ms(500);d= '9';c='a';}
if(c3==1 ){ lcddata('/');__delay_ms(500);d= '/';c='a';}
r0=0;r1=1;r2=0;r3=0;
r0=0;r1=0;r2=1;r3=0;
r0=0;r1=0;r2=0;r3=1;
j=(int)(num*10);
numb=(int)num;
if(numb<0)
{
numb = -1*numb; // Make number positive
lcddata('-'); // Display a negative sign on LCD
}