⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 can.h

📁 Keil 下编译的基于mcs51单片机的PCA82C250CAN收发器控制的程序源代码。
💻 H
字号:
//****************************************************************************
// @Module        CAN
// @Filename      CAN.H
// @Project       
//----------------------------------------------------------------------------
// @Controller    Infineon C505C-2R
//
// @Compiler      Keil
//
// @Codegenerator DAvE 2-0-0
//
// @Description   This file contains all function prototypes and macros for CAN
//                
//
//----------------------------------------------------------------------------
// @Date          01-2-24 12:51:13
//
//****************************************************************************


//****************************************************************************
// @Defines general registers of CAN controller.
//****************************************************************************
// Control/Status Register
#define CR   (*((unsigned char volatile xdata *) 0xF700))
#define SR   (*((unsigned char volatile xdata *) 0xF701))
// Interrupt Register
#define IR   (*((unsigned char volatile xdata *) 0xF702))
// Bit Timing Register
#define BTR0 (*((unsigned char volatile xdata *) 0xF704))
#define BTR1 (*((unsigned char volatile xdata *) 0xF705))
// Global Mask Short
#define GMS0  (*((unsigned char volatile xdata *) 0xF706))
// Global Mask Short
#define GMS1  (*((unsigned char volatile xdata *) 0xF707))
// Upper Global Mask Long
#define UGML0 (*((unsigned char volatile xdata *) 0xF708))
#define UGML1 (*((unsigned char volatile xdata *) 0xF709))
// Lower Global Mask Long
#define LGML0 (*((unsigned char volatile xdata *) 0xF70A))
#define LGML1 (*((unsigned char volatile xdata *) 0xF70B))
// Upper Mask of Last Message
#define UMLM0 (*((unsigned char volatile xdata *) 0xF70C))
#define UMLM1 (*((unsigned char volatile xdata *) 0xF70D))
// Lower Mask of Last Message
#define LMLM0 (*((unsigned char volatile xdata *) 0xF70E))
#define LMLM1 (*((unsigned char volatile xdata *) 0xF70F))

//****************************************************************************
// @Define bit of extended CAN registers for C505C/C515C
//****************************************************************************
#define TEST    7 
#define CCE     6
#define EIE     3
#define SIE     2
#define IE      1
#define INIT    0
#define BOFF    7
#define EWRN    6
#define RXOK    4
#define TXOK    3
#define LEC2    2
#define LEC1    1
#define LEC0    0
#define SJW1    7
#define SJW0    6
#define BRP5    5
#define BRP4    4
#define BRP3    3
#define BRP2    2
#define BRP1    1
#define BRP0    0
#define TSEG2_2 6
#define TSEG2_1 5
#define TSEG2_0 4
#define TSEG1_3 3
#define TSEG1_2 2
#define TSEG1_1 1
#define TSEG1_0 0
#define MSGVAL  3
#define TXIE    2
#define RXIE    1
#define INTPND  0
#define RMTPND  7
#define TXRQ    6
#define CPUUPD  5 
#define NEWDAT  4
#define DLC3    7
#define DLC2    6
#define DLC1    5
#define DLC0    4
#define DIR     3
#define XTD     2

//****************************************************************************
// @Definition of a structure for the CAN data
//****************************************************************************
// The following data type serves as a software message object. Each access to
// a hardware message object has to be made by forward a pointer to a software
// message object (TCAN_Obj). The data type has the following fields:
//
// MsgCfg:
// this byte has the same structure as the message configuration register of a
// hardware message object. It contains the "Data Lenght Code" (DLC), the 
// "Extended Identifier " (XTD) and the " Message Direction " 
// (DIR, read only access).
//
//         7     6     5      4    3     2     1     0
//      |-----------------------------------------------|
//      |        DLC            | DIR | XTD |  0  |  0  |
//      |-----------------------------------------------|
//
// Identifier: 
// this field is four bytes long and contains either the 11-bit identifier 
// or the 29-bit identifier (as a HEX-Value)
//
// ObjectData[8]:
// 8 bytes containing the data of a frame
//
// ubUser:
// this field serves for storing application specific data. It will not be
// sended or received.


//************************************************************************
// @Structure for a single CAN object 
// A total of 15 such object structures exists (starting at F710H)
//this is a "hardware" message object struct.
//************************************************************************
struct can_obj 
{
  unsigned char  MCR0;       // Message Control Register 0
  unsigned char  MCR1;       // Message Control Register 1
  unsigned char  UAR0;       // Upper Arbitration Register 0
  unsigned char  UAR1;       // Upper Arbitration Register 1
  unsigned char  LAR0;       // Lower Arbitration Register 0
  unsigned char  LAR1;       // Lower Arbitration Register 1
  unsigned char  MCFG;       // Message Configuration Register
  unsigned char  Data[8];    // Message Data 0 .. 7
  unsigned char  Customer;   // Reserved for application specific data
};
#define CAN_OBJ ((struct can_obj volatile xdata *) 0xF710)

//*************************************************************************
//@ define a received or to be send object maybe store in MCU. 
//*************************************************************************
typedef struct            
  {
      unsigned char  MsgCfg;         // 8-bit Message Configuration Register
      unsigned long  Identifier;     // standard (11-bit)/extended (29-bit) identifier
      unsigned char  ObjectData[8];  // 8-bit Data Bytes
      unsigned char  ubUser;         // for application specific states
  }TCAN_Obj;
//Prototypes of global functions

///////////////初始化函数//////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -