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

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

?? intspc3.c

?? profibus通信協議
?? C
字號:

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

	公司名稱:	 揚州恒春電子
	模塊名	:	 Profibus DP從站接口程序 
	創建人	:	                                          
	日期	:	 2007/03/01	                                         
	功能描述:   利用ATMEG64L對SPC3進行配置,實現Profibus通訊                                  
	其它說明:   編譯環境為Keil uVision2                                            
	版本	:	 V1.0

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

#include "spc3dps2.h"
#include "iom64v.h"
#include <macros.h>					

/*----------------------------------------------------------------------*/
/*                       INTERNAL FUNCTIONS                             */
/*----------------------------------------------------------------------*/
//void address_data_function (void *, UBYTE);
void wd_dp_mode_timeout_function (void);
void global_ctrl_command_function (void);
void go_leave_data_ex_function (void);

/*----------------------------------------------------------------------*/
/*                       LITERALLIES                                    */
/*----------------------------------------------------------------------*/


//sbit 	run_led=P1^0;				//show SPC3'states

#define DPS_CFG_OK      0
#define DPS_CFG_FAULT   1 
#define DPS_CFG_UPDATE  2

#define   Clr_run_led()      PORTB&=~BIT(PB2)	 /* show SPC3'states				*/
#define   Set_run_led()      PORTB|=BIT(PB2)	 /* show SPC3'states				*/


/*----------------------------------------------------------------------*/
/*                       MACROS                                         */
/*----------------------------------------------------------------------*/

/*----------------------------------------------------------------------*/
/*                       GLOBAL VARIABLES                               */
/*----------------------------------------------------------------------*/

UBYTE                   user_dps_state;
UBYTE                   user_global_ctrl_command;
UBYTE                   user_wd_state;
UBYTE                   store_mintsdr;  



extern UBYTE             real_no_add_chg;
extern UBYTE             this_station;
extern UBYTE             cfg_akt [20];
extern UBYTE             cfg_len_akt;
extern DPS2_IO_DATA_LEN  *user_io_data_len_ptr;  /* Aenderung 14.11.95 */
extern UBYTE             prm_tst_buf[];
extern UBYTE             Isr_Flag0;
extern UBYTE             Isr_Flag1;

/************************************************************************/
/*  D e s c r i p t i o n :                                             */
/*                                                                      */
/*  dps2_ind                                                            */
/*                                                                      */
/*  This function is called by the hardware interrupt                   */
/************************************************************************/

#pragma interrupt_handler int4_isr:6

