找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请教下关于两对红外对射传感器检测人的进出门的程序,不考虑并排的情况

[复制链接]
ID:161953 发表于 2017-8-17 22:54 | 显示全部楼层 |阅读模式
10黑币
不考虑并排的情况下,人的进或出(有连续进,连续出,一出一进,一进一出等情况,我写了一个程序,有连续进,一进一出,一出一进没问题,但连续出的情况就有问题了,求帮忙解决,先谢谢各位了
主要相关程序如下:
while (1) //这是主函数里的
{

if(HW1==1&&HW2==0)
{
// led6=0;
delay_ms(100);
if(HW1==1&&HW2==1)
{
HW1=0; //
// H21=0;
// led6=1;
HW2=0; //
// led7=1;
SendStringByUart3(youren);//发送指令
}
}
else if(HW1==0&&HW2==1)
{
HW1=0;
// led6=1;
HW2=0;
// led7=1;
// H21=1;
}


void INT0_int (void) interrupt INT0_VECTOR //红外对射开关1引起的中断0
{
HW1=1;
}


void INT1_int (void) interrupt INT1_VECTOR //红外对射开关2引起的中断1
{
HW2=1;
}

回复

使用道具 举报

ID:123289 发表于 2017-8-17 23:55 | 显示全部楼层
单向可以,
双向混合(同时有出有入)不行。
双向分开(不同时)可以。
回复

使用道具 举报

ID:161953 发表于 2017-8-18 03:17 | 显示全部楼层
yzwzfyz 发表于 2017-8-17 23:55
单向可以,
双向混合(同时有出有入)不行。
双向分开(不同时)可以。

我就需要这种,请问有程序或指点下吗?谢谢
回复

使用道具 举报

ID:161953 发表于 2017-8-18 03:20 | 显示全部楼层
yzwzfyz 发表于 2017-8-17 23:55
单向可以,
双向混合(同时有出有入)不行。
双向分开(不同时)可以。

我现在排除了第二种,需要的是第一三种,但程序在第三种那里出现bug,假设屋里有两个人,轮流出门,第二个出门就会被检测到是进门的
回复

使用道具 举报

ID:123289 发表于 2017-8-18 22:01 | 显示全部楼层
不在于程序,而在于你如何构思,你不要忙于写程序,而是要先做下列事情中的一种:
.列出逻辑表
.画出框图
回复

使用道具 举报

ID:679425 发表于 2020-3-7 10:23 | 显示全部楼层
列出逻辑表
.画出框图
回复

使用道具 举报

ID:494707 发表于 2020-3-7 12:14 | 显示全部楼层
大概看懂你的程序,有个建议,程序里面不要主程序和中断都修改变量。这样计算你逻辑觉得调通了,但偶尔会出现不灵的情况,程序写的时候注意临界保护
回复

使用道具 举报

ID:468535 发表于 2020-3-7 13:36 来自手机 | 显示全部楼层
请参考编码开关的程序,这两个例子有点类似,抓住正反走的关系
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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