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

📄 main.c.bak

📁 上海大宇指纹机软件qqqfwefgergr
💻 BAK
📖 第 1 页 / 共 2 页
字号:
/****************************************Copyright (c)**************************************************
**                               
**                               
**                               
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			
** Last modified Date:  
** Last Version:		
** Descriptions:		
**
**------------------------------------------------------------------------------------------------------
** Created by:			
** Created date:		
** Version:				
** Descriptions:	
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#include "LPC2294.h"
/*****************************************************************************************
**常量定义
*****************************************************************************************/
/*定义中段通道号*/
#define WdtInt 0
#define Timer0Int 4
#define Timer1Int 5
#define Uart0Int 6
#define Uart1Int 7
#define Pwm0Int 8
#define I2c0Int 9
#define Spi0Int 10
#define Spi1Int 11
#define RtcInt 12
#define Exint0Int 14
#define Exint1Int 15
#define Exint2Int 16
#define Exint3Int 17
/*定义波特率*/
#define UartBps 57600
		
/*定义P0口*/
#define FinTxd0 1<<0
#define FinRxd0 1<<1
#define FinEnable 1<<2
#define Row0 1<<3
#define Row1 1<<4
#define Row2 1<<5
#define Row3 1<<6
#define Beep 1<<7
#define RfData 1<<9		//EINT3
#define DoorIn 1<<11
#define InitFlash 1<<14		//EINT1
#define Demolish 1<<28
#define D0Out 1<<29
#define D1Out 1<<30
#define GreenLed 1<<25		//P0.025Green
#define Alarm 0x80000000	//P0.31
/*定义P1口*/
#define RedLed 1<<24		//P1.24Red
#define IrIn 1<<25

/*定义外部变量volatile */

uint8 RevDatBuf[16];		//数据缓冲区0-15
uint8 *PtRevOrSendDat;		//
uint8 SendDataLenth;		//发送的数据包数据计数
uint8 RevDataLenth;		//接收到的数据包数据个数
uint8 RevEndFlag;			//接收数据标志,1=接收完毕
uint16 AckPackLenthBuf;		//接收包头数据缓冲    
uint8 RevDatCnt;			//
uint16 PageId;
uint32 PackCaput;

uint8 NumCnt;
uint8 BStartBuzzerTime;
uint8 BuzzerEvent_RevSameDatCnt;
uint8 BuzzerCnt_DecodeDatCnt;
uint8 TimeNumCnt;
uint8 BstartLawlessOpenDoorTime;
uint8 TimeDoorOpenCnt;
uint8 LableBitVar;
uint16 TimeOneMinuteCnt;
uint8 BEndOneMinuteTime;
uint8 EveryOneMinuteCnt_TimeCnt;
uint8 BStartLedGlintTime;
uint8 TempVar_TimeGlintCnt;
uint8 BstartDoorOpenTime;
uint8 BStartTimeCnt;
uint8 MinuteCnt_LastRevDat;
uint8 LedEvent_TimeBuzzerCnt;
uint8 BStopCheck;
uint8 BStopCheckBuz;

/*定义串口模式设置数据结构*/
/*typedef struct UartMode
{	uint8 DataBit;		//字长度
	uint8 StopBit;		//停止位
	uint8 Parity;		//校验位
}UARTMODE;*/
	
