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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? commint1.h

?? 西門(mén)子PPI協(xié)議源碼
?? H
字號(hào):
//和MODBUS相關(guān)的中斷程序
// 1/2個(gè)串口對(duì)應(yīng)的中斷程序,和MODBUS相關(guān)的定時(shí)器中斷
// ABOUTCOMM程序,和硬件相關(guān),和有無(wú)LED相關(guān)
/**********************************************************************************************/
//因?yàn)橘Y源非常有限,不可能同時(shí)存在多個(gè)協(xié)議
void about_comm_pro(void)
{
	uchar i;
	uchar uc_last_comm_cmd;
	
	if((uc_send_status[0]& BIT(is_sending)) || (uc_send_status[1]& BIT(is_sending)))
	{PORT_LED&=~BIT(LED_COMM);}//LED_COMM 亮
	else
	{PORT_LED|=BIT(LED_COMM);} //LED_COMM 滅
	
	if(!(uc_send_status[0] & BIT(is_sending))){uart_send_disable0;}
	if(!(uc_send_status[1] & BIT(is_sending))){uart_send_disable1;}
	
#ifdef PROGRAME_FOR_MODBUS
	if(is_modbus_asc)
	{
		if(now_buf0 == MB_END_ASCII)
		{   
			now_buf0                 = 0;
			uc_is_have_new_modbus[0] = 1;
			point_uchar[0]          -= 2;
		}
		
		if(now_buf1 == MB_END_ASCII)
		{   
			now_buf1                 = 0;
			uc_is_have_new_modbus[1] = 1;
			point_uchar[1]          -= 2;
		}
	}	
#else
#ifdef PROGRAME_FOR_ADAM
	if(is_modbus_asc)
	{
		if(now_buf0 == MB_END_ASCII)
		{   
			now_buf0                 = 0;
			uc_is_have_new_modbus[0] = 1;
			point_uchar[0]          --;
		}
		
		if(now_buf1 == MB_END_ASCII)
		{   
			now_buf1                 = 0;
			uc_is_have_new_modbus[1] = 1;//標(biāo)志的名稱沿用MODBUS的
			point_uchar[1]          --;//指向的是13
		}
	}	
#endif
#endif
	
	
	for(i=0;i<2;i++)
	{   
		if(uc_is_have_new_modbus[i]) //receive new string.
		{
			uc_is_have_new_modbus[i]=0;
#ifdef PROGRAME_FOR_MODBUS			
			if(is_modbus_master) //modbus為主
			{
				
				//作為主的時(shí)候接收的分析程序,可能不與理睬
				uc_last_comm_cmd = stMod_Master_OP[uc_Mod_Master_OP_Point].uc_cmd;
				if(( uc_last_comm_cmd== 3) || (uc_last_comm_cmd  == 1)||(uc_last_comm_cmd == 0x17))
				{
					//需要分析,來(lái)的數(shù),是上次呼叫的命令
					//可用uc_Mod_Master_OP_Point指向的結(jié)構(gòu)數(shù)組的信息
					uc_last_comm_cmd = is_modbus_asc > 0?MAKE_HEX_TO_DEC(uc_rec_buf[i][0],uc_rec_buf[i][1]):uc_rec_buf[i][0];
					if(uc_last_comm_cmd == uc_mod_plc_add)
					{   
						rtu_reqframe_anlys_master(uc_rec_buf[i],point_uchar[i],uc_Mod_Master_OP_Point);
					}
				}			
			}
			else                //modbus為從
#endif			
#ifdef PROGRAME_FOR_PPI			
			if(is_modbus_master) //PPI為主
			{			
				//作為主的時(shí)候接收的分析程序,可能是準(zhǔn)備好應(yīng)答,需要發(fā)確認(rèn)命令
				uc_sendarray_num[i] = ppi_reqframe_anlys_master(i,uc_rec_buf[i],uc_send[i],point_uchar[i],uc_PPI_Master_OP_Point+i,
									  			uc_client[i],uc_mod_plc_add,g_uc_ppi_main_send_count+i);
				
				if(uc_sendarray_num[i] != 0xfe)
				{
				 uc_send_status[i] |= BIT(is_need_send);
				}
			}
			else                //PPI為從
#endif			
			{   
#ifdef PROGRAME_FOR_MODBUS
				uc_last_comm_cmd = is_modbus_asc > 0?MAKE_HEX_TO_DEC(uc_rec_buf[i][0],uc_rec_buf[i][1]):uc_rec_buf[i][0];
				if(uc_last_comm_cmd==uc_client[i])//地址是否相同
				{
					uc_sendarray_num[i]=rtu_reqframe_anlys_slaver(uc_rec_buf[i],point_uchar[i],uc_send[i]);
					//                                                             接收的長(zhǎng)度,而非下標(biāo)
					if((uc_sendarray_num[i])!=0)
					{
						uc_send_status[i] |= BIT(is_need_send);
					}
				}
#else
#ifdef PROGRAME_FOR_PPI
				uc_sendarray_num[i]=ppi_reqframe_anlys_slaver(i,uc_rec_buf[i],point_uchar[i],uc_send[i],uc_client[i]);
				//此函數(shù)  
				if((uc_sendarray_num[i])< 0xfe)//返回的是下標(biāo),有時(shí)卻只發(fā)一個(gè)字節(jié),可能為零,所以修改和MODBUS不同
				{
					uc_send_status[i] |= BIT(is_need_send);
				}
#else
#ifdef PROGRAME_FOR_ADAM
				if(uc_get_data(uc_rec_buf[i][0],uc_rec_buf[i][1]) == uc_client[i])
                {
				 uc_sendarray_num[i]=adam_reqframe_anlys_slaver(uc_rec_buf[i],point_uchar[i],uc_send[i],uc_head[i]);
				 //此函數(shù)  
				 if((uc_sendarray_num[i])!= 0)//返回的是下標(biāo)
				 {
					uc_send_status[i] |= BIT(is_need_send);
				 }
				}
#endif
#endif 			
#endif
			}//is_modbus_master
			point_uchar[i]=0;//為下次接收做準(zhǔn)備
		}//(uc_is_have_new_modbus)
		
	}//end for
	
#ifdef PROGRAME_FOR_MODBUS
	if(is_mod_master_need_send)//is_mod_master_need_send=1,則必是MASTER,這是當(dāng)計(jì)時(shí)器到時(shí)的發(fā)送.
	{
		is_mod_master_need_send = 0;
		if(++uc_Mod_Master_OP_Point >= OP_TABLE_LENTH){uc_Mod_Master_OP_Point = 0;}
		
		for(i=0;i<2;i++)
		{
			if(!(uc_send_status[i] & BIT(is_sending)))
			{
				uc_sendarray_num[i]  = rtu_modbus_master_send(uc_Mod_Master_OP_Point,uc_mod_plc_add,uc_send[i]);
				uc_send_status[i] |= BIT(is_need_send);
			}
		}
	}
#endif

#ifdef PROGRAME_FOR_PPI
  if(is_modbus_master)
  {
	for(i=0; i < MCU_UART_NUM; i++)
	{
	 if(is_ppi_master_need_send[i])
	 {
			is_ppi_master_need_send[i] = 0;
			if(!(uc_send_status[i] & BIT(is_sending)))
			{
				uc_sendarray_num[i] = ppi_master_send(i,uc_PPI_Master_OP_Point+i,uc_mod_plc_add,uc_send[i],uc_client[i],g_uc_ppi_main_send_count+i);
				
				//發(fā)送的順序:發(fā)請(qǐng)求,收到E5后,發(fā)命令,然后收到結(jié)果后分析結(jié)果
				
				if(uc_sendarray_num[i] < 0xfe)//有可能不發(fā)了,休息一下
				{uc_send_status[i] |= BIT(is_need_send);}
			}
	 }
	}
  }	   
#endif
	
	if(uc_send_status[0] & BIT(is_need_send))
	{
		uart_send_enable0;
		uc_send_status[0] &=~ BIT(is_need_send);
		if(!(uc_send_status[0] & BIT(is_need_send)))
		{uc_send_status[0] &=~ BIT(is_need_send);}//純粹耽誤些時(shí)間
		
		uc_send_status[0]|=BIT(is_sending);
		UDR0=uc_send[0][0];
		uc_send_point[0]=1;
	}
	
	if(uc_send_status[1] & BIT(is_need_send))
	{
		uart_send_enable1;
		uc_send_status[1] &=~ BIT(is_need_send);
		if(!(uc_send_status[1] & BIT(is_need_send)))
		{uc_send_status[1] &=~ BIT(is_need_send);}//純粹耽誤些時(shí)間
		
		uc_send_status[1]|=BIT(is_sending);
		UDR1=uc_send[1][0];
		uc_send_point[1]=1;
	}
}
/**********************/ 
/**********************/ 

