⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 action.c

📁 基于芯片DS1302的湍流实时时钟的实现
💻 C
字号:
/**********************************************************************
* System Name		DOOR
* Source Name		action.c
* Function			人的动作
* Version	Date		Editor		Modification
* 1.0		2007/05/10	周斌		做成
**********************************************************************/


#include "global.h"
#include "uart0.h"

//各种传感器状态下的位置值
/*
0	:0000	:0	//0表示无效值
1	:0001	:7
2	:0010	:5
3	:0011	:6
4	:0100	:3
5	:0101	:0
6	:0110	:4
7	:0111	:5
8	:1000	:1
9	:1001	:0
10	:1010	:0
11	:1011	:0
12	:1100	:2
13	:1101	:0
15	:1110	:3
16	:1111	:4
*/
UCHAR position_value[16]={0,7,5,6,3,0,4,5,1,0,0,0,2,0,3,4};



/**********************************************************************
* Function Name		action_judge
* Function Desc		判断动作:出、入
* Return Value		无
* Parameter         
			t_ir:红外传感器值
* Version	Date		Editor		Modification
* 1.0		2007/05/10	周斌		做成
**********************************************************************/
void action_judge(UCHAR t_ir)
{
	static UCHAR last_valid;	//上次的有效值
	static UCHAR this_valid;	//本次有效值
	static UCHAR unvalid_count;	//无效值计数,出现100个无效值表示一个人出入结束
	static UCHAR move_value = 128;	//本次检测的人的移动值,初始值128
	if(position_value[t_ir]!=0)//如果是有效值
	{
		this_valid = position_value[t_ir];	//保存有效值
		unvalid_count=0;	//清空无效值计数
		if(this_valid!=last_valid)	//如果是新的有效值
		{
			//移动计算
			if(last_valid != 0)
			{
				move_value += this_valid;
				move_value -= last_valid;
			}
			last_valid = this_valid;
		}
	}
	else
	{
		if(unvalid_count<10)
		{
			unvalid_count++;
		}
		else
		{
			//根据结果判断出入
			if(move_value>=132)	//大于130表示进
			{
				uart0_put_string("ENTER\r\n");
				move_value=128;	//复位移动值

			}
			else if(move_value<=124)	//小于126表示出
			{
				uart0_put_string("EXIT\r\n");
				move_value=128;	//复位移动值
			}
			last_valid = 0;
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -