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

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

?? can18xx8.h

?? PIC 18F8680 CAN bus Demo
?? H
?? 第 1 頁 / 共 2 頁
字號:
/*********************************************************************
 *              PIC18CXX8 CAN C Library Header File
 *********************************************************************
 * FileName:        CAN18CXX8.h
 * Dependencies:    None
 * Date:            09/06/00
 * Processor:       PIC18CXX8
 * Complier:        MPLAB 5.11.00
 * Company:         Microchip Technology, Inc.
 *
 *
 * Software License Agreement
 *
 * The software supplied herewith by Microchip Technology Incorporated
 * (the 揅ompany? for its PICmicro?Microcontroller is intended and
 * supplied to you, the Company抯 customer, for use solely and
 * exclusively on Microchip PICmicro Microcontroller products. The
 * software is owned by the Company and/or its supplier, and is
 * protected under applicable copyright laws. All rights are reserved.
 *  Any use in violation of the foregoing restrictions may subject the
 * user to criminal sanctions under applicable laws, as well as to
 * civil liability for the breach of the terms and conditions of this
 * license.
 *
 * THIS SOFTWARE IS PROVIDED IN AN 揂S IS?CONDITION. NO WARRANTIES,
 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
 * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
 * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
 *
 * Author               Date    Comment
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Nilesh Rajbharti     9/6/00  Original        (Rev 1.0)
 * Nilesh Rajbharti     12/1/00 Fixed bugs.
 *                              (CANRegsToID, CANReceiveMessage,
 *                               CANSetMask + Added
 *                               CAN_CONFIG_DBL_BUFFER_ON/OFF option)
 * Nilesh Rajbharti     6/8/01  Renamed CAN_CONFIG_DBL_BUFFERED to
 *                              CAN_RX_DBL_BUFFERED
 * Nilesh Rajbharti     10/11/01 Added support for HITECH compiler
 *                              Modified CAN_MESSAGE_ID def to be
 *                              compatible with HITECH Compiler
 *                              Fixed CAN_CONFIG_SAMPLE_BIT enum.
 *                              (Rev 1.1)
 *
 *********************************************************************/
#ifndef CAN18XX8_H          // To avoid duplicate inclusion
#define CAN18XX8_H


#if defined(HI_TECH_C)
    #define HITECH_C18
#else
    #define MCHP_C18
#endif

#if defined(MCHP_C18) && defined(HITECH_C18)
#error "Invalid Compiler selection."
#endif

#if !defined(MCHP_C18) && !defined(HITECH_C18)
#error "Compiler not supported."
#endif

#if defined(MCHP_C18)
    #define COMSTAT_TXB0        COMSTATbits.TXB0
    #define COMSTAT_TXBP        COMSTATbits.TXBP
    #define COMSTAT_RXBP        COMSTATbits.RXBP
    #define CANCON_ABAT         CANCONbits.ABAT
    #define RXB0CON_RXFUL       RXB0CONbits.RXFUL
    #define RXB1CON_RXFUL       RXB1CONbits.RXFUL
    #define TXB0CON_TXREQ       TXB0CONbits.TXREQ
    #define TXB1CON_TXREQ       TXB1CONbits.TXREQ
    #define TXB2CON_TXREQ       TXB2CONbits.TXREQ
#endif

#if defined(HITECH_C18)
    #define COMSTAT_TXB0        TXB0
    #define COMSTAT_TXBP        TXBP
    #define COMSTAT_RXBP        RXBP
    #define CANCON_ABAT         ABAT
    #define RXB0CON_RXFUL       RXB0RXFUL
    #define TXB0CON_TXREQ       TXB0REQ

    /*
     * Following are special defs to overcome compiler problem
     * at the time of this re-write.
     * Set following line to "#if 0" after verifiying correct
     * compiler behavior.
     */