/******************************************************************/ 
/******************************************************************/
/******************************************************************/ 

#pragma interrupt_handler uart1_rx_isr:iv_USART1_RX
void uart1_rx_isr(void)
{
	//uart has received a character in UDR
	uc_rec_buf[1][point_uchar[1]] = now_buf1 = UDR1;
	if(point_uchar[1]<comm_array_max_xb){point_uchar[1]++;}
	#ifdef PROGRAME_FOR_MODBUS
	if(is_modbus_asc)
	{
		if(now_buf1 == MB_HEAD_ASCII) //modbus asc 頭
		{
			point_uchar[1] = 0;//指向的是下一個(gè),隊(duì)列中沒(méi)包含頭,頭對(duì)MODBUS來(lái)說(shuō)是":"
		}   
	}
	else
	{
		uc_modbus_timeout1=uc_modbus_timeout_4bytes1;
	}
	#else
	  #ifdef PROGRAME_FOR_PPI
	    uc_modbus_timeout1=uc_modbus_timeout_4bytes1;//PPImoshi
		g_uc_ppi_main_send_count[1] = -1;//這樣,就不可能進(jìn)入主發(fā)程序,而只能進(jìn)入接收程序了 
	  #else
	    #ifdef PROGRAME_FOR_ADAM
		if((now_buf1=='#') || (now_buf1=='$') || (now_buf1=='@'))//ADAM asc 頭
		{
			point_uchar[1] = 0;//指向的是下一個(gè),隊(duì)列中沒(méi)包含頭
			uc_head[1] = now_buf1;
		}  
		#endif
	  #endif
	#endif
	
}

