51单片机的初学者 keil编程出现问题帮忙看看吧
kuaidi.ping-jia.net 作者:佚名 更新日期:2024-08-30
程序及仿真电路存在其他健壮性问题,这里不予表述及建议。
主要问题:
while(1)循环有问题。
原因分析:
你的main函数进来a=P1,只是给a附一个初值,然后一直循环while(1)里面。
while(1)里面a的值一直是初值(0xff),switch函数根本侦测不到按键值。
短期建议:
while(1)内添加获取键值代码为
a=P1。
while(1)
{
a=P1;
/*添加此行代码*/
switch(a)
{
case
0xfe:P0=0xf9;delay();break;
case
0xfd:P0=0xa4;delay();break;
case
0xfb:P0=0xb0;delay();break;
case
0xf8:P0=0x99;delay();break;
case
0xef:P0=0x92;delay();break;
case
0xdf:P0=0x82;delay();break;
case
0xbf:P0=0xf8;delay();break;
case
0x8f:P0=0x80;delay();break;
}
}
主要问题:
while(1)循环有问题。
原因分析:
你的main函数进来a=P1,只是给a附一个初值,然后一直循环while(1)里面。
while(1)里面a的值一直是初值(0xff),switch函数根本侦测不到按键值。
短期建议:
while(1)内添加获取键值代码为
a=P1。
while(1)
{
a=P1;
/*添加此行代码*/
switch(a)
{
case
0xfe:P0=0xf9;delay();break;
case
0xfd:P0=0xa4;delay();break;
case
0xfb:P0=0xb0;delay();break;
case
0xf8:P0=0x99;delay();break;
case
0xef:P0=0x92;delay();break;
case
0xdf:P0=0x82;delay();break;
case
0xbf:P0=0xf8;delay();break;
case
0x8f:P0=0x80;delay();break;
}
}