void int4_isr(void)   
{
   

if(!Isr_Flag1)  Isr_Flag1=1,   Clr_run_led();
else            Isr_Flag1=0,   Set_run_led();
	
	
if(DPS2_GET_IND_GO_LEAVE_DATA_EX())
//if (spc3.int_reg.com.b[_IML] & GO_LEAVE_DATA_EX_B)
	{   //=== Start or the end of the Data-Exchange-State ===//
	go_leave_data_ex_function();
	DPS2_CON_IND_GO_LEAVE_DATA_EX();    // confirm this indication //
	//spc3.int_reg.ack.b[_IML] = (UBYTE)GO_LEAVE_DATA_EX_B;
	}

if(DPS2_GET_IND_NEW_GC_COMMAND())
	{   //===  New Global Control Command ===//
	global_ctrl_command_function();
	DPS2_CON_IND_NEW_GC_COMMAND();  // confirm this indication //
	}

if(DPS2_GET_IND_NEW_PRM_DATA())
	{   //=== New parameter  data ===//
	UBYTE    * prm_ptr;
	UBYTE   param_data_len, prm_result;
	UBYTE   ii;

	prm_result = DPS2_PRM_FINISHED;
	do
		{ // Check parameter until no conflict behavior //
		prm_ptr = DPS2_GET_PRM_BUF_PTR();
		param_data_len = DPS2_GET_PRM_LEN();

		// data_length_netto of parametration_telegram > 7 //
		if (param_data_len > 7)
			{
			
			//if (( *(prm_ptr+8) == 0xAA)  && ( *(prm_ptr+9) == 0xAA))   //20080731
				prm_result = DPS2_SET_PRM_DATA_NOT_OK(); // as example !!! //
			//else               20080731
				//{              20080731
				//for (ii= 0; ii<param_data_len && ii <10; ii++)  // store in the interim buffer //
					//prm_tst_buf[ii] = *(prm_ptr+ii+7);          // for the diagnostic //
															// !!!!!! as example !!!! //

				//prm_result = DPS2_SET_PRM_DATA_OK();
				//}              20080731
			}
		else
			prm_result = DPS2_SET_PRM_DATA_OK();

		} while(prm_result == DPS2_PRM_CONFLICT);

	store_mintsdr =  *(prm_ptr+3);    // store the mintsdr for restart after //
									  // baudrate search //

	}

if(DPS2_GET_IND_NEW_CFG_DATA())
	{   //=== New Configuration data ===//
	UBYTE  * cfg_ptr;
	UBYTE config_data_len, cfg_result, result;

	cfg_result = DPS2_CFG_FINISHED;
	result = DPS_CFG_OK;

	do
		{   // check configuration data until no conflict behavior m//
		cfg_ptr = DPS2_GET_CFG_BUF_PTR();             // pointer to the config_data_block //
		config_data_len = DPS2_GET_CFG_LEN();

		// In this example the only possible configurations are 0x13 and 0x23
		 //  (4 Byte I/O) or 0x11 and 0x21 (2 Byte I/O) are possible 

		if ( config_data_len != 2)
			cfg_result = DPS2_SET_CFG_DATA_NOT_OK();
		else
			{   // Length of the configuration data  o.k. //
				// check the configuratin bytes           //

			if ((cfg_akt[0] == cfg_ptr[0]) && (cfg_akt[1] == cfg_ptr[1]))
				result = DPS_CFG_OK;
				// the desired conf. is equal the actuall configuration //
			else
				{
				if (((cfg_ptr[0] == 0x13) && (cfg_ptr[1]) ==0x23)
				  || ((cfg_ptr[0] == 0x11) && (cfg_ptr[1]) ==0x21))
					{
					cfg_akt[0] = cfg_ptr[0];
					cfg_akt[1] = cfg_ptr[1];
					result = DPS_CFG_UPDATE;
					}
				else
					result = DPS_CFG_FAULT;              // as example !!!!! //


				if (result == DPS_CFG_UPDATE)
					{
					user_io_data_len_ptr = dps2_calculate_inp_outp_len (cfg_ptr,(UWORD)config_data_len);
					if (user_io_data_len_ptr != (DPS2_IO_DATA_LEN *)0)
						{
						DPS2_SET_IO_DATA_LEN(user_io_data_len_ptr);
						}
					else
						result = DPS_CFG_FAULT;
					}
				}
			switch (result)
				{
				case DPS_CFG_OK: cfg_result = DPS2_SET_CFG_DATA_OK();
					break;

				case DPS_CFG_FAULT: cfg_result = DPS2_SET_CFG_DATA_NOT_OK();
					break;

				case DPS_CFG_UPDATE: cfg_result = DPS2_SET_CFG_DATA_UPDATE();
					break;
				}
			}

		} while(cfg_result == DPS2_CFG_CONFLICT);
	}


if(DPS2_GET_IND_WD_DP_MODE_TIMEOUT())
	{   //=== Watchdog is run out ===//
	wd_dp_mode_timeout_function();
	DPS2_CON_IND_WD_DP_MODE_TIMEOUT();  // confirm this indication //
	}
if(SPC3_GET_IND_USER_TIMER_CLOCK())
	{   //==== Timer tick received ====//
	SPC3_CON_IND_USER_TIMER_CLOCK();
	}

if(SPC3_GET_IND_BAUDRATE_DETECT())
	{   //==== Baudrate found  ====//

	// If the baudrate has lost and again found in the state WAIT_CFG,  //
	//  DATA_EX the SPC3 would answer to the next telegramms            //
	//  with his default mintsdr.                                       //
	// But he should answer in the meantime parametrized mindstr        //

	     if ((DPS2_GET_DP_STATE() ==  DPS2_DP_STATE_WAIT_CFG )||(DPS2_GET_DP_STATE()  ==  DPS2_DP_STATE_DATA_EX))
		 
		          SPC3_SET_MINTSDR(store_mintsdr);

	     SPC3_CON_IND_BAUDRATE_DETECT();
	  }
    SPC3_SET_EOI(); 


}   // End dps2_ind() //



