void delay(uint n)
{
int i;
for (i=0;i<n;i++);
}
/*按键采用中断方式,4个按键分别接在P1.5-6-7-8*/
void key2()
{
uchar key_value=0,c=0;
if(int0=1) //无心错用等号它还能仿真成功,改为双等号还没办法仿真成功,老天为什么?
{
int0=0;
c=~P1;
key_value=(c&0xf0);
delay(1000);
c=~P1;
if((key_value&c)!=0)
{
do
{
c=~P1;
}
while((key_value&c)!=0);
delay(1000);
switch(key_value)
{
case 0x10:shuxian[2]=0x1;break;
case 0x20:shuxian[2]=0x2;break;
case 0x40:shuxian[2]=0x3;break;
case 0x80:shuxian[2]=0x4;break;
// default
}
}
}
}
void main()
{
init();
for(;;)
{
key2();
}
}
void key1() interrupt 0
{
int0=1;
}
不知道是硬件还是软件问题 还是本人有问题?
用KEIL仿真的时候能过 各个变量也正常变化 就不怎么回事,前辈指点下 |