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

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

?? bu.h

?? 基于EthernetIP協議的應用程序,可以讀取AB公司Controllogix系列Ethernetip協議PLC數據. 此軟件代碼可用于工業控制.
?? H
字號:
/****************************************************************************
*****************************************************************************
**
** File Name
** ---------
**
** BU.H
**
*****************************************************************************
*****************************************************************************
**
** Description
** -----------
**
** Bit Utilities Component Public Interfaces Header File
**
** This source file defines the public interfaces to the bit utilities
** component.  This component contains a collection of services that provide
** encapsulation of low level bit masking and setting operations.  Among
** the services provided are a set for converting from bit number (0..15)
** to a bit setting mask or a bit clearing mask.  A service for byte swapping
** 16-bit words is also provided.
**
*****************************************************************************
*****************************************************************************
**
** Source Change Indices
** ---------------------
**
** Porting: <none>0----<major>         Customization: <none>--2--<major>
**
**    *  Application developers may wish to provide processor specific
**       performance enhanced versions of some of the BU services.
**
*****************************************************************************
*****************************************************************************
**
** Services List
** -------------
**
** Bit Mask Conversions:
**
**    BU_BitNumToMask()       Change bit number to bit setting mask
**    BU_BitNumToNotMask()    Change bit number to bit clearing mask
**
**
** Byte Manipulation Services
**
**    BU_HiByte()             Extract the high byte of a word
**    BU_HiWord()             Extract the high word of a longword
**    BU_LoByte()             Extract the low byte of a word
**    BU_LoWord()             Extract the low word of a longword
**    BU_SwapBytes()          Swap bytes in a word
**
**
** Shift Services
**
**    BU_ShiftLeft()          Shift an integer left once
**    BU_ShiftLeftMultiple()  Shift an integer left multiple times
**
**
** Bit Array Services
**
**    BU_ClearBit()           Clear one bit of a bit array
**    BU_GetBit()             Get one bit of a bit array
**    BU_SetBit()             Set one bit of a bit array
**    BU_ClearBitArray()      Clear all bits of a bit array
**    BU_BitArrayAllZero()    Test if all bits in a bit array are zero
**
*****************************************************************************
*****************************************************************************
**                                                                         **
** ETHERNET/IP EXAMPLE CODE                                                **
** COPYRIGHT (c) 2000-2005 ODVA (Open DeviceNet Vendor Association)		   **
**						   & ControlNet International Ltd.                 **
**                                                                         **
** All rights reserved, except as specifically licensed in writing.        **
** Use of the Ethernet/IP Example Protocol Software is subject to          **
** ODVA's and ControlNet International's Terms of Use Agreement.           **
** The following work constitutes example program code and is intended     **
** merely to illustrate useful programming techniques.  The user is        **
** responsible for applying the code correctly.  The code is provided      **
** AS IS without warranty and is in no way guaranteed to be error-free.    **
**                                                                         **
*****************************************************************************
*****************************************************************************
*/

/****************************************************************************
*****************************************************************************
**
** Change Log
** ----------
**
**
*****************************************************************************
*****************************************************************************
*/

#ifndef BU_H
#define BU_H



/****************************************************************************
**
** Globals
**
*****************************************************************************
*/

/*---------------------------------------------------------------------------
**
** BU_BitTbl
** BU_NotBitTbl
**
**---------------------------------------------------------------------------
**
** The two tables below are used to rapidly translate from bit numbers to bit
** masks.  A lookup through "BitTbl" would, for instance, be used to change
** 0x03 to 00001000 binary and a corresponding lookup through "NotBitTbl"
** would be used to change 0x03 to 11110111 (inverted mask). These tables are
** usable up to a range of 16 bits (width).
**
**---------------------------------------------------------------------------
*/

extern UINT16 const BU_aiBitTbl[];
extern UINT16 const BU_aiNotBitTbl[];



/****************************************************************************
**
** Services
**
*****************************************************************************
*/

/*---------------------------------------------------------------------------
**
** BU_BitNumToMask()
**
** Convert an unsigned bit number (an index) into a bit setting mask.
**
**---------------------------------------------------------------------------
**
** Inputs:
**    iX                      - the original index in the range 0x00 .. 0x0f
**
** Outputs:
**    Returns                 - corresponding bit mask with one bit set
**
** Usage:
**    iOut = BU_BitNumToMask( iX )
**
**---------------------------------------------------------------------------
*/

#define BU_BitNumToMask( iX )  BU_aiBitTbl[ iX ]



