微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > c51单片机,怎样实现当A按键按下时执行for循环,然后在按下B按键,停止for循环

c51单片机,怎样实现当A按键按下时执行for循环,然后在按下B按键,停止for循环

时间:10-02 整理:3721RD 点击:
c51单片机,怎样实现当A按键按下时执行for循环,然后在按下B按键,跳出for循环执行其他程序。
程序如下:
start()
{
     for(i=0; i<10000;i++)
     {
            P2^0 = 1;
            delay(500);
            P2^0 = 0;
            delay(100);
     }
}
switch (key)
{
       case  A:   start();  break;
       case  B:   P2^0=0;break;
}

因为你是在循环里,所以还是在循环里判断,而且switch语句最好不要直接判断按键,而是把按键的按下定义成两个数字,这样在跳出case A后会直接进入case B,否则可能会需要再按一次才能进入case B,不过一般情况下,按照7楼的做法已经能达到要求了。

很简单嘛~~~~你晓得 线程 吗?用 A线程来结束 B线程;用 B线程来结束 A线程 不就可以啦!

按键连接在外中断。

51有线程?

采用外部中断吧  A B 设为外部中断。

除了中断还有其他方法了没?因为用的是矩阵键盘,使用外部中断的话,就需要将这两个按键独立出来

使用一个标志位吧,按键B按下后标志位置位。For循环中检测到标志位置位就执行一句break;就行了。

在for循环里加一判断语句,用return强行退出本子程序,不执行以下任何语句。
                if(key==B)
                {
                        return;
                }

看看,有什么收获?

我觉得有问题因为你是在循环里,所以还是在循环里判断,而且switch语句最好不要直接判断按键,而是把按要直接判断按键,而是把按键的按下定义成两个数字,这样在跳出case A后会直接进入case B,否则可能会需要再按一次才能进入case B,不过一般情况下,按照7楼的做法已经能达到要求了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top