打印

新人求助

[复制链接]
740|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hnxhzq|  楼主 | 2019-11-22 08:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>                 
#include <intrins.H>

#define uchar unsigned char
#define uint unsigned int  

//sfr P3M0=0Xb2;
//sfr P3M1=0Xb1;

sbit OUT=P3^3;         
sbit K1=P3^2;
bit u=0;

void delay(uint ms)          
{
        uint ti;
        while(ms--)
        {
                for(ti=0;ti<112;ti++)
                {
                }
        }
}

void main()
{       
        OUT=0;
  while(1)
  {
             if(K1==0)
                   delay(500);
                {if(K1==0)
        {
                OUT=!OUT;
                delay(50000);
                while(!K1);
         }
        }
  }
}       

/*上面代码是一个开关,实现按键都延时x秒有效,现在想改成  OUT=0时,延时x秒按键生效。
(意思是可以随时关,但关了之后要延时x秒才能开,哪位大神能指导一下呀!*/

使用特权

评论回复

相关帖子

沙发
dirtwillfly| | 2019-11-22 08:28 | 只看该作者
意思是用按键实现开关的功能吗?

使用特权

评论回复
板凳
cn016994291| | 2019-11-22 09:25 | 只看该作者
VX说吧详细说明一下你的问题,帮你分析一下,微信lmwktr1010

使用特权

评论回复
地板
hnxhzq|  楼主 | 2019-11-22 17:04 | 只看该作者
dirtwillfly 发表于 2019-11-22 08:28
意思是用按键实现开关的功能吗?

开关的功能已经实现了,只是想修改一下按键的延时规则,上面的代码延时规则是不管开,关都延时x秒。
现在想改为,随时可以关,但由“关”变为 “开”时,延时x 秒,按键才有效。

使用特权

评论回复
5
dirtwillfly| | 2019-11-22 17:12 | 只看该作者
hnxhzq 发表于 2019-11-22 17:04
开关的功能已经实现了,只是想修改一下按键的延时规则,上面的代码延时规则是不管开,关都延时x秒。
现在 ...

说清楚就容易了。把
        {
                OUT=!OUT;
                delay(50000);
                while(!K1);
         }
改为:
 {
    OUT=!OUT;


使用特权

评论回复
6
hnxhzq|  楼主 | 2019-11-22 23:00 | 只看该作者
本帖最后由 hnxhzq 于 2019-11-22 23:50 编辑
dirtwillfly 发表于 2019-11-22 17:12
说清楚就容易了。把
改为:

老师:我用的是STC15F104W单片机,按照您的方法改程序之后,经测试没有达到目标要求,开和关仍是一样的延时。

使用特权

评论回复
7
dirtwillfly| | 2019-11-23 23:28 | 只看该作者
hnxhzq 发表于 2019-11-22 23:00
老师:我用的是STC15F104W单片机,按照您的方法改程序之后,经测试没有达到目标要求,开和关仍是一样的延 ...

不应该啊。
抱歉,手里没有这个mcu做验证。

另外,我也不是老师。

使用特权

评论回复
8
hobbye501| | 2019-11-25 08:51 | 只看该作者
加FLAG呗 多嵌套一层判断

使用特权

评论回复
9
tianxj01| | 2019-11-26 09:38 | 只看该作者
hnxhzq 发表于 2019-11-22 17:04
开关的功能已经实现了,只是想修改一下按键的延时规则,上面的代码延时规则是不管开,关都延时x秒。
现在 ...

方法很多了。
最典型的,你这是一个单按钮乒乓开关,则用一个计数器,奇数延时、偶数瞬时,或者换一下,就可以实现不对称动作。
或者轮换,每经过一次延时程序段,则修改一个标志,下一次看见标志则绕过延时,同时修改标志位为正常值。
等等,实现方法不一而足。

使用特权

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

本版积分规则

2

主题

7

帖子

0

粉丝