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

📄 can.h

📁 两机C8051F040之间进行can通信
💻 H
字号:
//CAN 消息初始化程序
///////////////////////////////////////////////////////////////
#include "C8051F040.H"
#include "CANREG.h"

typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;
union intchar{
   uint tempval;
   struct {uchar hi;uchar low;}bytek;
};

bit isnewdata;
data uchar temppage;
data uchar status;
xdata uchar sdata[8] = {0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49};
xdata union intchar rdata[4];

void init_msg_object_TX(uchar MsgNum, uchar id);
void init_msg_object_RX(uchar MsgNum, uchar id);
void clear_msg_objects (void);
void start_CAN (void);


void init_msg_object_TX(uchar MsgNum, uchar id) 
{
uint temp;
SFRPAGE = CAN0_PAGE;
CAN0ADR = IF1CMDMSK;
CAN0DAT = 0x00B3;
CAN0ADR = IF1ARB1;
CAN0DAT = 0x0000;
temp = id<<2;
temp&= 0x1fff;
temp|= 0xa000;
CAN0DAT = temp;
CAN0DAT = 0x0088;
CAN0ADR = IF1CMDRQST;
CAN0DAT = MsgNum;
do
{CAN0ADR=IF1CMDRQST;}
while(CAN0DATH&0x80);
}




void init_msg_object_RX(uchar MsgNum, uchar id)
{
uint temp;
SFRPAGE = CAN0_PAGE;
CAN0ADR = IF2CMDMSK;
CAN0DAT = 0x00BB;
CAN0ADR = IF2ARB1;
CAN0DAT = 0x0000;
temp = id<<2;
temp&= 0x1fff;
temp|= 0x8000;
CAN0DAT = temp;
CAN0DAT = 0x0488;
CAN0ADR = IF2CMDRQST;
CAN0DATL = MsgNum;
do
{CAN0ADR=IF1CMDRQST;}
while(CAN0DATH&0x80);
}




void clear_msg_objects (void)
{
uchar i;
SFRPAGE = CAN0_PAGE;
CAN0ADR = IF1CMDMSK;
CAN0DATL = 0xFF;
for (i=1;i<33;i++)
   {
     CAN0ADR = IF1CMDRQST;
     CAN0DATL = i;
     do
     {CAN0ADR=IF1CMDRQST;}
     while(CAN0DATH&0x80);
   }
}




void start_CAN (void)
{
SFRPAGE = CAN0_PAGE;
CAN0CN = 0x02;
}

⌨️ 快捷键说明

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