亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pump_watch.c

?? 程序為監測報警
?? C
?? 第 1 頁 / 共 2 頁
字號:

//485通訊協儀*********************************************************************
// 主機發送:  D9------校驗和
//			   D8------報警數據第25-32路
// 			  D7------報警數據第17-24路
//			   D6------報警數據第 9-16路
//			   D5------報警數據第 1- 8路
//             D4------報警狀態碼
//			   D3------主機當前的按鍵操作碼
//			   D2------數據接收方的機器號碼
//			   D1------數據發送方的機器號碼
//			   D0------幀起始標志  0xff

#include "REG52.H" 
#include "stdio.h"
#include "stdlib.h"
#include "ABSACC.H"
//#include "math.h"
#include <rtx51tny.h>
#define  INT     0  
#define  MAIN    1  
#define  AD_CNV  2  
#define  DISPLAY 3 
#define  ALARM   4 
#define  serialer  5

#define  RESET   1
#define  MUTE    2
#define  TEST    3
#define  SET_DAT 4
#define  MAX485_send  0xFF                                   //485發送定義
#define  MAX485_REC   ~0X80                                  //485接收定義
#define  COMM_BUF_SIZE 10									 //串行接收緩存大小
#define uchar  unsigned char
#define uint   unsigned int
//***************************************************************************************
//用于設置的全局變量定義***************************************************************** 

unsigned char  alarm_delay[32];      						//定義延時報警緩存
//unsigned char  alarm_fz[32];      					   	//定義延伸分組設置
unsigned char  alarm_cou[4];      							//定義報警是否可恢復 0鎖存,1可自動恢復
unsigned char  slect_no_nc[4];								//定義選取擇常開常閉輸入的緩存
unsigned char  match_number;								//用于保存本機機器號 
unsigned char  comm_in_buf[42];								//串口接收緩存
unsigned char  comm_out_buf[42]; 							//串口接收緩存
unsigned char  alarm_out_slect[4];							//設置報警選擇

//用于報警的全局變量定義******************************************************************
//****************************************************************************************
 unsigned char  delay_time[32];                             //用于延時的時間寄存單元
 unsigned char  alarm_data[4];	                            //定義最終報警數據
 unsigned char  in_buf[4];                                  //定義報警輸入緩存
 unsigned char  MUTE_buff[4]={0,0,0,0};						//定義消音暫存報警單元
 unsigned char  MUTE_out[4]={0x0,0x0,0x0,0x0};				//定義消音后的輸出單元
 unsigned char  dis_buf[4];//           				    //定義顯示緩存共4個字節
 unsigned char  key_buf;									//定義按鍵緩存
 unsigned char  COMM;                           			//串口控制緩存
 unsigned char  *comm_send_point;							//串口發送指針
 unsigned char   comm_rec_point=0;							//串口接收指針	
 unsigned char   Alarm[9]={0,0,0,0,0,0,0,0,0};				//定義報警
 unsigned char  line;
 unsigned char  cnt;
////位地址定義****************************************************************************
 bit   SEND;												//需要發送標志
 bit   mu;   												//消音標志位
 bit   comm_send_over;										//串口發送完畢位
 bit   comm_rec_over;										//串口接收完畢位
 bit   power_fault;											//電源故障標志
 bit   set;												    //設置
 bit   commstart;											//串口開始接受標志
 bit   power_up;											//上電
 bit   lpmute_f;											//失電報警消音標志			
 sbit  mute = P1^7;											//消音按鍵定義
 sbit  test = P3^3;											//試燈鍵定義
 sbit  reset= P3^2;											//復位鍵定義 sbit  FMQ  = P1^5;											//蜂鳴器控制引腳定義
 sbit  LPD  = P1^3;											//失電報警檢測					  
 sbit  LPF  = P1^4;											//失電報警輸出
 sbit  YS   = P1^6;											//延伸報警繼電器輸出//*****************************************************************************
