两个死循环子程序按键怎么跳转,求助!
下面的程序怎么利用P3.2按键跳出第一个死循环CON1;然后跳到CON2一直循环CON2的死循环程序;如果我在按P3.2再跳到CON1死循环程序一直执行CON1的死循环,相互两者之间的死循环不能同时进行智能进行CON1或者CON2其中一个死循环程序,不想用中断怎么用,用计数功能怎么用。有谁知道帮忙指导一下。void CON2(){
while(1)
{
for(movetime=0;movetime<2;movetime++)
R2_LED();//正向流水
for(movetime=0;movetime<2;movetime++)
L2_LED();//反向流水
}
}
void CON1()
{
while(1)
{
for(movetime=0;movetime<2;movetime++)
R1_LED();//正向流水
for(movetime=0;movetime<2;movetime++)
L1_LED();//反向流水
}
}
void main()
{
INTinit();//中断程序初始化
P0=0x00;
CON1();
} 为什么不写到一个程序里,而要分成两个子程序来写。完全可以写到一个程序里呀。如果有不同的程序来调用,只需要设置和调用程序相应的标志位就行了。 wangrwnyan123 发表于 2012-11-10 15:40 static/image/common/back.gif
为什么不写到一个程序里,而要分成两个子程序来写。完全可以写到一个程序里呀。如果有不同的程序来调用,只 ...
我这里面已经有四个子程序,我写了一个,利用中断功能,为什么转了一圈就停了,void INTinit()//外部中断初始化
{
EX0=1;//使能外部中断0开
EX1=1;
IT0=1;//外部中断0下降沿使能
IT1=1;
EA=1;//总中断使能开
}
void CON2()
{
while(1)
{
for(movetime=0;movetime<2;movetime++)
R2_LED();//正向流水
for(movetime=0;movetime<2;movetime++)
L2_LED();//反向流水
}
}
void CON1()
{
while(1)
{
for(movetime=0;movetime<2;movetime++)
R1_LED();//正向流水
for(movetime=0;movetime<2;movetime++)
L1_LED();//反向流水
}
}
void main()
{
INTinit();//中断程序初始化
P0=0x00;
//CON1();
if (P3==0xf7)
{
CON2();
EX1=0;
IT1=0;
}
else
{
CON1();
} = =。。。。楼主对C语言完全没有概念啊。。。。
while(1)
{
if(XXXX)
{...
}
else
{...
}
} 写了一个不行,按键最好是有点那种互锁的感觉,不知道怎么写!加两个按键独立运行也行好像! sco518 发表于 2012-11-10 16:30 static/image/common/back.gif
= =。。。。楼主对C语言完全没有概念啊。。。。
while(1)
我不是让按键一直死循环,需要手动按键按一次第一个CON1,再按一次是CON2的调用,就是相互之间不能影响。用两个按键可以解决这个问题好像! 我已经不知道怎么和你解释了。。。多看看别人的程序框架吧。。。。。 SengChuary 发表于 2012-11-10 16:31 static/image/common/back.gif
写了一个不行,按键最好是有点那种互锁的感觉,不知道怎么写!加两个按键独立运行也行好像! ...
加标志位,按键1工作关闭按键2标志位,按键2工作关闭按键1标志位. 楼主陷在了自己的思维中 楼主可能很少看别人的例子吧,建议多参考别人的程序。一个很简单的程序,被你自己搞复杂了。 wangrwnyan123 发表于 2012-11-10 17:01 static/image/common/back.gif
楼主可能很少看别人的例子吧,建议多参考别人的程序。一个很简单的程序,被你自己搞复杂了。 ...
你说对,我很少看别人的例程,我都是自己根据硬件要求写!有点随手掂来就写 楼主是二次元的 没法交流是肯定了 楼上起码应该让两端程序都执行,然后利用键值进行切换,或者专门有一个扫描的程序,去扫描按键,根据键值不断的调用不同的程序。
楼上那种写法优点FPGA的感觉,但是逻辑性又不强。引起估计楼主主要做硬件,但是有没有弄过FPGA编程。 SengChuary 发表于 2012-11-10 17:12 static/image/common/back.gif
你说对,我很少看别人的例程,我都是自己根据硬件要求写!有点随手掂来就写 ...
建议LZ先把流程图写好,如果再大点的系统程序,用这个思维方式的话,写出来的东西也很乱!这也是我的前辈教我的! LZ的while(1)应该写到main函数中啊
while(1)
{
if(P3==0xf7)
……
} 只看一下主程序就知道它无法完成你要的效果了。元芳,你说呢?
建议你看些别人写的程序框架,多学习学习。
我猜你的意思是:
程序一开始先让LED流水灯禁止流动,当按下按钮1时,LED正向流动;当按下按钮2时,LED反向流动。
只要逻辑思维清晰,写出这个程序不难。祝你早日成功! 程序执行完了 停止了没事可以休息了 可以用keil 自带 的rtxtiny操作系统实现这个功能
页:
[1]