do
P1DIR&=~P1DIR;
P1IFG=0;
P1IE=0xff;
P1IES|=0xff;
while(P1IFG=0x00)
}
void password()
{
unsigned char push;//设置局部变量
push=P1IN;
delay(1000)
if(P1IN!=0xff)//机械键盘消抖
swich(push)
{
case 0xee:table[i]=1; break;
case 0xed:table[i]=2; break;
case 0xeb:table[i]=3; break;
case 0xe7:table[i]=4; break;
case 0xde:table[i]=5; break;
case 0xdd:table[i]=6; break;
case 0xdb:table[i]=7; break;
case 0xd7:table[i]=8; break;
case 0xbe:table[i]=9; break;
case 0xbd:table[i]=0; break;
case 0xbb:table[]={0,0,0,0,0,0,0,0,0,0};break;
case 0xb7:i=10;P1IE&=~P1IE;break;
default:break; //使用的是4X4矩阵键盘,行列接口为P1.0-P1.3接行,P1.4-P1.7接列,平时为高电平,若有按键则为低电平,按下一个键会使行列中各有一个为低电平。其中case 0xb7为确认键,关闭中断,直接令当前数组与密码设置数组比较。case 0xbb为清除键,清除已输入的全部密码。
}
i=i+1;
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR()
{
password();
P1IFG&=~P1IFG;
_enable_interrupts();//开启总中断,并将P1中断置0,以等待下一个信号输入(若已输入OK键,则P1口中断关闭,按键无效)
P1IES|=0xff;
}
void delay(unsigned int m)//阻塞CPU的延时方式。
{
for (x=m;m>0;m--)
}