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

📄 rf315_attand.c

📁 c8051f020实现4个 产UART 口
💻 C
字号:
#include "all.h"

bit   Is_DiZh_Rx_Buff_Ok() ;

uchar Spk_At89341_cnt;

/**********************************************************************
**函数原型:   void YU_YIN (void)
**入口参数:   Xin_485_b=1
**出口参数:   无
**返 回 值:   无
**说    明:  语音任务。
************************************************************************/

							  
uint Mobile_Sigal_Cnt=0;     //手机信号定时查询计数器         
uchar  RF315_addr=0xff;      // 不等于0xff:  正在放音
void    RF315_YIN (void) _task_ RF315 {
	
        uchar Tem_lei ;
	   	//os_wait2(K_SIG, 0);
		 
        while (1) {
			os_wait2(K_TMO, 1); 
	 	       Dog_RF315_cnt=0; //看门狗计数器

			if( XinRf315_B)   {
			   	  //  RF_Address24_Xin.Address=(uint)((XinRf315_Value[1]>>8)&0xffff);  
				   // RF_Address24_Xin.Lei=(uchar)((XinRf315_Value[1])&0xff);  

                              XinJingLei_Byte=0; 
				  if( Is_DiZh_Rx_Buff_Ok()==1&&DiZh_Rx_Buff[0]==8)   {	
				  	        RF_Address24_Xin.Lei=DiZh_Rx_Buff[2];
                                           switch(RF_Address24_Xin.Lei)   {
                                                             case YAO_CE:
                                                                     CeFang_Once();
								     break;
								    case YAO_BU:
                                                                   BuFang_Once();
								     break;
								    case YAO_ZAI:
                                                                    ZaiJia_BuFang_Once();
								     break;
								   //case YAO_tan_HU:
								    case YAO_HU:
                                                                           XinJingLei_Byte=5; 
								     break;
									   case YAO_1:
                                                                            XinJingLei_Byte=1; 
								     break;
									   case YAO_2:
                                                                            XinJingLei_Byte=2; 
								     break;
									   case YAO_3:
                                                                           XinJingLei_Byte=3; 
								     break;
									   case YAO_4:
                                                                           XinJingLei_Byte=4; 
								     break;
									 case YAO_YouXian:      //   报警板的有线输入
                                                                           XinJingLei_Byte=0x85; 
								     break;
									
								     default:
                                                                         XinJingLei_Byte=0; 
								     break;
						 }
				  }
	                        XinRf315_B=0;
		     } 
			
                   if(  XinJingLei_Byte!=0)   {
				   	 //struct_Variale_True.XinCeFang_B=0;
					 Tem_lei=XinJingLei_Byte&0x7f;
				   	 if(( Tem_lei==5)|| ( Tem_lei==6))   {    //当是呼救或地需时
                                                     struct_Variale_True.Attand_One_Jing_B=1;
								  XinPhone_JingLei_Byte= XinJingLei_Byte;
							   

					 }
					 else  {
							 switch(Para_all_True.Work_Mode)   {
		                                                 case 0:    //撤防时
		                                                 

									break;
		  							case 1:  //布防时
                                                                            struct_Variale_True.Attand_One_Jing_B=1;
											 XinPhone_JingLei_Byte= XinJingLei_Byte;
										      
									break;
		 							 case 2:  //在家布防时
		 							          //在家布防时只有1,2防区有效
                                                                         if(Tem_lei==1||Tem_lei==2)
                                                                                         struct_Variale_True.Attand_One_Jing_B=1;
													  XinPhone_JingLei_Byte= XinJingLei_Byte;

									break;
		  							default:
										

									break;

							 }
				 	}
		  }
		  XinJingLei_Byte=0;
		
	}
 }



//系统进行一次撤防
void      CeFang_Once()  {
  

                 Spk_cnt=0;   //如报警警号响则停止响
		   Close_Spkk_P; //如报警警号响则停止响
		   
                 Sound_DiDi_B=1;
		   Para_all_True.Work_Mode=0;
		  struct_Variale_True.XinCeFang_B=1;
		 


}


//系统进行一次布防
uchar BuDelay_Time=0;
void   BuFang_Once()  {
               Sound_Di_B=1;
		 Para_all_True.Work_Mode=5;
		 BuDelay_Time=0;


}


//系统进行一次在家布防
void   ZaiJia_BuFang_Once()  {
  
               Sound_DiDiDi_B=1;
		  Para_all_True.Work_Mode=2;
		  


}




// 保存一条记录之子程序 


//读时间的6个字节到BUFFF


  uchar ReadTime(uchar *Bufff)   {
              uchar i;
              //得到权限
			 while(KEY_TX_Right_B==0 )     os_wait2(K_TMO,2);
			 KEY_TX_Right_B=0;
			 
			 Xin_Time_in_B=0;  //读到新时间 标志
			 DaBao_JTX_0x24_And_Send(55, &i, 0);  //	55	查询屏的当前时间
			// os_wait2(K_TMO,100);
											 
		  //放弃到权限	 在后面  
		     i=0;
			/*
			  Xin_KEY_RX_B=0;
		   while(++i<50) {                        //          //1.2秒时
                                os_wait2(K_TMO,5);
	                        if( Xin_KEY_RX_B)  {
							   Xin_KEY_RX_B=0;
						break;

				   }

		   }  
              
		   if(i==50) {
                          goto Lassrt;

		   }
		   */
		   
                //以上是接收确认
		   
		   i=0;
  
		   Xin_KEY_RX_B=0;
		   while(++i<100) {                        //          //1.2秒时
                                os_wait2(K_TMO,5);
	                        if( Xin_KEY_RX_B)  {
						 Xin_KEY_RX_B=0;
						if(IS_CS_OK()==1&&KEY_RX_Buff[0]==55)  {		 
									*Bufff++=KEY_RX_Buff[2];   //年
									*Bufff++=KEY_RX_Buff[3];
									*Bufff++=KEY_RX_Buff[4];
									*Bufff++=KEY_RX_Buff[5];
									*Bufff++=KEY_RX_Buff[6];
									*Bufff++=KEY_RX_Buff[7];  //秒

⌨️ 快捷键说明

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