Hello All,
I am new to MSP430 microcontroller,& using CCS-v4 as a compiler.I am interfacing MSP430F2370 with keypad.
I tried out with following code in C,but i get garbage values while simulating it in Labcenter's Proteus VSM.Please
Please analyse what wrong with following code & if not Please anyone help me for interfacing keypad with MSP430F2370
#include<MSP430f2370.h>
unsigned char x;
void delay(int v)
{
while(v!=0)v--;
}
unsigned char key(void)
{
unsigned char x;
P1DIR|=0X0F;
P1OUT=0XFE; //make row 0 as 0
switch(P1IN & 0xF0) //scan for column
{
case 0xE0: x=0; //0xE0:make column 0 as 0
break;
case 0xD0: x=1; //0xD0:make column 1 as 0
break;
case 0xB0: x=2; //0xB0:make column 2 as 0
break;
case 0x70: x=3; //0x70:make column 3 as 0
break;
default: P1OUT=0xFD; //make next row as 0
switch(P1IN & 0xF0)
{
case 0xE0: x=4;
break;
case 0xD0: x=5;
break;
case 0xB0: x=6;
break;
case 0x70: x=7;
break;
default: P1OUT=0xFB;
switch(P1IN & 0xF0)
{
case 0xE0: x=8;
break;
case 0xD0: x=9;
break;
case 0xB0: x=10;
break;
case 0x70: x=11;
break;
default: P1OUT=0xF7;
switch(P1IN & 0xF0)
{
case 0xE0: x=12;
break;
case 0xD0: x=13;
break;
case 0xB0: x=14;
break;
case 0x70: x=15;
break;
}
}
}
}
return (x);
}
unsigned char keyj(void)
{
unsigned char x;
P1DIR|=0X0F;
P1OUT=0XF0;
x=(P1IN & 0XF0);
return(x);
}
#pragma vector=PORT1_VECTOR
__interrupt void p1int(void)
{
if(keyj()!=0X00)
{
delay(200);
if(keyj()!=0X00)
{
P4OUT=key();
}
}
P1OUT=0XF0;
P1IFG=0X00;
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; /* // Stop WDT */
P4DIR=0XFF;
P4OUT=0X00;
P1DIR=0X0F;
P1OUT=0XF0;
P1IES|=0X0F;
P1IE|=0XF0;
_EINT(); /*/ Enable interrupts */
while(1)
{
LPM0;
_NOP();
}
}