/*---------------------------------------------------------------------------
**
** BU_BitNumToNotMask()
**
** Convert an unsigned bit number (an index) into a bit clearing mask.
**
**---------------------------------------------------------------------------
**
** Inputs:
**    iX                      - the original index in the range 0x00 .. 0x0f
**
** Outputs:
**    Returns                 - corresponding bit mask with one bit clear
**
** Usage:
**    iOut = BU_BitNumToNotMask( iX )
**
**---------------------------------------------------------------------------
*/

#define BU_BitNumToNotMask( iX )  BU_aiNotBitTbl[ iX ]



/*---------------------------------------------------------------------------
**
** BU_ClearBit()
** BU_GetBit()
** BU_SetBit()
**
** Clear/get/set a bit in a multi byte bit array.
**
**---------------------------------------------------------------------------
**
** Inputs:
**    xName                   - Name of bit array
**    iBit                    - Which bit in the array
**
** Outputs:
**    Return                  - Get returns TRUE for 1 bit, FALSE for 0 bit.
**                              Set/Clear return nothing.
**
** Usage:
**    BU_ClearBit( abStartedConns, i );
**    if( BU_GetBit( abStartedConns, i ) )...
**    BU_SetBit( abStartedConns, i );
**
**---------------------------------------------------------------------------
*/

#define BU_ClearBit( xName, iBit ) \
   ((UINT8*)(xName))[ (iBit) >> 3 ] &= (UINT8)(BU_BitNumToNotMask( (iBit) & 0x07 ))

#define BU_GetBit( xName, iBit ) \
   ( ((UINT8*)(xName))[ (iBit) >> 3 ] & (UINT8)(BU_BitNumToMask( (iBit) & 0x07 )) )

#define BU_SetBit( xName, iBit ) \
   ((UINT8*)(xName))[ (iBit) >> 3 ] |= (UINT8)(BU_BitNumToMask( (iBit) & 0x07 ))



/*---------------------------------------------------------------------------
**
** BU_ClearBitArray()
**
** Clear all bits in a multi byte bit array.
**
**---------------------------------------------------------------------------
**
** Inputs:
**    xName                   - Name of bit array
**    iBits                   - Number of bits in the array
**
** Outputs:
**    None
**
** Usage:
**    BU_ClearBitArray( abStartedConns, 32 );
**
**---------------------------------------------------------------------------
*/

#define BU_ClearBitArray( xName, iBits ) \
   UC_SetMem( (void*)(xName), 0, (iBits) >> 3 )



/*---------------------------------------------------------------------------
**
** BU_BitArrayAllZero()
**
** Test for all bits equal 0 in a multi byte bit array.
**
**---------------------------------------------------------------------------
**
** Inputs:
**    xName                   - Name of bit array
**    iBits                   - Number of bits in the array
**
** Outputs:
**    Return                  - TRUE if all bits in array 0
**                              FALSE if any bit in array 1
**
** Usage:
**    if( BU_BitArrayAllZero( abStartedConns, 32 ) )...
**
**---------------------------------------------------------------------------
*/

#define BU_BitArrayAllZero( xName, iBits ) \
   ( UC_CompareMemToByte( (void*)(xName), 0, (iBits) >> 3 ) == NULL )



/*---------------------------------------------------------------------------
**
** BU_HiByte()
** BU_LoByte()
**
** Extract the most or least significant byte of a 16-bit word.
**
**---------------------------------------------------------------------------
**
** Inputs:
**    iX                      - a 16-bit word
**
** Outputs:
**    Returns                 - the most significant byte
**
** Usage:
**    bHi  = BU_HiByte( iX )
**    bLow = BU_LoByte( iX )
**
**---------------------------------------------------------------------------
*/

#define BU_HiByte( iX )  ( ( (iX) >> 8 ) & 0x00FF )
#define BU_LoByte( iX )  ( (iX) & 0x00FF )



/*---------------------------------------------------------------------------
**
** BU_HiWord()
** BU_LoWord()
**
** Extract the most or least significant word of a 32-bit word.
**
**---------------------------------------------------------------------------
**
** Inputs:
**    lX                      - a 32-bit word
**
** Outputs:
**    Returns                 - the most significant word
**
** Usage:
**    iHigh = BU_HiWord( lX )
**    iLow  = BU_LoWord( lX )
**
**---------------------------------------------------------------------------
*/

#define BU_HiWord( lX )  ( (UINT16)(  ( (lX) >> 16) & 0x0000FFFFL ) )
#define BU_LoWord( lX )  ( (UINT16)( (lX) & 0x0000FFFFL ) )



