鱼C论坛

 找回密码
 立即注册
查看: 1646|回复: 0

两个红外接近开关如何工作?(代码看不太懂,有大佬可以解释一下这代码过程吗?)

[复制链接]
发表于 2020-5-12 20:00:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是两个红外接近开关和WT588D模块一起工作的部分代码。
工作方式大概就是:人从右往左分别经过两个红外接近开关代表有人进入,从左往右代表有人出去。

/*****这个前面定义的全局变量******/
sbit GD1=P1^4;  //GD1为红外接近开关1
sbit GD2=P1^5;  //GD2为红外接近开关2
bit GD1_flag=0;
bit GD2_flag=0;
bit enter_flag;//进入标志位
bit out_flag;//出去标志位
uchar wait=0;
/*******************************/
void WT_dispose()     
{
        if(out_flag) /*有人进来*/
        {
                if(!GD1)  /*当传感器输出为低电平才工作的意思吗?*/
                {
                        if(GD1_flag)  /*GD1_flag不是初始化为0了吗,它什么情况下会变为1呢?*/
                        {
                                GD1_flag=0;
                                out_flag=0;
                                out_sound=1;
                                if(PeopleNum<99)  
                                 {
                                   PeopleNum++;
                                   if(PeopleNum<NumPeople)
                                    {
                                          PeopleBit = 1;
                                        }
                                        else
                                        {
                                           if(PeopleBit==1)        
                                            {
                                                  PeopleBit = 0;
                                                  Beep1 = 1;     GSM_Send_Num=3;  GSM_Send = 1;
                                                }
                                        }

                                 }
                                 

                                 
                        }
                }
                   else GD1_flag=1; /*对应最开始那个if*/
        }
        else  
        {
                if(!GD1)
                {
                        if(GD1_flag)
                        {
                                GD1_flag=0;
                                enter_flag=1;
                                wait=6;
                        }
                }
                else GD1_flag=1;
                       
        }
        if(enter_flag) /*人出去*/
        {
               
                if(!GD2)
                {
                        if(GD2_flag)
                        {
                                GD2_flag=0;
                                enter_flag=0;
                                ent_sound=1;
                                if(PeopleNum>0)PeopleNum--;
                                if(PeopleNum<NumPeople)       
                                 {
                                    PeopleBit = 1;        Beep1=0;
                                 }
                        }
                }
                else GD2_flag=1;
        }
        else
        {
                if(!GD2)
                {
                        if(GD2_flag)
                        {
                                GD2_flag=0;
                                out_flag=1;
                                wait=6;
                        }
                }
                else GD2_flag=1;
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-4 18:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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