找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2073|回复: 3
收起左侧

大神帮我看下这个灯的单片机程序 按下后等延时30面要怎么改。这里面的延时现在变成...

[复制链接]
ID:183046 发表于 2017-5-9 22:04 | 显示全部楼层 |阅读模式
大神帮我看下程序后面一个是按下后等延时30面要怎么改。这里面的延时现在变成了消抖了。是不是不能用while来写啊。


#include <STC15W4K.h>
#include"delay.h"
#define on 1
#define off 0
sbit SW1=P1^0;
sbit SW2=P1^1;
sbit SW3=P3^0;
sbit SW4=P1^2;//定义开关接口
sbit L=P2^6;
sbit Y=P2^7;//输出脚

main(){
        while(1)
        {
                if(SW1!=SW2!=SW3)L=off;//SW1与SW2与SW3不相等时亮               (随便三个按键都可以控制开灯关灯)
                else L=on;                 //否则灭灯
               
                if(SW4==off)  //sw4与off不相等时亮                 (按下这个按键后灯开后面延时30秒)
                Y=off;
                {           
            delay_ms(1);          //延时                      (这个延时变成按键的消抖了而不是电灯的延时控制)        
            Y=on;                //时间到后灯灭                        (这里想延时30秒后关灯。但是不会影响上一个程序)
                }
        }

        
        

}


回复

使用道具 举报

ID:111634 发表于 2017-5-10 10:39 | 显示全部楼层
重新换了一个马甲,“30面”怎么还没换?
回复

使用道具 举报

ID:183046 发表于 2017-5-10 14:02 | 显示全部楼层
zl2168 发表于 2017-5-10 10:39
重新换了一个马甲,“30面”怎么还没换?

30秒哈哈哈打错了
回复

使用道具 举报

ID:185169 发表于 2017-5-10 15:53 | 显示全部楼层
main(){
        while(1)
        {
                if(SW1!=SW2!=SW3)L=off;//SW1与SW2与SW3不相等时亮               (随便三个按键都可以控制开灯关灯)
                else L=on;                 //否则灭灯
               
                if(SW4==off)  //sw4与off不相等时亮                 (按下这个按键后灯开后面延时30秒)
                 {
                   Y=off;
                   for(i=0;i<300;i++)         
                      {
                        delay_ms(100);          //延时                      (这个延时变成按键的消抖了而不是电灯的延时控制)        
                      }                  Y=on;                //时间到后灯灭                        (这里想延时30秒后关灯。但是不会影响上一个程序)
                }
        }

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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