标题: 在一个单片机程序里两个按键控制房间灯不管按那个都可以开和关程序问题 [打印本页]

作者: maidezhu    时间: 2017-5-14 00:57
标题: 在一个单片机程序里两个按键控制房间灯不管按那个都可以开和关程序问题
在一个程序里两个按键控制房间灯不管按那个都可以开和关,然后黑色按键按下过道灯亮然后过30秒灭。延时不能影响到按键和前面房间灯的程序。我自己写的这个,按下过道灯后,按房间灯就不能亮了,要等过道灯灭了才能用。求改下程序。

#define on 1
#define off 0
sbit SW1=P1^0;
sbit SW2=P1^1;
sbit SW3=P3^0; //这个接口i也算按键是wifi模块过来的信号
sbit SW4=P1^2;//定义开关接口
sbit L=P2^6;
sbit Y=P2^7;//输出脚

main()
{
        while(1)
        {
                if(SW1!=SW2!=SW3){
                L=off;
                }else{L=on;}


                                
                if(SW4==1 && Y==1){
                        delay_ms(3000);
                             Y=0;
                        }else if(SW4==0 && Y==0){
                        Y=1;
                        }



作者: zha    时间: 2017-5-14 01:11
你可以用定时器来延时,时间到了改变状态,用delay的话,系统一直在延时,不能干别的
作者: zl2168    时间: 2017-5-14 07:54
单片机控制最终还是要通过连线实现,楼主的题目不值得用单片机。
作者: 军师祭酒    时间: 2017-5-14 09:37
延时程序拿来计时的话,时间久了会产生误差,计时最好拿定时器中断来计时,加几个标志位,就能实现你说的功能了
作者: 宫本无三四    时间: 2017-5-14 11:09
把房间开关接到外部中断上也可以
作者: maidezhu    时间: 2017-5-14 14:42
zha 发表于 2017-5-14 01:11
你可以用定时器来延时,时间到了改变状态,用delay的话,系统一直在延时,不能干别的

写一个给我看下怎么的构架




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1