文档介绍://    //------------------------------------------------------------------------------   //   //   // DEVICE: C8051F040   //   // AUTHOR: LS   //   // TOOLS:  Keil piler and Silicon Labs IDE   //   //   //  and  are a simple example of configuring a work to   // transmit and receive data on a work, and how to move information to   // and from CAN RAM message objects.  Each C8051F040-TB CAN node is configured   // to send a message when it's  button is depressed/released, with a 0x11   // to indicate the button is pushed, and 0x00 when released. Each node also has   // a message object configured to receive messages. The C8051 tests the   // received data and will turn on/off the target board's LED. When one target   // is loaded with  and the other is loaded with , one target   // board's push-button will control the other target board's LED, establishing   // a simple control link via the CAN bus and can be observed directly on the   // target boards.   ////////////////////////////////////////////////////////////////////////////////      ////////////////////////////////////////////////////////////////////////////////   // Includes   ////////////////////////////////////////////////////////////////////////////////      #include <>                          // SFR declarations      // CAN Protocol Register Index for CAN0ADR, from TABLE  of the C8051F040   // datasheet   ////////////////////////////////////////////////////////////////////////////////   #define CANCTRL            0x00                 //Control Register   #define CANSTAT            0x01                 //Status register   #define T             0x02                 //Error Counter Register   #define BITREG             0x03                 //Bit Timing Register   #define INTREG             0x04                 //Interrupt Low Byte Register   #define CANTSTR            0x05                 //Test register   #define BRPEXT             0x06