/*---------------------------------------------------------------------------
**
** BU_ShiftLeft()
**
** Shift an arbitrary length integer left exactly one time.
** This is used to avoid generating references to library functions for long
** integers.
**
**---------------------------------------------------------------------------
**
** Inputs:
**    nX                      - the original integer
**
** Outputs:
**    return                  - the shifted integer
**
** Usage:
**    BU_ShiftLeft( nX )
**
**---------------------------------------------------------------------------
*/

#define BU_ShiftLeft( nX )  (nX) += (nX)



/*---------------------------------------------------------------------------
**
** BU_ShiftLeftMultiple()
**
** Shifts an arbitrary length integer left a multiple number of times.
** This is used to avoid generating references to library functions
** for long integers.
**
**---------------------------------------------------------------------------
**
** Inputs:
**    nX                      - the original integer
**    iN                      - the shift count
**
** Outputs:
**    return                  - the shifted integer
**
** Usage:
**    BU_ShiftLeftMultiple( nX, iN )
**
**---------------------------------------------------------------------------
*/

#define BU_ShiftLeftMultiple( nX, iN )    \
   {                                      \
      UINT16 ixxx;                        \
      for( ixxx = (iN); ixxx; ixxx-- )    \
      {                                   \
         (nX) += (nX);                    \
      }                                   \
   }



/*---------------------------------------------------------------------------
**
** BU_SwapBytes()
**
** This service swaps the high and low bytes of a 16 bit integer.  The non-
** Intel version of this service presented below is portable, but can most
** likely be optimized for specific processors.
**
**---------------------------------------------------------------------------
**
** Inputs:
**    iX                      - the original integer
**
** Outputs:
**    (side-effect)           - the original integer with its bytes swapped
**
** Usage:
**    BU_SwapBytes(iX)
**
**---------------------------------------------------------------------------
*/

#ifdef INTEL80x86
#define BU_SwapBytes( iX ) \
   ASM{ mov ax,iX }  ASM{ xchg ah,al }  ASM{ mov iX, ax }
#else
#define BU_SwapBytes( iX )  \
   ( ( ( (iX) & 0xFF00 ) >> 8 ) | ( ( (iX) & 0x00FF ) << 8 ) )
#endif



#endif  /* inclusion lock */

