#include
#include
void delay(unsigned int k)
{
unsigned int i;
for(;k>0;k--)
for(i=0;i<200;i++);
}
void button(unsigned int j)
{
unsigned int k;
k=25*j;
P1=0x01;delay(50);
P1=0x00;delay(k);
P1=0x02;delay(50);
P1=0x00;delay(k);
P1=0x04;delay(50);
P1=0x00;delay(k);
P1=0x08;delay(50);
P1=0x00;delay(k);
}
void main()
{
while(1)
{
switch(P0)
{
case 0xFE:button(8);break;
case 0xFD:button(7);break;
case 0xFB:button(6);break;
case 0xF7:button(5);break;
case 0xEF:button(4);break;
case 0xDF:button(3);break;
case 0xBF:button(2);break;
case 0x7F:button(1);break;
default:break;
}
}
}
程序可以通过keil(评估版)编译,没有warnings,问题是在软件仿真时button()函数定义段中的delay(k)可以顺利跳进delay()延时子程序,但delay(50)怎么也跳不进去,除了P1=0x08;delay(50);这一行是个例外。通过观察时间seconds也是同样的情况。怀疑是字符书写的问题,已重试过无效。感觉很奇怪,望前辈指导,谢谢!