//*****************************************************************************
//函數預定義*******************************************************************
void alarm_in(void);
void delay_alarm(void);
void time_delay_copy(void);
extern uchar nbyteRead(uchar addr, uchar nbyte, uchar *index);//  addr 要讀取的地址 nbyte 讀取的字節
extern uchar nbyteWrite( uchar addr, uchar nbyte,uchar *index);
//*****************************************************************************
//*****************************************************************************
//報警輸出函數*****************************************************************
 void alarm_out(void){
    //主機才執行
	  uchar count;
  if (match_number==0){
		Alarm[8]=Alarm[0]|Alarm[1]|Alarm[2]|Alarm[3]|Alarm[4]|Alarm[5]|Alarm[6]|Alarm[7]; 
					  } 					//如果機號為0,則給Alarm[8]賦值
	for (count=0;count<4;count++){
         dis_buf[count]=alarm_data[count];  //將報警值存入顯示緩存
	                              }
         if (((Alarm[8]!=0)&&(mu==0))||((power_fault)&&(!lpmute_f)&&(key_buf!=RESET))){  FMQ=1;	 } //操作蜂鳴器
		   if (power_fault) LPF= 0;	        //如果失電點亮失電指示燈
		 os_wait(K_TMO,150,0);              //延時(為了閃亮)
		 
	for (count=0;count<4;count++){
	     dis_buf[count]=MUTE_out[count];    //將消音處理的值存入報警緩存
		FMQ = 0;
		if (!lpmute_f)LPF =1;				  }
		 os_wait(K_TMO,150,0);              //延時(為了閃亮)
	if ((MUTE_out[0]==alarm_data[0])&&(MUTE_out[1]==alarm_data[1])&&(MUTE_out[2]==alarm_data[2])&&(MUTE_out[3]==alarm_data[3])){
	          YS=0;}		
	else{YS=1;}	   							//繼電器輸出判斷

                     }
//*****************************************************************************
//*****************************************************************************
//按鍵讀取函數*****************************************************************
//*****************************************************************************
 void key_read(void){
   if (!reset||!test||!mute){         		//如果有鍵按下
      os_wait(K_TMO,1,0);             	    //延時去抖動
	  if (!reset) key_buf = RESET ;         //復位鍵
	  if (!mute)  key_buf = MUTE  ;         //消音鍵
	  if (!test)  key_buf = TEST  ;         //試燈鍵
	  if (!mute&&!test) key_buf=SET_DAT;    //同時按下消音鍵和測試鍵為設置					  
                            }
	  //else {os_wait(K_TMO,20,0);if (comm_send_over==1){key_buf=0;comm_send_over=0;}} //***********按鍵放下清空緩沖區

	  LPD =1;
	  if  (LPD) {  power_fault=1; }         //主電源失電檢測
	  else{power_fault=0;lpmute_f=0;} 		//否則清除失電報警信號


 					}
//串口發送程序*****************************************************************
//*****************************************************************************
//輸入:count 要發送的數據長度(字節)
//      P     要發送數據的起始地址指針
  void comm_send(char count,char *p){
       	ES=0;									 //禁止串口中斷
		COMM=MAX485_send;                        //將485串口轉換器置為發送狀態
		XBYTE[0XA000]=line&COMM;
		os_wait(K_TMO,2,0);					     // 延時穩定
		while(count>0){
		 if (!TI){SBUF=*p;count--;p++;}	         //發送數據
		 while(!TI){os_wait(K_TMO,1,0);}		   
		   TI=0;								 //等待發送完畢
		              }
		COMM=MAX485_REC;						 //485串口轉回接受狀態 

		XBYTE[0XA000]=line&COMM;
		ES=1; 								     //允許串口中斷
	         						}
//*****************************************************************************
//*****************************************************************************
//初始化函數,對程序進行初始化操作
void init(void){                      	//初始化設置程序
    char k;
	comm_out_buf[0]=0xff;				//初始化comm_out_buf[0],幀起始	
for (k=0;k<4;k++){
     alarm_data[k]=0;                  	//初始化數據單元
	 dis_buf[k]=0;
	 MUTE_out[k]=0; 	  
                 }
	lpmute_f=0;							//初始化各標志位						
	mu   =0;
	FMQ =0;								
	cnt =0;
	time_delay_copy();
	for	(k=0;k<9;k++)Alarm[k]=0;
	match_number = (~P1)&0x07;          //讀取本機機器號
			   }

