//-----------------------函数声明,变量定义--------------------------------------------------------
#include
sbit int0 = P3^2;
//-----------------------定义寻址的基址--------------------------------------------------------
#define base_Adr 0x00
//-----------------------定义总线定时寄存器的值--------------------------------------------------------
#define SJA_BTR0 0x00 //该值需要用户根据实际需要的波特率进行计算
#define SJA_BTR1 0x16 //具体计算见文章说明
//-----------------------设置接收报文类型(标示符)--------------------------------------------------------
//该值需要用户根据实际需要重新配置
#define SJA_ACR 0x00 //验收代码寄存器的值
#define SJA_AMR 0x16 //验收屏蔽寄存器的值
//-----------------------设置输出始终类型--------------------------------------------------------
//该值需要用户根据实际需要重新配置
#define SJA_OCR 0x00 //输出控制寄存器的值
#define SJA_CDR 0x16 //始终分频寄存器的值
//-----------------------设置SJA中断,1为开中断--------------------------------------------------------
#define SJA_OIE 0 //溢出中断
#define SJA_EIE 0 //错误中断
#define SJA_TIE 0 //发送中断
#define SJA_RIE 0 //接收中断
//-----------------------定义地址指针,指向基址--------------------------------------------------------
unsigned char xdata *SJA_base_Adr = base_Adr;
//-----------------------定义硬件故障标志位--------------------------------------------------------
bit bdata connect_OK=0; //connect_OK=1设备连接正常
//connect_OK=0设备连接故障
//-----------------------定义硬件故障标志位--------------------------------------------------------
bit bdata SJA_workmode=1; //SJA_workmode=1SJA工作在工作模式
//SJA_workmode=0工作在复位模式
//-----------------------定义SJA1000读写缓冲区的数据结构--------------------------------------------------------
struct BASICCAN_BUFstruct{
unsigned char FrameID_H;
unsigned char FrameLENTH ;
unsigned char FrameKIND ;
unsigned char FrameID_L3 ;
unsigned char Frame_Data[8];
}BASICCAN_FRAME,receive_BUF,send_BUF;
//BASICCAN_BUFstruct send_BUF;
//------------------------------------------------------------------------------------------------------
// 函数类别 SJA1000基本操作
// 函数名称 CANREG_write
// 入口函数 SJAREG_ADR,setting
// 出口函数 无
// 函数功能 写SJA1000的寄存器
//------------------------------------------------------------------------------------------------------
void CANREG_write(unsigned char SJAREG_ADR, unsigned char
setting)
{
*(SJA_base_Adr+SJAREG_ADR)=setting;
}
//------------------------------------------------------------------------------------------------------
// 函数类别 SJA1000基本操作
// 函数名称 CANREG_write
// 入口函数 SJAREG_ADR
// 出口函数 SJAREG_data
// 函数功能 读SJA1000的寄存器
//------------------------------------------------------------------------------------------------------
unsigned char CANREG_read(unsigned char SJAREG_ADR)
{
unsigned char SJAREG_data;
SJAREG_data=*(SJA_base_Adr+SJAREG_ADR);