#if 1
    static struct
    {
        unsigned : 7;
        unsigned RXFUL : 1;
    } RXB1CONbits @ 0xf50;
    #define RXB1CON_RXFUL       RXB1CONbits.RXFUL

    static struct
    {
        unsigned TXPRI0:1;
        unsigned TXPRI1:1;
        unsigned :1;
        unsigned TXREQ:1;
        unsigned TXERR:1;
        unsigned TXLARB:1;
        unsigned TXABT:1;
    } TXB1CONbits @ 0xf30;
    #define TXB1CON_TXREQ       TXB1CONbits.TXREQ

    static struct
    {
        unsigned TXPRI0:1;
        unsigned TXPRI1:1;
        unsigned :1;
        unsigned TXREQ:1;
        unsigned TXERR:1;
        unsigned TXLARB:1;
        unsigned TXABT:1;
    } TXB2CONbits @ 0xf20;
    #define TXB2CON_TXREQ       TXB2CONbits.TXREQ
#else
    #define RXB1CON_RXFUL       RXB1RXFUL
    #define TXB1CON_TXREQ       TXB1REQ
    #define TXB2CON_TXREQ       TXB2REQ
#endif



#endif




/*********************************************************************
 *
 * General purpose typedef's used by PICCAN libray.
 *
 * Remove these definations if they are already defined in one of your
 * application files.  Make sure that corresponding header file is
 * included before including this header file.
 ********************************************************************/
typedef enum _BOOL { FALSE = 0, TRUE } BOOL;
typedef unsigned char BYTE;

//////////////////////////////////////////////////////////////////////

/*********************************************************************
 *
 * union CAN_MESSAGE_ID
 *
 * This union provides abstract data type for CAN message id.
 * It is used for both 11-bit and 29-bit message identifiers.
 * There are multiple union members to be able to access individual
 * parts of it.
 *
 ********************************************************************/
 // Parse-out 29-bit or 11-bit (saved in 32-bit number)
typedef union _CAN_MESSAGE_ID
{
    unsigned long ID;

    struct
    {
        struct
        {
            unsigned SIDL:3;        // SIDL<5:7>
            unsigned SIDH:5;        // SIDH<0:4>
        } BYTE1;
        struct
        {
            unsigned SIDHU:3;       // SIDH<5:7>
            unsigned EIDL_LN:5;     // EIDL<0:4>
        } BYTE2;
        struct
        {
            unsigned EIDL_UN:3;     // EIDL<5:7>
            unsigned EIDH_LN:5;     // EIDH<0:4>
        } BYTE3;
        struct
        {
            unsigned EIDH_UN:3;     // EIDH<5:7>
            unsigned EIDHU:2;       // SIDL<0:1>
            unsigned :3;
        } BYTE4;
    } ID_VALS;

    // This is to allow individual byte access within message id.
    struct
    {
        BYTE BYTE_1;
        BYTE BYTE_2;
        BYTE BYTE_3;
        BYTE BYTE_4;
    } BYTES;
} CAN_MESSAGE_ID;

//////////////////////////////////////////////////////////////////////

/*********************************************************************
 *
 * enum CAN_TX_MSG_FLAGS
 *
 * This enumeration values define flags related to transmission of a
 * CAN message.  There could be more than one this flag
 * ANDed together to form multiple flags.
 *
 *********************************************************************/
 enum CAN_TX_MSG_FLAGS
 {
    CAN_TX_PRIORITY_BITS= 0b00000011,
    CAN_TX_PRIORITY_0   = 0b11111100,   // XXXXXX00
    CAN_TX_PRIORITY_1   = 0b11111101,   // XXXXXX01
    CAN_TX_PRIORITY_2   = 0b11111110,   // XXXXXX10
    CAN_TX_PRIORITY_3   = 0b11111111,   // XXXXXX11

    CAN_TX_FRAME_BIT    = 0b00001000,
    CAN_TX_STD_FRAME    = 0b11111111,   // XXXXX1XX
    CAN_TX_XTD_FRAME    = 0b11110111,   // XXXXX0XX

    CAN_TX_RTR_BIT      = 0b01000000,
    CAN_TX_NO_RTR_FRAME = 0b11111111,   // X1XXXXXX
    CAN_TX_RTR_FRAME    = 0b10111111    // X0XXXXXX
};

//////////////////////////////////////////////////////////////////////

/*********************************************************************
 *
 * enum CAN_RX_MSG_FLAGS
 *
 * This enumeration values define flags related to reception of a CAN
 * message.  There could be more than one this flag
 * ANDed together to form multiple flags.
 * If a particular bit is set, corresponding meaning is TRUE or else
 * it will be FALSE.
 *
 * e.g.
 *      if (MsgFlag & CAN_RX_OVERFLOW)
 *      {
 *          // Receiver overflow has occured.  We have lost previous
 *          // message.
 *          ...
 *      }
 *
 ********************************************************************/