void init1 (void)
{   char k;
    TMOD =TMOD|0X20; 						 //定時器1工作于方式2
	TL1  =0XF3;
	TH1  =0XF3;
	SCON =0X50;								 //8位數據位1位停止位無校驗位
	PCON =0X80;								 //波特率倍增
	ES=1; 									 //允許串口中斷
	TR1=1;									 //啟動波特率發生器
	key_buf=0;								 //初始化串口緩沖區
	set = 0;							 
	commstart=0;
	COMM =MAX485_REC;						 //初始時485串口處于接收狀態
	comm_rec_point=0; 						 //接收指針為0
    nbyteRead(0, 4, slect_no_nc );			 //從24c02中讀取相應數據
	nbyteRead(4, 4, alarm_out_slect );
	nbyteRead(8, 4, alarm_cou );
	nbyteRead(12,32,delay_time );  
    for (k=0;k<32;k++){
    alarm_delay[k]= delay_time[k];			//重新設定延時時間
    power_up=1;
                          }

}
//******************************************************************************
//******************************************************************************
//延時時間重新設定函數**********************************************************
//******************************************************************************
void time_delay_copy(void){
unsigned char kk;
                           
for (kk=0;kk<32;kk++){
  alarm_delay[kk]= delay_time[kk];				//重新設定延時時間
                          }
					  }

//******************************************************************************
//******************************************************************************
//串行口中斷函數
serial()interrupt 4 using 3{
   unsigned char k;
   if (RI){
       RI=0;									//清除串行接收中斷標志
	   ES=0;
	   k=SBUF;							   		
	   if ((!commstart)&&(k==0XFF)){
	        comm_in_buf[comm_rec_point]=k;
	        commstart=1;comm_rec_point++;ES=1;return;}

	   if (commstart){
	   comm_in_buf[comm_rec_point]=SBUF;  		//將接收到的串口數據存入接收緩存
	   comm_rec_point++;				   		//調整接收指針
	                  }
	   if( comm_rec_point>=COMM_BUF_SIZE){
	       commstart=0;
		   comm_rec_point=0;
		   if (comm_in_buf[9]==(comm_in_buf[0]^comm_in_buf[1]^comm_in_buf[2]^comm_in_buf[3]^comm_in_buf[4]^comm_in_buf[5]^comm_in_buf[6]^comm_in_buf[7]^comm_in_buf[8])	)				  //和校驗判斷
		   {	
		   		 comm_rec_over=1 ;  					//置位接收完畢標志
			}
		   //else {comm_rec_over=0;}
	   									 }
          }
						   
			ES=1;			   }
//*******************************************************************************
//數據接收處理程序***************************************************************
void serial_cl(void){
     uchar i;
	 uchar k;
     if(comm_rec_over){								 //如果所有數據接收完畢
	 	if (!set){	 		 						 //非設置狀態
	 		if (match_number==0){					 //機號為0時,讀入Alarm[]
	 			Alarm[comm_in_buf[1]]=comm_in_buf[4];
   		 Alarm[8]=Alarm[0]|Alarm[1]|Alarm[2]|Alarm[3]|Alarm[4]|Alarm[5]|Alarm[6]|Alarm[7];  //主機才執行
		 		if(Alarm[8]!=0){					 //處理報警:Alarm[8]!=0即有新報警,清消音標志
					mu=0;
		 						} 
	//	  else {Alarm = Alarm&(~(comm_in_buf[1]+1));}//如果沒有報警,則清除相應從機的報警位
			   return;
		  					  }

			if (match_number!=0) key_buf= comm_in_buf[3]; //非0機子,存入按鍵狀態
         	if (key_buf==SET_DAT) set =1;				  //判斷是否需進入設置
			if 	(key_buf==MUTE){
				   for (k=0;k<4;k++){MUTE_out[k]=alarm_data[k];}  //消音處理
					 FMQ=0;mu=1;//key_buf=0;
									}
	    if (match_number==comm_in_buf[2]){			       //如果需要本機作出應答
		  		if (comm_in_buf[3]!=SET_DAT){ SEND = 1;	} }//允許發送信號準備回應
        	comm_rec_over=0; 						       //清除接收完畢標志
		  	return;
	 				}
	   else { if(match_number==comm_in_buf[2]){         //設置狀態下,如果是對本機操作
		  		  switch (comm_in_buf[3]){				//判斷命令代碼
				  case 1:{
						 if (comm_in_buf[1]==9){
				         for(i=0;i<4;i++){ 			 //設置數據類型是輸入方式
				  		 slect_no_nc[i]=comm_in_buf[i+5];}
						 nbyteWrite(0, 4, slect_no_nc ); }
						 else { init();	
	   							os_create_task (ALARM);  
	  							os_create_task (AD_CNV);	  
	   							set =0;            }
				  		 }break;

				  case 2:{ 							 
				          for(i=0;i<4;i++) {			 //設置數據類型是輸入方式
				  		 alarm_out_slect[i]=comm_in_buf[i+5];  }
						 nbyteWrite(4, 4, alarm_out_slect );
						  }break;

				  case 3:{ 
				          for(i=0;i<4;i++){ 			  //設置數據類型是報警鎖存
				  		  alarm_cou[i]=comm_in_buf[i+5];}
						  nbyteWrite(8, 4,alarm_cou );							
						  }break;
				  case 4:{ 
				          for(i=0;i<4;i++){ 			  //設置數據類型是延時時間 
				  		  delay_time[i+comm_in_buf[4]]=comm_in_buf[i+5];}
						  
						  if (comm_in_buf[4]==28) nbyteWrite(12, 32,delay_time );							
						  }break;

				  case 7: {							  //回應
				          SEND =1;
				  		  }break;
		  						  }
	 	 
	                    comm_rec_over=0; } 
						comm_rec_over=0;return;     }
						}
					}