/*
void address_data_function (void *(address_data_ptr), UBYTE address_data_len)
{
char	ch;

//change the slave-address 
struct dps_address_data  * addr_ptr;

ch=address_data_len;

addr_ptr = address_data_ptr;

this_station = addr_ptr->new_address;
real_no_add_chg = addr_ptr->no_add_chg;

// store the new address and the bit real_no_add_chg for the next startup 

DPS2_FREE_SSA_BUF(); // release the Set Slave Address buffer 
}
*/
	  		

void wd_dp_mode_timeout_function (void)
{
UBYTE rueck;
	/* Watchdog is run out. The SPC3 reset the PROFIBUS DP Statemachine */

user_wd_state = SPC3_GET_WD_STATE();

	/*SX    small weakness of the SPC3
			Update of the diagnosis with 00
			otherwise the bit "static diagnosis" would appear in the
			next startup */


rueck = DPS2_SET_DIAG_LEN(6);
rueck = DPS2_SET_DIAG_STATE(0x00);
DPS2_DIAG_UPDATE();


}



void global_ctrl_command_function (void)
{

user_global_ctrl_command = DPS2_GET_GC_COMMAND();

}



void go_leave_data_ex_function (void)
{

user_dps_state = DPS2_GET_DP_STATE();
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品三级在线观看| 免费观看91视频大全| 午夜影院久久久| 粉嫩蜜臀av国产精品网站| 一本大道久久a久久综合| 欧美精品一区二区三区久久久| 亚洲美腿欧美偷拍| 欧美美女网站色| 国产精品毛片久久久久久| 天天综合色天天综合| 91天堂素人约啪| 久久久一区二区| 美女脱光内衣内裤视频久久影院| 色综合一区二区| 国产精品久久久久久久裸模| 精品一区二区精品| 欧美日韩国产影片| 亚洲一级二级三级在线免费观看| 国产精品中文欧美| 精品裸体舞一区二区三区| 午夜精品久久久久影视| 日本久久一区二区| 亚洲精品亚洲人成人网在线播放| 高清视频一区二区| 久久久午夜精品理论片中文字幕| 美女高潮久久久| 在线91免费看| 亚洲第一搞黄网站| 欧美色图免费看| 亚洲一区二区三区爽爽爽爽爽 | 亚洲第一二三四区| 成人黄色网址在线观看| 久久精品视频一区二区| 韩国一区二区视频| 久久综合九色综合97婷婷| 久久99蜜桃精品| 久久综合色鬼综合色| 国内成人精品2018免费看| 精品国产乱码久久久久久闺蜜| 日韩成人一级片| 日韩精品专区在线| 国产乱人伦精品一区二区在线观看 | 亚洲品质自拍视频网站| 97久久精品人人做人人爽| 国产精品伦理在线| 99久久777色| 一级中文字幕一区二区| 欧洲精品中文字幕| 男人的天堂亚洲一区| 欧美一区二区视频在线观看2022| 久久丁香综合五月国产三级网站| 337p粉嫩大胆色噜噜噜噜亚洲| 狠狠色丁香婷综合久久| 欧美国产成人精品| 91小宝寻花一区二区三区| 亚洲妇熟xx妇色黄| 精品国产伦理网| www..com久久爱| 亚洲国产视频一区| 精品人在线二区三区| 99久久精品国产一区二区三区| 亚洲另类一区二区| 欧美一级久久久| jiyouzz国产精品久久| 亚洲国产欧美在线人成| 精品成人一区二区三区四区| 成人app下载| 日韩电影一二三区| 日本一区二区三区在线观看| 在线观看欧美黄色| 激情五月激情综合网| 亚洲日本电影在线| 日韩欧美一级片| 99久久er热在这里只有精品66| 五月婷婷色综合| 国产三区在线成人av| 欧美亚洲另类激情小说| 国产一区二区看久久| 婷婷中文字幕综合| 日韩一区欧美小说| 欧美成人一区二区三区| 91国偷自产一区二区三区成为亚洲经典| 美女看a上一区| 一个色在线综合| 日本一二三不卡| 欧美成人官网二区| 欧美伊人久久大香线蕉综合69 | 日韩国产欧美一区二区三区| 中文字幕av不卡| 亚洲精品在线免费观看视频| 91久久人澡人人添人人爽欧美| 国产一区二区三区综合| 日韩经典中文字幕一区| 亚洲色图一区二区| 国产精品福利电影一区二区三区四区| 3atv一区二区三区| 在线看日韩精品电影| 成人美女视频在线观看| 国产一区二区导航在线播放| 免费亚洲电影在线| 亚洲国产成人tv| 亚洲最快最全在线视频| 亚洲欧洲在线观看av| 欧美国产精品一区| 国产欧美综合色| 久久久久9999亚洲精品| 久久蜜桃一区二区| 精品国产在天天线2019| 日韩欧美中文字幕制服| 欧美精品色一区二区三区| 欧美视频一区在线观看| 91成人在线观看喷潮| 成人视屏免费看| 成人av在线影院| 成人av动漫在线| 成人国产精品免费观看视频| 国产精品一区不卡| 粉嫩蜜臀av国产精品网站| 国产成人在线免费| jizz一区二区| 色国产综合视频| 在线亚洲高清视频| 欧美老女人第四色| 91精品欧美久久久久久动漫| 欧美肥妇毛茸茸| 日韩精品专区在线影院重磅| 久久影院午夜论| 国产欧美日本一区视频| 国产精品久久久久7777按摩 | thepron国产精品| 91猫先生在线| 欧美日韩一区二区三区不卡| 欧美日韩免费观看一区三区| 91精品免费在线观看| 久久久久久久久伊人| 国产精品久久久久aaaa樱花| 一卡二卡三卡日韩欧美| 蜜桃精品视频在线观看| 国产成人欧美日韩在线电影| 99精品视频在线播放观看| 欧美色视频在线观看| 91精品在线免费观看| 久久久久国产精品麻豆ai换脸| 欧美国产日韩一二三区| 夜夜爽夜夜爽精品视频| 奇米色一区二区三区四区| 国产风韵犹存在线视精品| 99re这里只有精品首页| 在线播放欧美女士性生活| 精品国产乱码91久久久久久网站| 国产精品视频一二三区| 午夜在线电影亚洲一区| 国产成人无遮挡在线视频| 日本二三区不卡| 欧美va亚洲va国产综合| 亚洲欧美在线另类| 日本一道高清亚洲日美韩| 成人久久视频在线观看| 欧美男男青年gay1069videost| 久久久久久久久久久99999| 亚洲最大成人网4388xx| 国产一区二区中文字幕| 91视频在线观看免费| 欧美tk丨vk视频| 亚洲午夜久久久久久久久电影网| 久久激五月天综合精品| 色欧美片视频在线观看 | 亚洲丝袜自拍清纯另类| 日本成人在线一区| 91色视频在线| xnxx国产精品| 亚洲制服丝袜在线| 成人久久18免费网站麻豆 | 欧美日本免费一区二区三区| 国产色产综合产在线视频| 日韩电影免费一区| 色悠悠久久综合| 中文字幕精品一区二区精品绿巨人 | 69成人精品免费视频| 国产精品国模大尺度视频| 免费人成黄页网站在线一区二区| 色综合久久久久久久久久久| 26uuu色噜噜精品一区二区| 亚洲成人先锋电影| 日本韩国一区二区三区视频| 国产精品福利一区二区三区| 激情五月激情综合网| 欧美日本一区二区三区四区| 一区二区三区免费观看| 91美女福利视频| 亚洲乱码日产精品bd| 91欧美一区二区| 亚洲日本va在线观看| 97se亚洲国产综合在线| 国产精品毛片高清在线完整版 | 中文字幕欧美国产| 国产一区二区三区在线观看免费视频| 正在播放亚洲一区| 久久精品国产精品青草| 日韩欧美激情一区|