enum CAN_RX_MSG_FLAGS
{
    CAN_RX_FILTER_BITS  = 0b00000111,   // Use this to access filter
                                        // bits
    CAN_RX_FILTER_1     = 0b00000000,
    CAN_RX_FILTER_2     = 0b00000001,
    CAN_RX_FILTER_3     = 0b00000010,
    CAN_RX_FILTER_4     = 0b00000011,
    CAN_RX_FILTER_5     = 0b00000100,
    CAN_RX_FILTER_6     = 0b00000101,

    CAN_RX_OVERFLOW     = 0b00001000,   // Set if Overflowed else
                                        // cleared

    CAN_RX_INVALID_MSG  = 0b00010000,   // Set if invalid else
                                        // cleared

    CAN_RX_XTD_FRAME    = 0b00100000,   // Set if XTD message else
                                        // cleared

    CAN_RX_RTR_FRAME    = 0b01000000,   // Set if RTR message else
                                        // cleared

    CAN_RX_DBL_BUFFERED = 0b10000000    // Set if this message was
                                        // hardware double-buffered
};

//////////////////////////////////////////////////////////////////////


/*********************************************************************
 *
 * enum CAN_MASK
 *
 * This enumeration values define mask codes.  Routine CANSetMask()
 * requires this code as one of its arguments.  These enumerations
 * must be used by itself i.e. it cannot be ANDed to form multiple
 * values.
 *
 ********************************************************************/
enum CAN_MASK
{
     CAN_MASK_B1,
     CAN_MASK_B2
};

//////////////////////////////////////////////////////////////////////

/*********************************************************************
 *
 * enum CAN_FILTER
 *
 * This enumeration values define filter codes.  Routine CANSetFilter
 * requires this code as one of its arguments.  These enumerations
 * must be used by itself
 * i.e. it cannot be ANDed to form multiple values.
 *
 ********************************************************************/
enum CAN_FILTER
{
    CAN_FILTER_B1_F1,
    CAN_FILTER_B1_F2,
    CAN_FILTER_B2_F1,
    CAN_FILTER_B2_F2,
    CAN_FILTER_B2_F3,
    CAN_FILTER_B2_F4
};

//////////////////////////////////////////////////////////////////////

/*********************************************************************
 *
 * enum CAN_OP_MODE
 *
 * This enumeration values define codes related to CAN module
 * operation mode. CANSetOperationMode() routine requires this code.
 * These values must be used by itself
 * i.e. it cannot be ANDed to form * multiple values.
 *
 ********************************************************************/
enum CAN_OP_MODE
{
    CAN_OP_MODE_BITS    		= 0b11100000, 	// Use this to access opmode
                                        					// bits
    CAN_OP_MODE_NORMAL  	= 0b00000000,
    CAN_OP_MODE_SLEEP   	= 0b00100000,
    CAN_OP_MODE_LOOP    	= 0b01000000,
    CAN_OP_MODE_LISTEN  	= 0b01100000,
    CAN_OP_MODE_CONFIG  	= 0b10000000
};

//////////////////////////////////////////////////////////////////////

/*********************************************************************
 *
 * enum CAN_CONFIG_FLAGS
 *
 * This enumeration values define flags related to configuring CAN
 * module. Routines CANInitialize() and CANSetBaudRate() use these
 * codes. One or more these values may be ANDed to form multiple
 * flags.
 *
 ********************************************************************/
enum CAN_CONFIG_FLAGS
{
    CAN_CONFIG_DEFAULT          = 0b11111111,   // 11111111

    CAN_CONFIG_PHSEG2_PRG_BIT   = 0b00000001,
    CAN_CONFIG_PHSEG2_PRG_ON    = 0b11111111,   // XXXXXXX1
    CAN_CONFIG_PHSEG2_PRG_OFF   = 0b11111110,   // XXXXXXX0

    CAN_CONFIG_LINE_FILTER_BIT  = 0b00000010,
    CAN_CONFIG_LINE_FILTER_ON   = 0b11111111,   // XXXXXX1X
    CAN_CONFIG_LINE_FILTER_OFF  = 0b11111101,   // XXXXXX0X