#pragma interrupt_handler uart1_tx_isr:iv_USART1_TX
void uart1_tx_isr(void)
{
	//uc_send_status[1]|=BIT(is_sending);在發(fā)送啟動(dòng)的時(shí)候做
	
	if (uc_send_point[1]<=uc_sendarray_num[1])
	{
		UDR1=uc_send[1][uc_send_point[1]];
		uc_send_point[1]++;
	}
	else
	{
		uc_send_over_timer[1]=timer_count_char;
		uc_send_status[1]&=~BIT(is_sending);
		//uart_send_disable1; //在ABOUTCOM函數(shù)中做
	}
	
	//character has been transmitted,最后=uc_sendarray_num+1
}
/**********************/ 
/**********************/ 
#pragma interrupt_handler uart0_rx_isr:iv_USART0_RX
void uart0_rx_isr(void)
{
	//uart has received a character in UDR
	uc_rec_buf[0][point_uchar[0]] = now_buf0 = UDR0;
	if(point_uchar[0]<comm_array_max_xb){point_uchar[0]++;}
	#ifdef PROGRAME_FOR_MODBUS
	if(is_modbus_asc)
	{
		if(now_buf0 == MB_HEAD_ASCII) //modbus asc 頭
		{
			point_uchar[0] = 0;
		} 
	}
	else
	{
		uc_modbus_timeout0=uc_modbus_timeout_4bytes0;//uc_modbus_timeout_4bytes[bt[0]];
	}
	#else
	  #ifdef PROGRAME_FOR_PPI
	    uc_modbus_timeout0=uc_modbus_timeout_4bytes0;//PPI是固定的8,E,1
		g_uc_ppi_main_send_count[0] = -1;//這樣,就不可能進(jìn)入主發(fā)程序,而只能進(jìn)入接收程序了
	  #else
	    #ifdef PROGRAME_FOR_ADAM   
		if((now_buf0=='#') || (now_buf0=='$') || (now_buf0=='@'))//ADAM asc 頭,ADAM是固定的8,N,1
		{
			point_uchar[0] = 0;//指向的是下一個(gè),隊(duì)列中沒(méi)包含頭
			uc_head[0] = now_buf0;
		}  
		#endif
	  #endif
	#endif
}

