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

📄 main.c

📁 指纹识别源代码,用于智能门紧,还有配合MF800卡使用
💻 C
字号:
#include "reg58.h"
#include "intrins.h"
#include "main.h"
#include "373.h"
#include "sram.h"
#include "system.h"
#include "init.h"
#include "lcd.h"
#include "define.h"
#include "timer.h"
#include "rxd.h"
#include "keypad.h"
#include "inout.h"
#include "clock.h"
#include "setup.h"
#include "pccomm.h"
#include "event.h"
//////////////////////////////////////////////////////////////////////////////////
void init_var()
{
	//373
	beeponflag=0;
	doorunlockflag=0;
	alarmonflag=0;
	ttl1onflag=0;
	ttl2onflag=0;

	buff373=0;

	//keypad
	idinflag=0;
	passinflag=0;
	keydownflag=0;
	keycounter=0;

	//rxd
	rxd0flag=0;
	rxd0packflag=0;
	rxd1flag=0;
	keypackflag=0;

	//timer
	secondsflag=0;
	
	//inout
	exitfirst=1;
	aux1first=1;
	aux2first=1;
	contactfirst=1;
	tamperfirst=1;
	duressflag=0;
	exitlowfirst=1;
	aux1lowfirst=1;
	aux2lowfirst=1;
	contactlowfirst=1;
	tamperlowfirst=1;

	instate=0;


	//setup
	submenuflag=0;
	submenu1flag=0;
	setflag=0;

	//pccomm
	removeuserflag=0;
	removeeventflag=0;
}
//////////////////////////////////////////////////////////////////////////////////
void checkbeepon()
{
	if(beepontimer)
	{
		if(beepontimer<99)
		{
			beepontimer--;
		}
		set_373(BEEPPORT);
	}
	else
	{
		if(beeponflag)
		{
			beeponflag=0;
			clr_373(BEEPPORT);
			
		}
	}
}
//////////////////////////////////////////////////////////////////////////////////
void checkdooron()
{
	if(doorontimer)
	{
		if(doorontimer<99)
		{
			doorontimer--;
		}
			//set_373(DOORPORT);
		unlockdoor();
	}
	else
	{
		if(doorunlockflag)
		{
			doorunlockflag=0;
			//clr_373(DOORPORT);
			lockdoor();

			if(instate&bittbl[CONTACTCOUNT])
			{
				contactovertimer=20;
			}
		}
	}
}
//////////////////////////////////////////////////////////////////////////////////
void checkcontactover()
{
	if(contactovertimer)
	{
		if(contactovertimer<99)
		{
			contactovertimer--;
			if(!contactovertimer)
			{
				if(instate&bittbl[CONTACTCOUNT])
				{
					accessevent(EVENTINPUT|MESSAGECONTACTOVERTIME);
				}
			}
		}
	}
	else
	{
		if(instate&bittbl[CONTACTCOUNT])
		{
			conversebeep();
		}
	}
}
//////////////////////////////////////////////////////////////////////////////////
void checkalarmon()
{
	if(alarmontimer)
	{
		if(alarmontimer<99)
		{
			alarmontimer--;
		}
		set_373(ALARMPORT);
	}
	else
	{
		if(alarmonflag)
		{
			alarmonflag=0;
			clr_373(ALARMPORT);
		}
	}
}
//////////////////////////////////////////////////////////////////////////////////
void checkttl1on()
{
	if(ttl1ontimer)
	{
		if(ttl1ontimer<99)
		{
			ttl1ontimer--;
		}
		set_373(TTL1PORT);
	}
	else
	{
		if(ttl1onflag)
		{
			ttl1onflag=0;
			clr_373(TTL1PORT);
		}
	}
}
//////////////////////////////////////////////////////////////////////////////////
void checkttl2on()
{
	if(ttl2ontimer)
	{
		if(ttl2ontimer<99)
		{
			ttl2ontimer--;
		}
		set_373(TTL2PORT);
	}
	else
	{
		if(ttl2onflag)
		{
			ttl2onflag=0;
			clr_373(TTL2PORT);
		}
	}
}
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////
void cover()
{
	unsigned char i;
	if(idinflag)
	{
		if((timerh-keyinputtimer)>TIDBACKTIME)
		{
			idinflag=0;
			keycounter=0;
		}
	}
	if(passinflag)
	{
		if((timerh-keyinputtimer)>TPASSBACKTIME)
		{
			clearsetup();
			passinflag=0;
			keycounter=0;
			setflag=0;
			accessevent(eventtype|MESSAGEPASSWORDERR);
			delayTimerh(TMSGWAITTIME);
			//displaymessage(LMMAIN,LINE1);
			displayMain();
			displaytime();
			
		}
		
	}
	if(duressflag)
	{
		if((timerh-keyinputtimer)>TDURESSBACKTIME)
		{
			duressflag=0;
		}
	}

	if(secondsflag)
	{
		EA=0;
		secondsflag=0;
		i=seconds;
		seconds=0;
		EA=1;
		for(;i;i--)
		{

			checkbeepon();
			checkdooron();
			checkalarmon();
			checkttl1on();
			checkttl2on();
			checkcontactover();



			datetime[DTSEC]++;
			if(datetime[DTSEC]>=60)
			{
				datetime[DTSEC]=0;
				datetime[DTMIN]++;
				if(datetime[DTMIN]>=60)
				{
					datetime[DTMIN]=0;
					datetime[DTHUR]++;
					if(datetime[DTHUR]>=24)
					{
						getdatetime();
						break;
					}
				}
			}
		}
		displaytime();
	}
	if(rxd0flag)
	{
		if((timerh-rxd0timer)>=TRXD0WAITTIME)
		{
			rxd0flag=0;
			rxd1flag=0;
			//rxd0counter=0;
		}
	}
	if(removeeventflag||removeuserflag)
	{
		if((timerh-getpcoktimer)>TWAITPCOKTIME)
		{
			removeeventflag=0;
			removeuserflag=0;
		}
	}
	
	if(setflag)
	{
		if(submenuflag)
		{
			if(setupitem==SETINTEST)
			{
				if((timerh-refreshtimer)>TREFRESHTIME1)
				{
					refreshtimer=timerh;
					setintestdisp();
				}
			}
		}
	}
}
///////////////////////////////////////////////////////////////////////////////////////////

