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

📄 pwm v30.c

📁 用STC单片机开发的简单脉冲发生器,用来测试步进驱动器.
💻 C
📖 第 1 页 / 共 5 页
字号:
			}		}			else if((RD0_CNT!=6) && (RD0_CNT!=8))    		{ 			if (! CheckParity((byte)RD0,RD0_CNT)) 	  /*校验数据位是否26/34*/			{	    ReadTime();	    DecodeMessage(ID_CompareDoor1((byte)RD0_LSB));			UPINOPEN_PINFLAG = 0;     /*防止在卡加密码方式下, 输入#,再刷卡,输入密码,#确定后事件误判断为"密码开门“*/			}     }	   		break;		case 1:         /*键盘输入*/			OutputWaittingSignal();			if(RD0_CNT==4)			{				FourBit0();			}						if(RD0_CNT==6)			{				if(ROS_Flag)				SixBit0();				else				RosslareOpen0();			}				break;		case 2:                          /*双卡识别*/			   OutputWaittingSignal();			if(! CheckParity((byte)RD0,RD0_CNT))				CompareDualCard();		break;		case 3:                          /*获取卡ID */		{	if(! CheckParity((byte)RD0,RD0_CNT))			{	OutputWaittingSignal();				CheckCardEventCNT(mgReadCard);        			Entry1Count++;				XBYTE[OFFset_BackupRD0ID]=RD0_No[1];  				XBYTE[OFFset_BackupRD0ID+1]=RD0_No[2];				XBYTE[OFFset_BackupRD0ID+2]=RD0_No[3];				XBYTE[OFFset_BackupRD0ID+3]=RD0_No[4];			}		}		break;			   }	   RD0_CNT=0;	   RD0_Flag=0;	   EX0=1;	}   }   	/*门2 读卡器*/   if(RD1_Flag)					  /*读卡器读取数据标志*/   {     RD1_Delay--;     if(RD1_Delay == 0)      {       EX1=0;       switch(Rd1Select)       {        case 0:                           /* 单卡识别  */				if(RD1_CNT==4) 				{					HID_OPEN();  /*HID 数据格式使用四位二进制*/				}						else if(RD1_CNT==6)     		{						if(ROS_Flag)						HID_Six();					else 					{						if(!CheckParity((byte)RD1,RD1_CNT))							UPINOPEN();								}								}				else if((RD1_CNT!=6) && (RD1_CNT!=8)) 				{ 					if (! CheckParity((byte)RD1,RD1_CNT)) 					{  					UPINOPEN_PINFLAG = 0;  					ReadTime();  					if(DoorFlag)								DecodeMessage(ID_CompareDoor1((byte)RD1_LSB));						else								DecodeMessage(ID_CompareDoor2((byte)RD1_LSB));					}        }					break;        case 1:                           /* 键盘输入 */	        OutputWaittingSignal();					if(RD1_CNT==4)					{						FourBit1();					}					if(RD1_CNT==6)					{						if(ROS_Flag)						SixBit1();						else						RosslareOpen1();					}	        break;                case 2:                           /*双卡识别 */	        OutputWaittingSignal();	       if(! CheckParity((byte)RD1,RD1_CNT))	        CompareDualCard();        break;        case 3:                          /*获取卡ID */	         if(! CheckParity((byte)RD1,RD1_CNT))	          {							OutputWaittingSignal();							CheckCardEventCNT(mgReadCard);        			Entry2Count++;							XBYTE[OFFset_BackupRD1ID]=RD1_No[1];  							XBYTE[OFFset_BackupRD1ID+1]=RD1_No[2];							XBYTE[OFFset_BackupRD1ID+2]=RD1_No[3];							XBYTE[OFFset_BackupRD1ID+3]=RD1_No[4];	          }                   }      RD1_CNT=0;      RD1_Flag=0;      EX1=1;     }   }/*---------通讯指示灯闪烁判断---------*/		if(ReceivLED)	   	{		RxTx_CNT--;		if(RxTx_CNT==0)		{			RxLED =~RxLED;			RxTx_CNT=15;				if(!RxLED)RxTx_CNT=3;		}   }	else RxLED = 1; 	      Output();		  /*输入功能判断与动作*/   Voice();	          /*声音与指示灯*/}/************************************功能描述:T2中断函数函数组成:全局变量:输入:返回:说明: T2 中断查询************************************/void Timer2(void) interrupt 5 using 2{	bit Door1IsFreeAccess;	bit Door2IsFreeAccess;	TF2=0;		SecCNT--;	if(SecCNT == 0)			 /*秒计算*/	{                                 		CheckHoliday();				Door1IsFreeAccess = Door1_FreeEgress;		Door2IsFreeAccess = Door2_FreeEgress;		Door1CheckFreeEgress();		Door2CheckFreeEgress();		if(Door1IsFreeAccess && !Door1_FreeEgress)		{			Door1_LOCK=0; 			RD0_LED=0;			RD0_BEEP=0;			Door1_CloseFlag=0;			Door1StatusTime=1;		}				if(Door2IsFreeAccess && !Door2_FreeEgress)		{			Door2_LOCK=0; 			RD0_LED=0;			RD1_LED=0;			RD0_BEEP=0;			RD1_BEEP=0;			Door2_CloseFlag=0;			Door2StatusTime=1;		}		ReadTime();		LEDSecCNT--;		MinuteCNT--;		MinuteUnitCNT--;		SecCNT=28;		if(LEDSecCNT == 0) {			ReceivLED=0;		}		if(MinuteUnitCNT == 0)		{			MinuteCNT=60;			MinuteUnitCNT=60;			HourUnitCNT--;		       /*分计算*/			if (HourUnitCNT==0) {				HourUnitCNT = 60;				DayUnitCNT--;				if (DayUnitCNT==0) {					DayUnitCNT = 24;				}			}		}	}}/************************************功能描述:读取时钟芯片内部实时时间函数组成:全局变量:输入:返回:************************************/#pragma noaregsvoid ReadTime(void){   if (!Start(0xd0,0))    {      Write(00);      Start(0xd0,1);        Time[0]=Read(); /*second BCD format */	 ACKbit();        Time[1]=Read(); /*minute BCD format*/	 ACKbit();        Time[2]=Read(); /*hours BCD format*/	 ACKbit();        Time[3]=Read(); /*day BCD format*/	 ACKbit();        Time[4]=Read();  /*date BCD format*/	 ACKbit();        Time[5]=Read();  /*month BCD format*/	 ACKbit();        Time[6]=Read();  /*year BCD format*/    }   else RTC_Err=1; Stop();}/************************************功能描述:写时间至实时时钟DS1307函数组成:全局变量:输入:返回:************************************/byte WriteTime(void){ 	byte i=0xff;   if (!Start(0xd0,0))    {     Write(00);     for(i=0;i<7;i++)		Write(RxBuffer[RXB_DATAOFFSET + i]);     Stop();     return(0);    }  Stop();	RTC_Err = 1; return(0xFF);}/************************************功能描述:读取控制器实时时钟并返回电脑函数组成:全局变量:输入:返回:************************************/void ReadTimeTranPC(void){  KSNET_Start(SlaveADR, RxBuffer[RXB_CMD]);  KSNET_Putc(Time[0]);  KSNET_Putc(Time[1]);  KSNET_Putc(Time[2]);  KSNET_Putc(Time[3]);  KSNET_Putc(Time[4]);  KSNET_Putc(Time[5]);  KSNET_Putc(Time[6]);  KSNET_End();}/*************************************************功能描述:门1门2-- 电锁和报警检测函数组成:全局变量:输入:状态说明: 断开时 =0     闭合时=1硬件说明: LOCK   =1 启动 =0 停止          ALARM  =1 启动 =0 停止 *************************************************/void Output(void){	inputStatus |= 0xFF ;	inputStatus &=ReadSwitch(0x07); /*读取八位输入数据*/	Exit();	if(OutputStatus != OutData)	{		OutputInterFace(OutData); 		OutputStatus=OutData;	}  Tamper();  Fire();  Door1Sec();  Door2Sec();	}void Tamper(void){	if (!SaveTamper1 && !Tamper1_Switch)	{		CheckAlarmEventCNT(1,mgTamperAlarm);		CheckAlarmEventCNT(2,mgTamperAlarm);		SaveTamper1=1;	}	if ((!SaveTamper2 && !Tamper2_Switch)&& !DoorFlag)	{		CheckAlarmEventCNT(1,mgStealAlarm);		CheckAlarmEventCNT(2,mgStealAlarm);		SaveTamper2=1;	}}void Fire(void){	if (!Fire1_Alarm && !SaveFire1)	{		Door1_ALARM =1;		Door1_LOCK  =1;		CheckAlarmEventCNT(1,mgFireAlarm);		SaveFire1=1;	}	if((!Fire2_Alarm && !SaveFire2) && !DoorFlag)	{		Door2_ALARM =1;		Door2_LOCK  =1;		CheckAlarmEventCNT(2,mgFireAlarm);		SaveFire2=1;		}}void Exit(void){  if(!Door1_LOCK && Door1_Switch)    	{		if (BackupLock1Status == 0) 		{			Door1_LOCK=1;      			Lock1Time=TrigerTime1;			CheckAlarmEventCNT(1,mgDoor_Release);		}	}	else if(!DoorFlag && (!Door2_LOCK && Door2_Switch))    	{		if (BackupLock2Status == 0) 		{			Door2_LOCK=1;      			Lock2Time=TrigerTime2;			CheckAlarmEventCNT(2,mgDoor_Release);		}	}	BackupLock1Status = Door1_Switch;		BackupLock2Status = Door2_Switch;}void Door1Sec(void){	if(!(Door1_FreeEgress || Door1_SetFreeEgress)&& !SaveFire1 )	{		if(Door1_LOCK)		{			OneSecondCount1--;         			if(OneSecondCount1 == 00)			{				OneSecondCount1=66;           Lock1Time--;        if(Lock1Time == 0)				{        	Door1_LOCK=0;         	RD0_LED=0;        	RD0_BEEP=0;					Door1_CloseFlag=0;					Door1StatusTime=ShuntTime1;	       }	     }		}        		else if(Door1_CloseFlag & !Door1Status)		{			Door1_ALARM =1;          			CheckAlarmEventCNT(1,mgDoor_Alarm);			Door1_CloseFlag=0;		}				else if(!Door1Status)  		{                  			OneSecondCount1--;     			if(OneSecondCount1 == 00)			{				Door1StatusTime--;				OneSecondCount1=66;				if(Door1StatusTime == 00)				{          if(!SaveOutOpenDoor1)                            {						CheckAlarmEventCNT(1,mgDoor_tLong);						SaveOutOpenDoor1=1;						if(Door1_LongToAlarm)							Door1_ALARM =1;										  }				}			}		}			else			{		Door1_CloseFlag =1;      //关门		}	}	else if(SaveFire1)	{	 Door1_LOCK=1;	 Door1_ALARM=1;	}	else	Door1_LOCK=1;}void Door2Sec(void){	if(!(Door2_FreeEgress || Door2_SetFreeEgress)&& !SaveFire2)	{	 if(Door2_LOCK)		{			OneSecondCount2--;           			if(OneSecondCount2 == 00)			{				OneSecondCount2=66;        Lock2Time--;            if(Lock2Time == 0)						{               Door2_LOCK=0;                RD1_LED=0;											 RD1_BEEP=0;							 Door2_CloseFlag=0;							 Door2StatusTime=ShuntTime2;	       		}			}		}			else if((Door2_CloseFlag & !Door2Status) && !DoorFlag)		{			Door2_ALARM =1;         			CheckAlarmEventCNT(2,mgDoor_Alarm);			Door2_CloseFlag=0;		}			else if(!Door2Status)  		{                   			OneSecondCount2--;      			if(OneSecondCount2 == 00)			{				Door2StatusTime--;				OneSecondCount2=66;				if(Door2StatusTime == 00)				{          if((!SaveOutOpenDoor2) && (!DoorFlag))                  				  {						CheckAlarmEventCNT(2,mgDoor_tLong);						SaveOutOpenDoor2=1;						if(Door2_LongToAlarm)							Door2_ALARM =1;						  }				}			}		}			else			{		Door2_CloseFlag =1;		}	}  else if(SaveFire2)	{	 Door2_LOCK=1;	 Door2_ALARM=1;	}	else	{		if(!DoorFlag)		Door2_LOCK = 1;		else 		Door2_LOCK = 0;	}}

⌨️ 快捷键说明

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