CAN总线实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
while(p--); } void CAN_SEND() /*发送数据部分*/ { uchar i,p; p=CAN[CAN_SR]; if (p&0x04) { p=CAN_TXB; /*p指向发送缓存首址*/ for(i=0;i<10;i++) CAN[p++]=TXB[i]; CAN[CAN_CMR]=0x01; /*请求发送*/ } } void CAN_INT() interrupt 0 using 1/*接收中断*/ { uchar i,p; p=CAN[CAN_IR]; if(p&0x01) { p=CAN_RXB; for(i=0;i<10;i++) { RXB[i]=CAN[p++]; } CAN[CAN_CMR]=0x04; /*释放接收缓存*/ CANBUS=1; } } void CAN_INI() /*初始化部分*/ { CAN[CAN_CR]=0x01; CAN[CAN_ACR]=Raddr; CAN[CAN_AMR]=Raddr;
//CAN通信参考程序 #include <STC_NEW_8051.H> #define uchar unsigned char #define uint unsigned int #define time0 -10000 sfr WDT = 0xE1; sfr AUX = 0x8E; #define Raddr 1 //本机地址ID高8位 #define Taddr 2 //目标地址ID高8位 #define CAN_PORT P0 //CAN数据口 //CAN2.0B的BasicCAN模式 (标准帧模式) #define CAN_CR 0 //控制 #define CAN_CMR 1 //命令 #define CAN_SR 2 //状态 #define CAN_IR 3 //中断 #define CAN_ACR 4 //验收 #define CAN_AMR 5 //屏蔽 #define CAN_BTR0 6 //时序0 #define CAN_BTR1 7 //时序1 #define CAN_OCR 8 //输出 #define CAN_TXB 10 //发送缓冲 #define CAN_RXB 20 //接收缓冲 #define CAN_CDR 31 //分频 uchar pdata CAN[32] _at_(0); //定位CAN寄存器地址 sbit LED2 = P2^5; sbit LED1 = P2^6; sbit KEY = P2^0; bit CANBUS,sta,LED,RUN; uchar tim; uchar idata TXB[10],RXB[10]; void delay(uint p) {
CAN[CAN_BTR0]=0x07; CAN[CAN_BTR1]=0xff; CAN[CAN_OCR]=0x1A; CAN[CAN_CR]=0x02; } void timer0() interrupt 1 using 3 { TH0=time0>>8;TL0=time0; if(tim<250) tim++; } void main() { AUX=2; WDT=0x34; IE=0x83; IT0=1; TMOD=0x21; TH0=time0>>8; TL0=time0; TR0=1; LED1=0;LED2=0; delay(5000); LED1=1;LED2=1;KEY=1; CAN_INI(); CANBUS=0; while(1) { WDT=0x34; if(tim>10) { tim=0; TXB[0]=Taddr; TXB[1]=1; if(!KEY) TXB[2]=0; else TXB[2]=1; CAN_SEND(); } if(CANBUS) { CANBUS=0;
LED1=!LED1; if(RXB[2]==0) LED2=0; else LED2=1; } } }
四、实验步骤
பைடு நூலகம்
图3、SJA1000及82C250接口电路 1、将2块CAN实验板的CAN总线的CANH、CANL同名连接,通过 杜邦线从单片机实验板上将电源接给CAN实验板。 2、编写程序分别下载到各自的CAN实验板上,用杜邦线将JP的 P2.0接地控制另一块板子的LED灯。 五、实验预习要求 阅读关于CAN和CAN器件SJA1000的基本资料,具备CAN和CAN相 关器件的基本知识,学习指导书的参考程序。
实验三 CAN总线实验
一.实验目的 学习基于SJA1000的CAN总线标准帧通信,实现2个CAN通信节 点之间的数据通信。 二、验设备及器件 计算机(带串口) 单片机实验仪
一台 一台
三、实验内容 编写一段程序,实现CAN节点的初始化,能够2节点之间的数 据收发,用本节点的I/O控制另一个节点的LED灯。