我用51单片机的外部中断,外部中断来不同的脉冲代表不同的键值,我现在想写一个按键可调延时的子程序,比方说我发四个不同的键值,0x0d,0x0e,0x0f,0x10,然后当外部中断接收键值为0x0f的时候是延时变量加,接收键值为0x10的时候是延时变量减,0x0d是加减键值有效,0x0e是加减键值无效,取延时默认值,我取延时默认值为200,每加减一次加减200,加到1000返回默认值200,减到200返回1000,我的程序写的是这样的
飞(475810003) 18:50:21
if(num==0x0d)
{
clear_led();
flag==0;
delay1ms(50);
// mode11();
}
if(num==0x0e)
{
clear_led();
flag==1;
delay1ms(50);
// mode11();
}
void delay1ms(z)
{
uint x,y;
//z=200;
// for(x=z;x>0;x--)
// for(y=110;y>0;y--);
if(flag==0)
{
if(num==0x0f)
{
z=z+200;
if(z==1000)
z=200;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
if(num==0x10)
{
z=z-200;
if(z==200)
z=1000;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
}
if(flag==1)
{
z=200;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
}
飞(475810003) 18:51:19
但是有问题,加减那段程序没有执行,我又想不清楚哪儿出毛病了,求指教,谢谢各位了 |