    CAN_CONFIG_SAMPLE_BIT       = 0b00000100,
    CAN_CONFIG_SAMPLE_ONCE      = 0b11111111,   // XXXXX1XX
    CAN_CONFIG_SAMPLE_THRICE    = 0b11111011,   // XXXXX0XX

    CAN_CONFIG_MSG_TYPE_BIT     = 0b00001000,
    CAN_CONFIG_STD_MSG          = 0b11111111,   // XXXX1XXX
    CAN_CONFIG_XTD_MSG          = 0b11110111,   // XXXX0XXX

    CAN_CONFIG_DBL_BUFFER_BIT   = 0b00010000,
    CAN_CONFIG_DBL_BUFFER_ON    = 0b11111111,   // XXX1XXXX
    CAN_CONFIG_DBL_BUFFER_OFF   = 0b11101111,   // XXX0XXXX

    CAN_CONFIG_MSG_BITS         = 		0b01100000,
    CAN_CONFIG_ALL_MSG          = 		0b11111111,   // X11XXXXX
    CAN_CONFIG_VALID_XTD_MSG    = 0b11011111,   // X10XXXXX
    CAN_CONFIG_VALID_STD_MSG    = 0b10111111,   // X01XXXXX
    CAN_CONFIG_ALL_VALID_MSG    = 0b10011111    // X00XXXXX
};

//////////////////////////////////////////////////////////////////////