/****************************************************************************
**
** End of BU.H
**
*****************************************************************************
*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色94色欧美sute亚洲线路一久| 日本乱码高清不卡字幕| av亚洲精华国产精华精| 欧美三级日韩三级国产三级| 久久精品综合网| 一区二区三区在线不卡| 国产伦精品一区二区三区免费 | 成人精品视频一区二区三区| 欧美视频一区二区三区在线观看 | 久久久久久久久蜜桃| 亚洲国产精品嫩草影院| 风间由美一区二区三区在线观看| 日韩视频免费观看高清在线视频| 一区二区欧美国产| 91在线观看污| 欧美韩国一区二区| 国产伦精品一区二区三区免费| 欧美一级欧美三级在线观看 | 美女视频一区二区| 精品视频在线看| 亚洲一区av在线| 在线观看视频91| 亚洲一区二区在线免费看| www.性欧美| 国产精品久久久久天堂| 国产精品一区在线| 久久影院视频免费| 国产在线国偷精品产拍免费yy| 精品少妇一区二区三区免费观看| 三级在线观看一区二区 | 色狠狠桃花综合| 自拍偷自拍亚洲精品播放| 成人黄色一级视频| 国产精品天天看| 成人国产亚洲欧美成人综合网| 国产亚洲一区字幕| eeuss鲁片一区二区三区在线观看| 2020国产成人综合网| 国产a精品视频| 国产精品久久久久aaaa| 97se亚洲国产综合自在线不卡| 国产精品久久久久久久久久免费看 | 岛国一区二区三区| 国产精品传媒入口麻豆| 色婷婷亚洲一区二区三区| 亚洲少妇中出一区| 欧美日韩国产精品成人| 免费av网站大全久久| 久久亚洲捆绑美女| 91香蕉视频mp4| 亚洲午夜激情av| 日韩视频免费直播| 成人综合婷婷国产精品久久 | 亚洲国产精品精华液ab| 91原创在线视频| 亚洲成av人片一区二区| 欧美一级在线观看| caoporen国产精品视频| 亚洲国产一区二区在线播放| 欧美v国产在线一区二区三区| 国产成a人无v码亚洲福利| 一区二区欧美视频| 精品1区2区在线观看| 不卡免费追剧大全电视剧网站| 一区二区激情视频| 久久久久久久久久久黄色| 色婷婷亚洲综合| 久久超碰97中文字幕| 亚洲欧美视频在线观看视频| 91精品国产综合久久久久久漫画| 国产精品自在欧美一区| 一区二区三区加勒比av| 精品国产乱码久久久久久图片 | 久久精品国产**网站演员| 国产精品灌醉下药二区| 日韩一卡二卡三卡| 色婷婷综合五月| 国产成人午夜高潮毛片| 亚洲动漫第一页| 中文在线免费一区三区高中清不卡| 欧美亚洲国产一区在线观看网站| 国产自产高清不卡| 日韩精品五月天| 亚洲免费观看高清在线观看| 国产亚洲福利社区一区| 欧美一二三区在线观看| 91黄视频在线观看| 成人av综合在线| 看电视剧不卡顿的网站| 亚洲综合视频在线| 国产精品麻豆视频| 久久久久88色偷偷免费| 91精品国产综合久久久蜜臀粉嫩| 色哟哟日韩精品| 99在线精品免费| 成人黄色av电影| 国产成人精品网址| 国内精品久久久久影院一蜜桃| 日本vs亚洲vs韩国一区三区 | 本田岬高潮一区二区三区| 精品在线免费视频| 免费观看91视频大全| 日韩精品亚洲专区| 偷窥少妇高潮呻吟av久久免费 | 中文字幕av一区二区三区| 久久嫩草精品久久久久| 精品女同一区二区| 精品久久久久久综合日本欧美 | 亚洲欧美国产毛片在线| 欧美高清在线一区| 中文字幕av一区二区三区| 亚洲国产激情av| 欧美经典三级视频一区二区三区| 久久久久久久综合| 国产精品视频免费| 一区视频在线播放| 亚洲精品成a人| 亚洲午夜在线视频| 青青青伊人色综合久久| 蜜臀av性久久久久蜜臀aⅴ| 麻豆国产91在线播放| 麻豆精品精品国产自在97香蕉| 久久国产精品99久久久久久老狼| 麻豆一区二区三区| 极品美女销魂一区二区三区| 国产精品亚洲第一| 99re热视频这里只精品| 色国产综合视频| 欧美日韩电影一区| 日韩欧美高清一区| 久久久国产精品不卡| 国产精品福利在线播放| 亚洲精品成人少妇| 日本欧美一区二区在线观看| 精品伊人久久久久7777人| 国产成人免费xxxxxxxx| 国产 日韩 欧美大片| 欧洲色大大久久| 欧美不卡激情三级在线观看| 久久美女高清视频| 亚洲综合激情另类小说区| 视频一区二区欧美| 国产盗摄一区二区三区| 一本一道久久a久久精品| 91精品欧美久久久久久动漫 | 日本中文字幕一区二区有限公司| 久久超级碰视频| 99精品偷自拍| 91麻豆精品国产91久久久久久久久| 日韩一区二区视频在线观看| 国产欧美一区二区精品性色超碰| 亚洲柠檬福利资源导航| 麻豆一区二区三| 色94色欧美sute亚洲线路一久 | 91精品国产91久久综合桃花| 国产网红主播福利一区二区| 一区二区三区久久久| 国产一区二区在线观看视频| 色av综合在线| 国产欧美日韩激情| 丝瓜av网站精品一区二区| 成人午夜电影网站| 5月丁香婷婷综合| 亚洲视频免费在线观看| 六月婷婷色综合| 欧美日精品一区视频| 国产女同性恋一区二区| 日韩精品色哟哟| 91免费国产在线观看| 26uuu亚洲综合色欧美| 亚洲午夜在线视频| 一本久久精品一区二区| 久久久蜜臀国产一区二区| 亚洲成a人v欧美综合天堂| 99久久精品情趣| 久久免费视频一区| 毛片一区二区三区| 欧美日韩精品一区二区三区蜜桃 | 99久久精品国产网站| 日韩欧美久久久| 亚洲第一搞黄网站| 欧洲另类一二三四区| 一区在线播放视频| 成人黄色软件下载| 国产精品视频看| 国产精品综合一区二区| 日韩欧美成人激情| 毛片一区二区三区| 91精品啪在线观看国产60岁| 一区二区三区不卡视频在线观看| 99久久精品国产毛片| 亚洲人精品午夜| av一二三不卡影片| 中文字幕在线不卡| 99久久777色| 亚洲影院理伦片| 在线观看91精品国产入口| 樱花草国产18久久久久| 日本精品一区二区三区高清| 亚洲黄色性网站|