【文件属性】:
文件名称:sja1000源代码
文件大小:80KB
文件格式:DOC
更新时间:2017-01-16 11:47:20
sja1000代码
void SJA_INTR(void) interrupt 0 //CanBus接口芯片产生中断(INTR0)
{
//这里仅简单区分了接收中断和发送中断,对于其余中断,均简单重启SJA1000,另外,IR的高三位保留位读出值总是1.
unsigned char sta;
EA = 0; //关闭总中断
EX0 = 0; //关闭外部中断
sta = CANREG_read(0x03); //读中断寄存器IR
if(sta == 0xe2) //发送中断处理
{
LED1=0; //如果有信息发出,则指示灯亮
}
else if(sta == 0xe1) //接收中断,接收数据
{
LED2=0; //如果接收到中断,则LED2指示灯亮
receive_now();
}
else
MCU_init();
EX0 = 1;
EA = 1;
}
void MCU_init(void)
{
SJA_CS = 0;
EX0 = 1;
IT0 = 0;
EA = 1;
}
void main() //主程序
{
MCU_init();
SJA1000_init();
while(send_BUF_init()==0);
send_now(); //待发送信息之后,进入死循环,接下来就是等待中断了
while(1);
}