打印

求教按键可调延时的子程序怎么写

[复制链接]
2728|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mafei881028|  楼主 | 2011-5-14 19:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用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
但是有问题,加减那段程序没有执行,我又想不清楚哪儿出毛病了,求指教,谢谢各位了

相关帖子

沙发
xiaoyuan_ly| | 2011-5-14 20:10 | 只看该作者
晕死了,你自己看看按键的状态了,当响应num==0x0d按键的时候,按你的程序结构,还会去响应num==0x0f 和 num==0x10的按键吗??! 还是我的理解有误,你发的这按键码是组合的? 如果是分别的4个单独键值处理,那就会你说的“加减那段程序没有执行”。因为你本来就没有让它执行。难道没提示警告吗?
警告你这些代码永远不会被执行??!!

使用特权

评论回复
板凳
mafei881028|  楼主 | 2011-5-14 21:43 | 只看该作者
2# xiaoyuan_ly
呵呵,谢谢你了,我解决了,这个程序确实很烂,键值判断我改到中断里了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

2

帖子

1

粉丝