//					}
 //******************************************************************************
 //****************************************************************************** 	
void  RE32  (unsigned char *point,unsigned char dt ){
unsigned char i,k;
  for (i=0;i<8;i++){
    for (k=0;k<4;k++){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产麻豆精品在线| 一区二区三区毛片| 日韩视频一区在线观看| 欧美视频在线一区二区三区| 91免费版pro下载短视频| 白白色 亚洲乱淫| 色综合天天综合在线视频| 99久久久久久99| 欧洲一区二区三区免费视频| 欧美日韩免费一区二区三区| 91精品国产色综合久久ai换脸| 欧美另类久久久品| 欧美v亚洲v综合ⅴ国产v| 久久免费美女视频| 综合激情成人伊人| 一区二区三区不卡视频| 亚洲午夜视频在线观看| 秋霞成人午夜伦在线观看| 久久激五月天综合精品| 成人激情综合网站| 欧洲精品在线观看| 日韩欧美激情四射| 中文字幕一区三区| 天涯成人国产亚洲精品一区av| 日韩精品一卡二卡三卡四卡无卡| 激情综合网最新| jizzjizzjizz欧美| 欧美日韩国产在线观看| 日韩欧美国产wwwww| 国产精品久久久久久久久免费丝袜| 亚洲精品中文字幕在线观看| 免费久久99精品国产| 国产91精品一区二区麻豆亚洲| 色哟哟精品一区| 精品久久久久久久久久久久久久久 | 欧美久久久一区| 久久品道一品道久久精品| 亚洲精品欧美激情| 极品少妇一区二区三区精品视频| 色综合视频在线观看| 欧美一级爆毛片| 《视频一区视频二区| 秋霞成人午夜伦在线观看| 97久久人人超碰| 久久久蜜桃精品| 视频一区国产视频| 色吧成人激情小说| 国产精品大尺度| 狠狠色丁香婷婷综合| 日韩欧美亚洲另类制服综合在线| 亚洲欧美日韩国产成人精品影院| 国内精品国产三级国产a久久| 欧美日韩国产大片| 一区二区三区日本| 91视频在线观看免费| 久久久国产午夜精品| 加勒比av一区二区| 日韩一级片网址| 日韩精品一级中文字幕精品视频免费观看| 成人99免费视频| 国产精品午夜久久| 国产91精品露脸国语对白| 26uuu国产在线精品一区二区| 日本视频在线一区| 欧美日韩亚洲综合在线| 一区二区三区精品视频| kk眼镜猥琐国模调教系列一区二区| 欧美不卡一区二区三区| 美国十次了思思久久精品导航| 欧美日韩激情一区二区三区| 玉米视频成人免费看| 一本大道综合伊人精品热热| 亚洲日本丝袜连裤袜办公室| av资源站一区| 18欧美乱大交hd1984| 99国产精品久| 亚洲综合清纯丝袜自拍| 欧美色网一区二区| 丝袜诱惑亚洲看片| 欧美一级片免费看| 精品伊人久久久久7777人| 欧美zozozo| 国产成人av影院| 国产亚洲精品久| 99国产精品视频免费观看| 日韩美女视频一区二区| 91免费看视频| 图片区小说区区亚洲影院| 4438x亚洲最大成人网| 欧美aaaaaa午夜精品| 日韩美女视频在线| 懂色中文一区二区在线播放| 中文字幕在线一区| 欧美综合色免费| 毛片基地黄久久久久久天堂| 日本一二三四高清不卡| 日本韩国欧美在线| 热久久国产精品| 国产精品久久网站| 欧美精品丝袜中出| 国产在线乱码一区二区三区| 国产精品久久久久影院| 欧美亚洲国产一区二区三区va | 久久精品国产77777蜜臀| 久久天堂av综合合色蜜桃网| 成人性视频免费网站| 亚洲一级片在线观看| 久久女同互慰一区二区三区| 91麻豆成人久久精品二区三区| 日本中文字幕不卡| 中文字幕电影一区| 欧美久久婷婷综合色| www.日本不卡| 久久精品999| 一区二区三区免费看视频| 久久综合网色—综合色88| 一本久久a久久精品亚洲| 韩国女主播成人在线| 亚洲综合在线视频| 中文字幕二三区不卡| 欧美mv日韩mv国产| 欧美丝袜自拍制服另类| 国产.欧美.日韩| 免费美女久久99| 亚洲成人免费电影| 亚洲国产精品激情在线观看 | 国产清纯美女被跳蛋高潮一区二区久久w| 成人免费视频网站在线观看| 婷婷开心久久网| 一区二区三区中文字幕在线观看| 久久久久免费观看| 日韩欧美精品在线| 久久久午夜电影| 337p亚洲精品色噜噜噜| 色中色一区二区| 91视频国产观看| 成人动漫精品一区二区| 韩国欧美国产1区| 久久99精品国产.久久久久久| 亚洲网友自拍偷拍| 一区二区不卡在线视频 午夜欧美不卡在| 国产女人18水真多18精品一级做| 精品欧美一区二区在线观看| 欧美二区三区91| 欧美日本韩国一区二区三区视频| 91网上在线视频| 99视频精品在线| 成人动漫在线一区| 99精品视频在线免费观看| 国产成人精品免费视频网站| 国产黄色成人av| 国产成人午夜高潮毛片| 国产91色综合久久免费分享| 粉嫩av亚洲一区二区图片| 国产精品亚洲专一区二区三区| 久久97超碰色| 国产精品一区二区黑丝| 国产+成+人+亚洲欧洲自线| 高清成人在线观看| 国产69精品久久久久777| 99久久综合狠狠综合久久| 91视频免费观看| 欧美在线视频全部完| 欧美日本在线看| 亚洲精品一区二区精华| 久久九九99视频| **网站欧美大片在线观看| 亚洲永久精品大片| 蜜臀av一区二区三区| 国产在线视视频有精品| eeuss国产一区二区三区| 色乱码一区二区三区88| 欧美午夜精品一区二区蜜桃| 91精品国产综合久久久久久久久久| 欧美一区二区三区视频在线| 久久免费看少妇高潮| 综合激情成人伊人| 欧美aaaaaa午夜精品| 国产91丝袜在线18| 欧美日韩一区二区在线观看视频| 欧美一区二区福利在线| 国产精品国产三级国产aⅴ原创| 亚洲精品网站在线观看| 经典三级视频一区| 色综合久久六月婷婷中文字幕| 欧美一区二区三区四区视频| 欧美国产一区二区| 香蕉av福利精品导航| 国产精品1区二区.| 欧美色综合久久| 国产日韩v精品一区二区| 亚洲成人三级小说| 国产宾馆实践打屁股91| 91亚洲国产成人精品一区二三| 欧美日韩aaaaa| 亚洲视频电影在线| 久久99久久99小草精品免视看| 日本精品免费观看高清观看| 久久女同精品一区二区| 日韩精品电影一区亚洲|