搜索
bottom↓
回复: 17

两个死循环子程序按键怎么跳转,求助!

[复制链接]

出0入0汤圆

发表于 2012-11-10 14:47:31 | 显示全部楼层 |阅读模式
下面的程序怎么利用P3.2按键跳出第一个死循环CON1;然后跳到CON2一直循环CON2的死循环程序;如果我在按P3.2再跳到CON1死循环程序一直执行CON1的死循环,相互两者之间的死循环不能同时进行智能进行CON1或者CON2其中一个死循环程序,不想用中断怎么用,用计数功能怎么用。有谁知道帮忙指导一下。
  1. void CON2()
  2. {
  3.            while(1)
  4.         {
  5.           for(movetime=0;movetime<2;movetime++)
  6.                R2_LED();//正向流水
  7.         for(movetime=0;movetime<2;movetime++)
  8.                L2_LED();//反向流水
  9.           }
  10.   }

  11. void CON1()
  12. {
  13.     while(1)
  14.     {          
  15.           for(movetime=0;movetime<2;movetime++)
  16.                R1_LED();//正向流水
  17.         for(movetime=0;movetime<2;movetime++)
  18.                L1_LED();//反向流水         
  19.           }
  20.   }
  21.                  

  22. void main()
  23.   {          
  24.         INTinit();//中断程序初始化
  25.         P0=0x00;
  26.         CON1();
  27.    }
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出50入0汤圆

发表于 2012-11-10 15:40:20 | 显示全部楼层
为什么不写到一个程序里,而要分成两个子程序来写。完全可以写到一个程序里呀。如果有不同的程序来调用,只需要设置和调用程序相应的标志位就行了。

出0入0汤圆

 楼主| 发表于 2012-11-10 16:27:22 | 显示全部楼层
wangrwnyan123 发表于 2012-11-10 15:40
为什么不写到一个程序里,而要分成两个子程序来写。完全可以写到一个程序里呀。如果有不同的程序来调用,只 ...

我这里面已经有四个子程序,我写了一个,利用中断功能,为什么转了一圈就停了,
  1. void INTinit()//外部中断初始化
  2.    {
  3.         EX0=1;//使能外部中断0开       
  4.         EX1=1;
  5.         IT0=1;//外部中断0下降沿使能
  6.         IT1=1;
  7.         EA=1;//总中断使能开                
  8.      }

  9. void CON2()
  10. {
  11.            while(1)
  12.         {
  13.           for(movetime=0;movetime<2;movetime++)
  14.                R2_LED();//正向流水
  15.         for(movetime=0;movetime<2;movetime++)
  16.                L2_LED();//反向流水
  17.           }
  18.   }

  19. void CON1()
  20. {
  21.     while(1)
  22.     {          
  23.           for(movetime=0;movetime<2;movetime++)
  24.                R1_LED();//正向流水
  25.         for(movetime=0;movetime<2;movetime++)
  26.                L1_LED();//反向流水         
  27.           }
  28.   }
  29.                  

  30. void main()
  31.   {          
  32.         INTinit();//中断程序初始化
  33.         P0=0x00;
  34.         //CON1();
  35.    if (P3==0xf7)
  36.      {
  37.           CON2();
  38.           EX1=0;
  39.           IT1=0;
  40.           }
  41.         else
  42.           {
  43.                 CON1();
  44.            }
复制代码

出0入0汤圆

发表于 2012-11-10 16:30:20 | 显示全部楼层
= =。。。。  楼主对C语言完全没有概念啊。。。。

while(1)
{
     if(XXXX)
     {...
     }
     else
     {...
     }
}

出0入0汤圆

 楼主| 发表于 2012-11-10 16:31:53 | 显示全部楼层
写了一个不行,按键最好是有点那种互锁的感觉,不知道怎么写!加两个按键独立运行也行好像!

出0入0汤圆

 楼主| 发表于 2012-11-10 16:37:16 | 显示全部楼层
sco518 发表于 2012-11-10 16:30
= =。。。。  楼主对C语言完全没有概念啊。。。。

while(1)

我不是让按键一直死循环,需要手动按键按一次第一个CON1,再按一次是CON2的调用,就是相互之间不能影响。用两个按键可以解决这个问题好像!

出0入0汤圆

发表于 2012-11-10 16:37:23 | 显示全部楼层
我已经不知道怎么和你解释了。。。多看看别人的程序框架吧。。。。。

出0入0汤圆

发表于 2012-11-10 16:49:06 | 显示全部楼层
SengChuary 发表于 2012-11-10 16:31
写了一个不行,按键最好是有点那种互锁的感觉,不知道怎么写!加两个按键独立运行也行好像! ...

加标志位,按键1工作关闭按键2标志位,按键2工作关闭按键1标志位.

出0入0汤圆

发表于 2012-11-10 16:51:13 | 显示全部楼层
楼主陷在了自己的思维中

出50入0汤圆

发表于 2012-11-10 17:01:27 | 显示全部楼层
楼主可能很少看别人的例子吧,建议多参考别人的程序。一个很简单的程序,被你自己搞复杂了。

出0入0汤圆

 楼主| 发表于 2012-11-10 17:12:28 | 显示全部楼层
wangrwnyan123 发表于 2012-11-10 17:01
楼主可能很少看别人的例子吧,建议多参考别人的程序。一个很简单的程序,被你自己搞复杂了。 ...


你说对,我很少看别人的例程,我都是自己根据硬件要求写!有点随手掂来就写

出0入0汤圆

发表于 2012-11-10 17:17:28 | 显示全部楼层
楼主是二次元的 没法交流是肯定了

出0入0汤圆

发表于 2012-11-10 21:47:21 | 显示全部楼层
楼上起码应该让两端程序都执行,然后利用键值进行切换,或者专门有一个扫描的程序,去扫描按键,根据键值不断的调用不同的程序。
楼上那种写法优点FPGA的感觉,但是逻辑性又不强。引起估计楼主主要做硬件,但是有没有弄过FPGA编程。

出0入0汤圆

发表于 2012-11-11 20:48:10 | 显示全部楼层
SengChuary 发表于 2012-11-10 17:12
你说对,我很少看别人的例程,我都是自己根据硬件要求写!有点随手掂来就写 ...

  建议LZ先把流程图写好,如果再大点的系统程序,用这个思维方式的话,写出来的东西也很乱!这也是我的前辈教我的!

出0入0汤圆

发表于 2012-11-11 21:42:47 | 显示全部楼层
LZ的while(1)应该写到main函数中啊
while(1)
{
     if(P3==0xf7)
     ……
}

出0入0汤圆

发表于 2012-11-12 11:33:28 | 显示全部楼层
只看一下主程序就知道它无法完成你要的效果了。元芳,你说呢?
建议你看些别人写的程序框架,多学习学习。
我猜你的意思是:
程序一开始先让LED流水灯禁止流动,当按下按钮1时,LED正向流动;当按下按钮2时,LED反向流动。
只要逻辑思维清晰,写出这个程序不难。祝你早日成功!

出0入4汤圆

发表于 2012-11-12 11:56:25 | 显示全部楼层
程序执行完了 停止了  没事可以休息了  

出0入0汤圆

发表于 2012-11-12 20:59:45 | 显示全部楼层
可以用keil 自带 的rtxtiny操作系统实现这个功能
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 11:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表