📄 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 + -