Professional Documents
Culture Documents
3
3
}
int main(void)
{
unsigned char number , operator1 , operator2 , result ;
int p = 0; int temp1 , temp2 , temp3 , temp4 , ans1 , ans2 ;
unsigned char a,b,c,d;
int i = 0;
unsigned char colloc, rowloc;
KEY_DDR = 0xF0;
KEY_PRT = 0xFF;
usart_init(); //initialize serial communication
while(1)
{
do
{
KEY_PRT &= 0x0F;
asm("NOP");
colloc = (KEY_PIN & 0x0F);
} while(colloc != 0x0F);
do
{
do
{
_delay_ms(20);
colloc =(KEY_PIN&0x0F);
} while(colloc == 0x0F);
_delay_ms(20);
colloc = (KEY_PIN & 0x0F);
}while(colloc == 0x0F);
while(1)
{
loop:
KEY_PRT = 0xEF;
asm("NOP");
colloc = (KEY_PIN & 0x0F);
if(colloc != 0x0F)
{
rowloc = 0;
break;
}
KEY_PRT = 0xDF;
asm("NOP");
colloc = (KEY_PIN & 0x0F);
if(colloc != 0x0F)
{
rowloc = 1;
break;
}
KEY_PRT = 0xBF;
asm("NOP");
colloc = (KEY_PIN & 0x0F);
if(colloc != 0x0F)
{
rowloc = 2;
break;
}
KEY_PRT = 0x7F;
asm("NOP");
colloc = (KEY_PIN & 0x0F);
rowloc = 3;
break;
}
if(colloc == 0x0E){
number = (keypad[rowloc][0]); //transmit letter
}
else if(colloc == 0x0D) {
number = (keypad[rowloc][1] );}
else {
number = (keypad[rowloc][3]);}
while (i<6){
if (i==0 && number!= '+' && number!= '-' && number!= 'x' &&
number!= '/' && number!= '='){
_delay_ms(20);
a = number ;
temp1 = a - '0';
usart_send(a);
i=1;
break;
}
if (i==1 && number!= '+' && number!= '-' && number!= 'x' &&
number!= '/' && number!= '='){
_delay_ms(20);
c = number ;
temp2 = c - '0';
usart_send(c);
i=2;
break;
}
if (i==2 && number!= '1' && number!= '2' && number!= '3' &&
number!= '4' && number!= '5' && number!= '6' && number!= '7' && number!= '8' &&
number!= '9' && number!= '=') {
operator1 = number;
_delay_ms(20);
usart_send(operator1);
i=3;
break;
}
if (i==3 && number!= '+' && number!= '-' && number!= 'x' &&
number!= '/' && number!= '=') {
b = number;
temp3 = b - '0';
_delay_ms(20);
usart_send(b);
i=4;
break;
}
if (i==4 && number!= '+' && number!= '-' && number!= 'x' &&
number!= '/' && number!= '=') {
d = number;
temp4 = d - '0';
_delay_ms(20);
usart_send(d);
i=5;
break;
}
i=0;
break;
}
return 0;
}