找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3130|回复: 7
收起左侧

请看一下这个延时程序,帮忙改一下。

[复制链接]
ID:106553 发表于 2016-7-25 17:19 | 显示全部楼层 |阅读模式
要求是这样的,当按键按下灯1延时一会后点亮。按键弹起后灯1马上灭掉,同时灯2马上点亮延时一会灯灭掉。

#include <reg52.h>

sbit k1 = P3^4;        //按键

sbit led1 = P3^1;        //灯1
sbit led2 = P3^2;        //灯2

void delay(unsigned int t);         //延时子程序

//主程序
void main(void)
{
        while(1){                //扫描按键
                if(k1==0)        //按键按下
                delay(60000); //延时一会灯1才亮
                led1 = 0;        //灯亮
               
                if(k1==1)        //按键弹起
                 {
                 led1 = 1;        //灯1马上灭掉
                led2 = 0; //同时灯2马上点亮
                        }

                delay(60000);                //延时时间               
                led2 = 1;        //灯2亮一会后灭掉
                       
        }
}
  //延时子程序
void delay(unsigned int t)   
{
        while(t--);               
}

回复

使用道具 举报

ID:106553 发表于 2016-7-25 23:31 | 显示全部楼层
现在的问提是灯2一直亮,要等到按下键灯2才会灭掉,不过松开键灯2又一直亮了。我是想要松开键后灯2亮一会后自己灭掉。请帮改一下,谢谢了。
回复

使用道具 举报

ID:57149 发表于 2016-7-26 11:01 | 显示全部楼层
这个程序 led2 会一直接亮着,只有键按下才会灭。
回复

使用道具 举报

ID:106553 发表于 2016-7-26 13:51 | 显示全部楼层
hantp 发表于 2016-7-26 11:01
这个程序 led2 会一直接亮着,只有键按下才会灭。

是的,怎么样松开键LED2亮一会灭掉啊?
回复

使用道具 举报

ID:121156 发表于 2016-7-26 14:31 | 显示全部楼层
本帖最后由 PK250 于 2016-7-26 15:53 编辑

#include <reg52.h>

sbit k1 = P3^4;        //按键

sbit led1 = P3^1;        //灯1
sbit led2 = P3^2;        //灯2
unsigned char n=0;
void delay(unsigned int t);         //延时子程序

//主程序
void main(void)
{
        while(1){                //扫描按键
                if(k1==0)        //按键按下
                {                if(n==0){                        delay(60000); //延时一会灯1才亮
                led1 = 0;
                n=1;}
}        //灯亮
               
                if(k1==1)        //按键弹起
                 {                 if(n==1)
                 
                {led1 = 1;        //灯1马上灭掉
                led2 = 0; //同时灯2马上点亮               
               delay(60000);                //延时时间               
                led2 = 1;        //灯2亮一会后灭掉
                n=0;}
                        }

               
                     
        }
}
  //延时子程序
void delay(unsigned int t)   
{
        while(t--);               
}



这样led2就不会一直亮了





回复

使用道具 举报

ID:106553 发表于 2016-7-26 22:13 | 显示全部楼层
PK250 发表于 2016-7-26 14:31
#include

sbit k1 = P3^4;        //按键

谢谢!这个程序很好。
回复

使用道具 举报

ID:134450 发表于 2016-7-27 10:11 | 显示全部楼层
精确点的话,加上消抖
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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