void main()
{
	//unsigned char tempdata;
	//init_sys(12);
	//init_lcd();
	//init_figure();
	SP=0XC0;
	init_var();
	init_sys();
	//EA=1;
	
	init_all();

	
	//sram_write(0,0,0x55);
	//tempdata=sram_read(0,0);
	//keyscan();
	//rxddeal();
	
	while(1)
	{
	
		//keyack();
		//keyscan();

		if(keydownflag)
		{
			keydownflag=0;
			if(!keytype)
			{
				keyfun();
			}
			else
			{
				if((!idinflag)&&(!passinflag))
				{
					if(!setflag)
					{
						set_373(BEEPPORT);
						delay60ms();
						clr_373(BEEPPORT);	
						hex2bcd((keynumber<<8)|cardnumhigh);
						idata2idata(tempbuff,keybuff,5);
						keynumber=ENTER;
						keycounter=5;
						idinflag=1;
						enterfun();
					}
					else
					{
						if(setupitem==SETIDREGISTER)
						{
							if(submenuflag)
							{
								if(!submenu1flag)
								{
									set_373(BEEPPORT);
									delay60ms();
									clr_373(BEEPPORT);	
									hex2bcd((keynumber<<8)|cardnumhigh);
									dispbuff[LINE2][KEYINSTARTP]=tempbuff[0]+0x30;
									dispbuff[LINE2][KEYINSTARTP+1]=tempbuff[1]+0x30;
									dispbuff[LINE2][KEYINSTARTP+2]=tempbuff[2]+0x30;
									dispbuff[LINE2][KEYINSTARTP+3]=tempbuff[3]+0x30;
									dispbuff[LINE2][KEYINSTARTP+4]=tempbuff[4]+0x30;
									keynumber=ENTER;
									setcount=5;
									numberfun();
								}
							}
						}
						else if(setupitem==SETMASTERCHANGE)
						{
							if(submenuflag)
							{
								if(!submenu1flag)
								{
									set_373(BEEPPORT);
									delay60ms();
									clr_373(BEEPPORT);	
									hex2bcd((keynumber<<8)|cardnumhigh);
									dispbuff[LINE2][KEYINSTARTP]=tempbuff[0]+0x30;
									dispbuff[LINE2][KEYINSTARTP+1]=tempbuff[1]+0x30;
									dispbuff[LINE2][KEYINSTARTP+2]=tempbuff[2]+0x30;
									dispbuff[LINE2][KEYINSTARTP+3]=tempbuff[3]+0x30;
									dispbuff[LINE2][KEYINSTARTP+4]=tempbuff[4]+0x30;
									keynumber=ENTER;
									setcount=5;
									numberfun();
								
								}
							}
						}
						else if(setupitem==SETIDDELETE)
						{
							if(submenuflag)
							{
								if(!submenu1flag)
								{
									set_373(BEEPPORT);
									delay60ms();
									clr_373(BEEPPORT);	
									hex2bcd((keynumber<<8)|cardnumhigh);
									dispbuff[LINE2][KEYINSTARTP]=tempbuff[0]+0x30;
									dispbuff[LINE2][KEYINSTARTP+1]=tempbuff[1]+0x30;
									dispbuff[LINE2][KEYINSTARTP+2]=tempbuff[2]+0x30;
									dispbuff[LINE2][KEYINSTARTP+3]=tempbuff[3]+0x30;
									dispbuff[LINE2][KEYINSTARTP+4]=tempbuff[4]+0x30;
									keynumber=ENTER;
									setcount=5;
									numberfun();
								}
							}
						}
						else if(setupitem==SETREADERTEST)
						{
							if(submenuflag)
							{
								set_373(BEEPPORT);
								delay60ms();
								clr_373(BEEPPORT);	
								displaymessage(LMHHHHHHHH,LINE2);
								hex2bcd((keynumber<<8)|cardnumhigh);
								dispbuff[LINE2][KEYINSTARTP]=tempbuff[0]+0x30;
								dispbuff[LINE2][KEYINSTARTP+1]=tempbuff[1]+0x30;
								dispbuff[LINE2][KEYINSTARTP+2]=tempbuff[2]+0x30;
								dispbuff[LINE2][KEYINSTARTP+3]=tempbuff[3]+0x30;
								dispbuff[LINE2][KEYINSTARTP+4]=tempbuff[4]+0x30;
								display(LINE2);
								
								if(keytype==KEYTYPEREADER1)
								{
									displaymessage(LMREADER1,LINE1);
								}
								else 
								{
									displaymessage(LMREADER2,LINE1);
								}
								delayTimerh(TMSGWAITTIME);
								displaymessage(LMBLANK,LINE1);
								displaymessage(LMSCANID,LINE2);
							}
						}
					}	
				}
			}	
		}
		if(rxd0packflag)
		{
			rxd0packflag=0;
			deal_pccomm();
			//deal_finger();
		}	

		cover();
		tamperchk();
		aux1chk();
		aux2chk();
		contactchk();
		exitchk();
		exitchk();

	}
}
///////////////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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