中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

您当前所在位置: 汽车电子 > 查看内容

用PIC18F458的CAN模块实现CAN总线通信

文章作者头像
发布:清雅轩 作者: webmaster来源: job.cartech8.com
PostTime:16-5-2008 20:50

以下为文章全文:(本站微信公共账号:cartech8)


汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师

  #include

int CAN_FLAG;

voidinitcan(){

TRISB=(TRISB|0X08)&0XFB;

CANCON=0X80;

while(CANSTAT&0X80==0)continue;

BRGCON1=0X01;

BRGCON2=0X90;

BRGCON3=0X42;

TXB0CON=0X03;

TXB0SIDH=0XFF;

TXB0SIDL=0XE0;

TXB0DLC=0X08;

TXB0D0=0X00;

TXB0D1=0X01;

TXB0D2=0X02;

TXB0D3=0X03;

TXB0D4=0X04;

TXB0D5=0X05;

TXB0D6=0X06;

TXB0D7=0X07;

RXB0SIDH=0XFF;

RXB0SIDL=0XE0;

RXB0CON=0X20;

RXB0DLC=0X08;

RXB0D0=0X00;

RXB0D1=0X00;

RXB0D2=0X00;

RXB0D3=0X00;

RXB0D4=0X00;

RXB0D5=0X00;

RXB0D6=0X00;

RXB0D7=0X00;

RXF0SIDH=0XFF;

RXF0SIDL=0XE0;

RXM0SIDH=0X00;

RXM0SIDL=0X00;

CANCON=0X40;

while(CANSTAT&0X40==0)continue;

PIR3=0X00;

PIE3=0X01;

IPR3=0X01;

}

#pragma interrupt can_isr

#pragma code low_ISR=0x18

void low_ISR() {

_asm

gotocan_isr

_endasm

}

#pragma code

voidcan_isr() {

if(PIR3bits.RXB0IF==1)CAN_FLAG=1;

PIR3bits.RXB0IF=0;

RXB0CONbits.RXFUL=0;

}

main(){

INTCON=0x00;

initcan();

W D T C O N = 0 ;

INTCON=0xc0;

while(1) {

TXB0CONbits.TXREQ=1;

while(PIR3bits.TXB0IF!=1)continue;

while(CAN_FLAG==0)continue;

CAN_FLAG=0;

TXB0CONbits.TXREQ=0;

TXB0D0=RXB0D0+1;

TXB0D1=RXB0D1+1;

TXB0D2=RXB0D2+1;

TXB0D3=RXB0D3+1;

TXB0D4=RXB0D4+1;

TXB0D5=RXB0D5+1;

TXB0D6=RXB0D6+1;

TXB0D7=RXB0D7+1;

}

}

[文章纠错]

文章网友提供,仅供学习参考,版权为原作者所有,如侵犯到

你的权益请联系542334618@126.com,我们会及时处理。

12

会员评价:

0 发表评论

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 1-7-2025 22:28 , Processed in 0.207090 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.