/*-------------------------------------------------------------------------------------------------------
CAN中断函数0
作用:用于CAN接受信息
---------------------------------------------------------------------------------------------------------*/
void SJA1000_INT0(void) interrupt 0
{
uchar Rebuf[13];
uchar len;
uchar Data[8],i;
// HAND=0; //CAN接收到数据
// TR0=0; //先关闭定时器0
//ET0=0;
if(ReadSJAReg(REG_CAN_IR)&0x01) //产生了接收中断并允许接收
{
ReadSJARegBlock(16,Rebuf,13);
WriteSJAReg(REG_CAN_CMR,RRB_BIT); //释放SJA1000接收缓冲区
len=Rebuf[0]&0x08;//数据长度
for(i=0;i<len;i++){
Data=Rebuf[5+i]; //第五字节为所需的字节书,前面的都是ID信息帧
com_sendbyte(Data);
// display(Data); //数据01 显示一号机发送的地址
// delay1s();
// delay1s();
// delay1s();
// delay1s();
// SendData(1,8,Data);
}
}
// TR0=1; //先关闭定时器0
// ET0=1;
}
中断函数如上所述,请问大侠们为什么CAN只能发送数据,不能接受数据?这个问题困惑了好久了,希望大神解惑,感激不尽,小弟在此谢过~~ |