给你提供一些思路
1、sja1000初始化
2、发送子程序
3、中断方式接收
下面是一些程序段
你参考下(已用于产品)
/**********SJA1000初始化***********//
void Init_SJA1000(void)
{
uchar state;
uchar ACRR[4]={0XAA,0XFF,0X22,0X11};// 接收代码寄存器
uchar AMRR[4]={0xff,0xff,0xff,0xff};// 接收屏蔽寄存器
//uchar AMRR[4]={0x00,0x00,0xff,0xff};// 接收屏蔽寄存器
do// 使用do–while语句确保进入复位模式
{
MODR = 0x09; // 设置MOD.0=1–进入复位模式,以便设置相应的寄存器
state = MODR;
}
while( !(state & 0x01) );
// 对SJA1000部分寄存器进行初始化设置
CDR = 0x88; // CDR为时钟分频器,CDR.3=1–时钟关闭, CDR.7=0—basic CAN, CDR.7=1—Peli CAN
BTR0 = 0x04;//0x31; // 总线定时寄存器0 ;总线波特率设定
BTR1 = 0x1c;//0x1c; // 总线定时寄存器1 ;总线波特率设定
IER = 0x01; // IER.0=1–接收中断使能; IER.1=0–关闭发送中断使能
OCR &