#include "pro.c"
/*****************************************************************************************
** 函数名称 : IRQTimer0()
** 函数功能 : Timer0定时器处理程序
**      	   
** 入口参数 : 无
** 出口参数 : 无
*****************************************************************************************/
void __irq IRQTimer0(void)
{	VICIntEnable = 0x00;
	if(BStartBuzzerTime)
	{	NumCnt++;
	    	switch(BuzzerEvent_RevSameDatCnt)
		{
		case 1://一次短
			if(NumCnt>10)
			{	NumCnt=0;
				BStartBuzzerTime=0;
				BeepOff();
				AlarmOff();
			}
			else
			{	if(NumCnt<6)
				{	BeepOn();
					AlarmOff();
				}
				else
				{	BeepOff();
					AlarmOff();
				}
			}
			break;
		case 2://一次长
			if(NumCnt>40)
			{   BStartBuzzerTime=0;
				NumCnt=0;
				BeepOff();
				AlarmOff();
			}
			else
			{	if(NumCnt<30)
				{	
					BeepOn();
					AlarmOff();
				}
				else
				{	BeepOff();
					AlarmOff();
				}
			}
			break;
		case 3:
		case 5://两次短
			if(!BuzzerCnt_DecodeDatCnt)
			{	if(NumCnt>10)
				{	BuzzerCnt_DecodeDatCnt++;
					NumCnt=0;
				}
				else
				{	if(NumCnt<6)
					{	BeepOn();
						AlarmOff();
					}
					else
					{	BeepOff();
						AlarmOff();
					}
				}
			}
			else
			{	if(BuzzerCnt_DecodeDatCnt==2)
				{	BStartBuzzerTime=0;
					NumCnt=0;
					BeepOff();
					AlarmOff();
				}
				else
				{	if(NumCnt>10)
					{	NumCnt=0;
						BuzzerCnt_DecodeDatCnt++;
					}
					else
					{	if(NumCnt<6)
						{	BeepOn();
							AlarmOff();
						}
						else
						{	BeepOff();
							AlarmOff();
						}
					}
				}
			}
			break;
		case 6://三次短
			if(!BuzzerCnt_DecodeDatCnt)
			{	if(NumCnt>10)
				{	BuzzerCnt_DecodeDatCnt++;
					NumCnt=0;
				}
				else
				{	if(NumCnt<6)
					{	BeepOn();
						AlarmOff();
					}
					else
					{	BeepOff();
						AlarmOff();
					}
				}
			}
			else
			{	if(BuzzerCnt_DecodeDatCnt==3)
				{	BStartBuzzerTime=0;
					NumCnt=0;
					BeepOff();
					AlarmOff();
				}
				else
				{	if(NumCnt>10)
					{	NumCnt=0;
						BuzzerCnt_DecodeDatCnt++;
					}
					else
					{	if(NumCnt<6)
						{	BeepOn();
							AlarmOff();
						}
						else
						{	BeepOff();
							AlarmOff();
						}
					}
				}
			}
			break;
		case 7://一长两短
            if(!BuzzerCnt_DecodeDatCnt)
			{	if(NumCnt>40)
				{	BuzzerCnt_DecodeDatCnt++;
					NumCnt=0;
				}
				else
				{	if(NumCnt<30)
					{	BeepOn();
						AlarmOff();
					}
					else
					{	BeepOff();
						AlarmOff();
					}
				}
			}
			else
			{	if(BuzzerCnt_DecodeDatCnt==3)
				{	BStartBuzzerTime=0;
					NumCnt=0;
					BeepOff();
					AlarmOff();
				}
				else
				{	if(NumCnt>10)
					{	NumCnt=0;
						BuzzerCnt_DecodeDatCnt++;
					}
					else
					{	if(NumCnt<6)
						{	BeepOn();
							AlarmOff();
						}
						else
						{	BeepOff();
							AlarmOff();
						}
					}
				}
			}
			break;
		case 8://两短一长//buz
			if(BuzzerCnt_DecodeDatCnt<2)
			{	if(NumCnt>10)
				{	BuzzerCnt_DecodeDatCnt++;
					NumCnt=0;
				}
				else
				{	if(NumCnt<6)
					{	BeepOn();
						AlarmOff();
					}
					else
					{	BeepOff();
						AlarmOff();
					}
				}
			}
			else
			{	if(BuzzerCnt_DecodeDatCnt==3)
				{	BStartBuzzerTime=0;
					NumCnt=0;
					BeepOff();
					AlarmOff();
				}
				else
				{	if(NumCnt>40)
					{	NumCnt=0;
						BuzzerCnt_DecodeDatCnt++;
					}
					else
					{	if(NumCnt<30)
						{	BeepOn();
							AlarmOff();
						}
						else
						{	BeepOff();
							AlarmOff();
						}
					}
				}
			}
			break;
		case 9://连续长鸣
			if(NumCnt>40)
			{NumCnt=0;}
			else
			{
				if(NumCnt<30)
				{
					BeepOn();
					AlarmOn();
				}
				else
				{
					BeepOff();
					AlarmOn();
				}
			}
			break;
		case 10://连续短鸣
			if(NumCnt>10)
			{NumCnt=0;}
			else
			{	if(NumCnt<6)
				{	BeepOn();
					AlarmOff();
				}
				else
				{	BeepOff();
					AlarmOff();
				}
			}
			break;
		case 11://两次短进入编程
			if(!BuzzerCnt_DecodeDatCnt)
			{	if(NumCnt>10)
				{	BuzzerCnt_DecodeDatCnt++;
					NumCnt=0;
				}
				else
				{	if(NumCnt<6)
					{	BeepOn();
						AlarmOff();
					}
					else
					{	BeepOff();
						AlarmOff();
					}
				}
			}
			else
			{	if(BuzzerCnt_DecodeDatCnt==2)
				{	BStartBuzzerTime=0;
					NumCnt=0;
					BeepOff();
					AlarmOff();
				}
				else
				{	if(NumCnt>10)
					{	NumCnt=0;
						BuzzerCnt_DecodeDatCnt++;
					}
					else
					{	if(NumCnt<6)
						{	BeepOn();
							AlarmOff();
						}
						else
						{	BeepOff();
							AlarmOff();
						}
					}
				}
			}
			break;
		case 12://三次短编程确认
			if(!BuzzerCnt_DecodeDatCnt)
			{	if(NumCnt>10)
				{	BuzzerCnt_DecodeDatCnt++;
					NumCnt=0;
				}
				else
				{	if(NumCnt<6)
					{	BeepOn();
						AlarmOff();
					}
					else
					{	BeepOff();
						AlarmOff();
					}
				}
			}
			else
			{	if(BuzzerCnt_DecodeDatCnt==3)
				{	BStartBuzzerTime=0;
					NumCnt=0;
					BeepOff();
					AlarmOff();
				}
				else
				{	if(NumCnt>10)
					{	NumCnt=0;
						BuzzerCnt_DecodeDatCnt++;
					}
					else
					{	if(NumCnt<6)
						{	BeepOn();
							AlarmOff();
						}
						else
						{	BeepOff();
							AlarmOff();
						}
					}
				}
			}
			break;
		}
	}
	if(BStartTimeCnt)
	{TimeNumCnt++;}

	if(BstartLawlessOpenDoorTime)
	{TimeDoorOpenCnt++;}

	if(BstartDoorOpenTime) //注:BstartDoorOpenTime与BstartLawlessOpenDoorTime不会同时出现,可以共用
	{	TimeDoorOpenCnt++;
	}

	if((LableBitVar&0x80)==0x80)
	{
		TimeOneMinuteCnt++;
		if(TimeOneMinuteCnt>3000)
		{BEndOneMinuteTime=1;}
	}

	if((LableBitVar&0x40)==0x40)
	{	EveryOneMinuteCnt_TimeCnt++;
		if(EveryOneMinuteCnt_TimeCnt>3000)
		{	MinuteCnt_LastRevDat++;
			EveryOneMinuteCnt_TimeCnt=0;
		}
	}

	if(BStartLedGlintTime)
	{
		TempVar_TimeGlintCnt++;
		switch(LedEvent_TimeBuzzerCnt)
		{
		case 0:
		case 2:
		case 8://红秒闪,绿灭
			if(TempVar_TimeGlintCnt>80)  //40
			{TempVar_TimeGlintCnt=0;}
			else
			{   GreenLedOff();
				if(TempVar_TimeGlintCnt<60)  // 30
				{RedLedOn();}
				else
				{RedLedOff();}
			}
			break;
		case 1:
            if(TempVar_TimeGlintCnt>5000)  //40
			{   BStartLedGlintTime=1;
				TempVar_TimeGlintCnt=0;
			}
			break;
		case 5://红亮,绿快闪
            if(TempVar_TimeGlintCnt>25)
			{TempVar_TimeGlintCnt=0;}
			else
			{   RedLedOn();
				if(TempVar_TimeGlintCnt<20)
				{GreenLedOn();}
				else
				{GreenLedOff();}
			}
			break;
		case 9://红慢闪,绿灭
            if(TempVar_TimeGlintCnt>120)
			{TempVar_TimeGlintCnt=0;}
			else
			{   GreenLedOff();
				if(TempVar_TimeGlintCnt<90)
				{ RedLedOn();}
				else
				{ RedLedOff();}
			}
			break;
		}
	}
	T0IR = 0x01;
	VICVectAddr = 0x00;
	VICIntEnable = 0x8030;
}
/*****************************************************************************************
** 函数名称 : IRQTimer1()
** 函数功能 : Timer1定时器处理程序
**      	   
** 入口参数 : 
** 出口参数 : 无
*****************************************************************************************/
void __irq IRQTimer1(void)
{	uint32 StateBuf;
	VICIntEnable = 0x00;
	IO0DIR = IO0DIR|Row1;
	StateBuf = IO0SET;
	if((StateBuf&Row1) == 0)
	IO0SET = IO0SET|Row1;
	else	
	IO0CLR = IO0CLR|Row1;

⌨️ 快捷键说明

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