#pragma interrupt_handler uart0_tx_isr:iv_USART0_TX
void uart0_tx_isr(void)
{
	//character has been transmitted
	/*when first coming this fun,uc_send_point=0*/
	//uc_send_status[0]|=BIT(is_sending);在發(fā)送啟動(dòng)的時(shí)候做
	
	if (uc_send_point[0]<=uc_sendarray_num[0])
	{
		UDR0=uc_send[0][uc_send_point[0]];
		uc_send_point[0]++;
	}
	else
	{
		uc_send_over_timer[0]=timer_count_char;
		uc_send_status[0]&=~BIT(is_sending);
		//uart_send_disable0;在about_comm函數(shù)中做
	}
	//大于uc_sendarray_num后,所以不會(huì)無(wú)限制地加
	
	//character has been transmitted,最后=uc_sendarray_num+1
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三级| 久久日一线二线三线suv| 国产在线日韩欧美| 亚洲激情av在线| 国产色产综合产在线视频| 欧美精品在线一区二区| 国产a精品视频| 日韩影院精彩在线| 亚洲男人电影天堂| 日本一区二区三区高清不卡| 日韩一区二区三区视频在线观看| 91蝌蚪porny九色| 国内精品视频一区二区三区八戒| 亚洲成在线观看| 国产精品原创巨作av| 性欧美大战久久久久久久久| 亚洲色图清纯唯美| 久久精品一区二区三区四区| 日韩视频国产视频| 欧美日韩国产在线播放网站| av不卡在线播放| 成人免费视频国产在线观看| 国产综合色视频| 精品一区二区三区在线视频| 免费av网站大全久久| 一区二区三区美女视频| 国产精品动漫网站| 欧美高清在线精品一区| 国产亚洲一本大道中文在线| 久久久国产精品麻豆 | 欧美日韩一区成人| 色综合久久88色综合天天免费| 丁香婷婷综合激情五月色| 九九精品一区二区| 国内精品不卡在线| 国产美女视频一区| 国产成人精品免费| 丁香一区二区三区| 9久草视频在线视频精品| 9久草视频在线视频精品| 成年人国产精品| 91在线免费视频观看| 99国产精品一区| 一本色道久久加勒比精品| 色噜噜狠狠一区二区三区果冻| 91色在线porny| 在线视频亚洲一区| 欧美日韩亚洲综合一区二区三区| 欧美日韩亚洲高清一区二区| 欧美美女视频在线观看| 91精品国产欧美一区二区18| 欧美mv日韩mv| 国产精品国模大尺度视频| 亚洲人成伊人成综合网小说| 亚洲综合色噜噜狠狠| 婷婷亚洲久悠悠色悠在线播放| 午夜欧美一区二区三区在线播放| 午夜免费久久看| 另类综合日韩欧美亚洲| 国产成人欧美日韩在线电影| av福利精品导航| 亚洲人精品午夜| 亚洲国产视频一区| 蜜臀a∨国产成人精品| 国产精品18久久久久久久久久久久 | 国产成人在线免费| 96av麻豆蜜桃一区二区| 欧美日韩不卡在线| 久久久亚洲国产美女国产盗摄| 国产欧美一区二区三区网站| 中文字幕一区二区三区四区| 亚洲电影欧美电影有声小说| 久久91精品久久久久久秒播| 国产精品911| 欧美性感一类影片在线播放| 久久婷婷国产综合国色天香 | 中文字幕人成不卡一区| 亚洲国产精品自拍| 国产成人精品免费视频网站| 欧美三级日韩在线| 欧美激情资源网| 日韩精品电影一区亚洲| 成人国产精品视频| 91麻豆精品国产91久久久久| 国产精品久久久久久久蜜臀 | 国产一区二区精品久久91| av午夜一区麻豆| 欧美成人三级在线| 一区二区三区四区不卡在线| 美腿丝袜亚洲综合| 色噜噜狠狠色综合中国| wwww国产精品欧美| 亚洲午夜久久久久久久久电影网| 国产精品91xxx| 日韩一区二区电影在线| 亚洲精品高清在线| 成人免费黄色在线| 精品国产区一区| 日韩精品视频网| 在线免费视频一区二区| 国产亚洲一二三区| 久久国产精品99久久人人澡| 欧美视频一区二区三区四区| 国产精品乱码人人做人人爱| 久久99精品国产麻豆不卡| 欧美在线视频你懂得| 一区二区中文字幕在线| 国产一区二区三区观看| 91麻豆精品国产综合久久久久久| 综合久久久久综合| 国产aⅴ综合色| 久久精品亚洲乱码伦伦中文| 久久综合综合久久综合| 欧美丰满一区二区免费视频| 亚洲一区二区在线播放相泽| 91在线观看地址| 国产欧美日韩在线| 国产一区欧美二区| 久久嫩草精品久久久精品一| 久久不见久久见免费视频7| 欧美一二三四区在线| 日韩影视精彩在线| 欧美一区二区观看视频| 日韩精品欧美精品| 6080亚洲精品一区二区| 亚洲成人精品影院| 欧美日韩一级片在线观看| 亚洲第一会所有码转帖| 欧美日韩一区二区三区在线 | 丁香六月综合激情| 欧美国产日韩亚洲一区| 丁香激情综合国产| 国产精品久久影院| 91免费小视频| 亚洲黄色免费网站| 欧美日韩另类一区| 人人精品人人爱| 精品乱人伦小说| 精东粉嫩av免费一区二区三区| 日韩欧美在线影院| 国产麻豆成人传媒免费观看| 国产无一区二区| 99久久婷婷国产| 亚洲一二三区视频在线观看| 欧美性色综合网| 奇米色777欧美一区二区| 欧美mv日韩mv亚洲| 成人妖精视频yjsp地址| 亚洲精品成人少妇| 91精品国产欧美日韩| 国内精品免费在线观看| 中文字幕一区二区不卡| 在线观看国产一区二区| 青青草视频一区| 欧美极品少妇xxxxⅹ高跟鞋 | 91农村精品一区二区在线| 亚洲国产毛片aaaaa无费看| 欧美一区二区三区色| 狠狠色狠狠色综合日日91app| 国产日本欧美一区二区| 一本大道久久a久久综合婷婷| 亚洲一区二区四区蜜桃| 日韩写真欧美这视频| 国产乱人伦偷精品视频不卡| 国产精品高潮呻吟久久| 91精品午夜视频| 成人在线一区二区三区| 亚洲成人午夜电影| 国产亚洲污的网站| 欧美日韩视频在线一区二区| 精品一区二区三区免费毛片爱 | 欧美日韩二区三区| 黄页网站大全一区二区| 亚洲欧美aⅴ...| 精品欧美一区二区在线观看| av成人老司机| 精品综合久久久久久8888| 中文字幕一区二区三区四区不卡 | 亚洲欧美日韩人成在线播放| 欧美一级黄色片| 99久久久精品免费观看国产蜜| 日韩av电影天堂| 亚洲人亚洲人成电影网站色| 日韩午夜在线观看视频| 色综合久久六月婷婷中文字幕| 久久国产精品99久久人人澡| 一区二区日韩电影| 久久精品男人天堂av| 4438x成人网最大色成网站| 91亚洲永久精品| 国产精品自产自拍| 青娱乐精品视频| 亚洲精选视频在线| 欧美激情一区在线| 日韩精品一区二区三区在线播放| 色综合天天综合网天天狠天天| 久久精品国产免费看久久精品| 亚洲精品乱码久久久久久久久| 国产调教视频一区| 精品国产一区二区三区忘忧草|