/*********************************************************************
 * Function:        void CANInitialize( BYTE SJW,
 *                                      BYTE BRP,
 *                                      BYTE PHSEG1,
 *                                      BYTE PHSEG2,
 *                                      BYTE PROPSEG,
 *                                      enum CAN_CONFIG_FLAGS flags)
 *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精彩视频在线观看| 久久夜色精品国产噜噜av| 欧美一区二区三区婷婷月色 | 日韩免费一区二区三区在线播放| 日韩欧美第一区| 亚洲男人的天堂在线aⅴ视频| 久久99精品网久久| 在线观看91精品国产入口| 国产三级一区二区| 人人狠狠综合久久亚洲| 91极品美女在线| 国产精品私人影院| 精品一区二区三区香蕉蜜桃| 欧美美女直播网站| 亚洲日本丝袜连裤袜办公室| 国产电影一区二区三区| 日韩一区二区三区高清免费看看| 一区二区三国产精华液| 成人黄色软件下载| 欧美国产一区视频在线观看| 久久精品国产在热久久| 51午夜精品国产| 亚洲成人手机在线| 欧美在线一二三| 夜夜操天天操亚洲| a4yy欧美一区二区三区| 国产精品美女久久久久久久久久久| 美女网站色91| 欧美不卡一二三| 蜜桃av一区二区三区| 欧美一区二区在线免费观看| 亚洲国产精品久久艾草纯爱| 欧美日韩免费在线视频| 亚洲图片欧美色图| 欧美片网站yy| 蜜桃精品视频在线| 精品国产三级电影在线观看| 韩国视频一区二区| 国产区在线观看成人精品| 国产乱码精品一区二区三区av| 2021中文字幕一区亚洲| 国产精品性做久久久久久| 国产精品视频你懂的| www.日韩大片| 亚洲激情av在线| 欧美日韩视频在线观看一区二区三区| 亚洲超丰满肉感bbw| 91精品国产品国语在线不卡| 久草中文综合在线| 欧美国产精品v| 94-欧美-setu| 丝袜美腿亚洲色图| 久久欧美一区二区| 91无套直看片红桃| 亚洲成人激情av| 亚洲精品一区二区三区蜜桃下载| 国产福利不卡视频| 一区二区在线观看免费视频播放| 911精品产国品一二三产区| 国产一区二区三区黄视频| 国产精品免费视频一区| 欧美伊人久久大香线蕉综合69| 精品一二三四区| 中文字幕欧美激情| 欧美精三区欧美精三区| 国产伦理精品不卡| 亚洲国产欧美日韩另类综合| 精品成人佐山爱一区二区| 99麻豆久久久国产精品免费 | 亚洲黄色录像片| 欧美少妇bbb| 国内外成人在线| 亚洲一区国产视频| 国产欧美日韩综合精品一区二区| 91理论电影在线观看| 精品午夜一区二区三区在线观看| 亚洲欧美色图小说| 日韩午夜精品电影| 91精品办公室少妇高潮对白| 韩国视频一区二区| 午夜欧美电影在线观看| 亚洲国产岛国毛片在线| 91精品国产乱码| 日本久久一区二区| 国产精品中文欧美| 五月婷婷久久丁香| 三级精品在线观看| 国产免费久久精品| 欧美性受极品xxxx喷水| 国产不卡高清在线观看视频| 欧美优质美女网站| 日韩毛片一二三区| 91网站黄www| 亚洲精品国产成人久久av盗摄| 成人精品视频网站| 国产精品久久久久一区二区三区 | 欧美一区二区三区播放老司机| 国产精品拍天天在线| 国产高清久久久| 国产精品高潮呻吟久久| 国产69精品久久777的优势| 中文久久乱码一区二区| 色婷婷久久久综合中文字幕 | 777xxx欧美| 国内外成人在线| 亚洲视频免费观看| 欧美人与禽zozo性伦| 免费在线看一区| 中文字幕制服丝袜成人av| 色综合久久88色综合天天| 一区二区在线看| 日韩一级片在线播放| 丰满白嫩尤物一区二区| 国产精品免费看片| 欧美精品乱码久久久久久按摩| 激情都市一区二区| 中文字幕日韩欧美一区二区三区| 欧美日韩一区二区三区四区五区 | 亚洲女同一区二区| 日韩欧美国产一区在线观看| 99在线热播精品免费| 日韩国产在线观看一区| 玉米视频成人免费看| 91一区二区在线| 亚洲午夜久久久久久久久电影院| 精品视频一区二区不卡| 国产乱人伦偷精品视频不卡| 亚洲另类春色国产| 久久久久一区二区三区四区| 91福利精品视频| 丁香婷婷综合网| 免费观看在线综合| 亚洲综合色成人| 亚洲欧美综合在线精品| 欧美成人精品福利| 欧美猛男超大videosgay| k8久久久一区二区三区| 国产乱人伦精品一区二区在线观看 | 久久电影网电视剧免费观看| 国产午夜精品一区二区| 欧美精选一区二区| 91蜜桃婷婷狠狠久久综合9色| 国产一区二区在线视频| 精品在线视频一区| 亚洲女与黑人做爰| 亚洲欧洲精品一区二区精品久久久| 日韩午夜小视频| 91精品久久久久久久99蜜桃| 一本一道久久a久久精品| 成人晚上爱看视频| 国产乱子伦一区二区三区国色天香| 天堂一区二区在线| 亚洲一区二区三区国产| 亚洲乱码中文字幕综合| 国产精品国产精品国产专区不片 | 欧美经典一区二区| 2014亚洲片线观看视频免费| 欧美一卡二卡在线观看| 日韩三级视频在线看| 欧美一区二区三区免费观看视频| 欧美日韩一级二级三级| 欧美日韩精品专区| 欧美高清一级片在线| 欧美一区二区私人影院日本| 5566中文字幕一区二区电影| 91精品国产综合久久久久久久久久 | 狠狠色狠狠色综合| 男女性色大片免费观看一区二区| 青青国产91久久久久久| 狠狠v欧美v日韩v亚洲ⅴ| 国产一区二区三区蝌蚪| 丁香桃色午夜亚洲一区二区三区| 成人午夜电影小说| 色菇凉天天综合网| 欧美一区二区在线播放| 久久精品一区二区三区四区| 国产精品免费aⅴ片在线观看| 亚洲欧洲成人av每日更新| 一区二区在线观看免费视频播放| 午夜av一区二区| 韩国成人在线视频| 99精品欧美一区二区蜜桃免费| 色噜噜久久综合| 欧美一区午夜精品| 国产精品美女久久久久久久 | 久久国产剧场电影| 国产成人精品www牛牛影视| 色天天综合久久久久综合片| 91精品国产综合久久精品麻豆| 久久一区二区三区四区| 亚洲美腿欧美偷拍| 精品亚洲成a人| 91九色最新地址| 久久久影视传媒| 日日夜夜一区二区| 成人av电影在线网| 欧美变态口味重另类| 亚洲线精品一区二区三区八戒| 国内不卡的二区三区中文字幕 | 亚洲午夜羞羞片|