现场总线技术CH8BCAN应用与实验系统设计.ppt
《现场总线技术CH8BCAN应用与实验系统设计.ppt》由会员分享,可在线阅读,更多相关《现场总线技术CH8BCAN应用与实验系统设计.ppt(80页珍藏版)》请在三一办公上搜索。
1、现场总线技术第八章 CAN应用与实验系统设计,教材:现场总线CAN原理与应用技术作者:绕运涛、邹继军、郑勇荟主讲教师:张有忠中国矿业大学机电工程学院2007-11,2,8.3 CAN实验系统设计,K1:点对点发送K2:广播发送,此处与非门最适宜,3,74HC244-Octal buffer/line driver;3-state,1G,2G,4,74LS164 8 Bit Serial In/Parallel Out Shift Register,FeaturesGated(enable/disable)serial inputsFully buffered clock and serial
2、inputsAsynchronous clearTypical clock frequency 36 MHzTypical power dissipation 80 mW,5,DS1232-MicroMonitor Chip,FEATURESHalts and restarts an out-of-control microprocessorHolds microprocessor in check during power transientsAutomatically restarts microprocessor after power failureMonitors pushbutto
3、n for external overrideAccurate 5%or 10%microprocessor power supply monitoringEliminates the need for discrete componentsSpace-saving,8-pin mini-DIPOptional 16-pin SOIC surface mount packageIndustrial temperature-40C to+85C availablePIN DESCRIPTIONPBRST-Pushbutton Reset InputTD-Time Delay SetTOL-Sel
4、ects 5%or 10%VCC DetectGND-GroundRST-Reset Output(Active High)RST-Reset Output(Active Low,open drain)ST-Strobe InputVCC-+5 Volt Power,6,ST24C08-8 Kbit Serial I2C Bus EEPROM,7,8.3 CAN实验系统设计,K1:点对点发送K2:广播发送,此处与非门最适宜,8,CAN实验系统软件设计,报文收发返送,任意节点收到报文,将该报文返送回发送站点接收报文数显示,09通讯波特率,40KBps双滤波器模式广播ID:0000H,按该ID发送
5、的数据所有站点都接收K1按键,按键K1启动一次点对点发送,发送ID由244外接的拨码开关设定K2按键,按键K2一次,启动一次广播发送ID设定P0口读入高半字节,点对点通讯时接收方的ID低半字节,自身的ID系统代码:can_practice.asm,9,地址标号定义,;/89C51晶振为12MHZ;/74LS244片外存储器地址为0100H;*与课本不一样(0200H有误)IDADDR EQU 0100H;/CAN控制器SJA1000片外存储器起始地址为0200H(*0100H有误,与课本不一样)MODE EQU 0200H;/模式寄存器CMR EQU 0201H;/命令寄存器SR EQU 02
6、02H;/状态寄存器IR EQU 0203H;/中断寄存器IER EQU 0204H;/中断使能寄存器BTR0 EQU 0206H;/总线时序寄存器0BTR1 EQU 0207H;/总线时序寄存器1OCR EQU 0208H;/输出控制寄存器ALC EQU 020BH;/仲裁丢失捕捉寄存器ECC EQU 020CH;/错误代码捕捉寄存器EWLR EQU 020DH;/错误报警限额寄存器RXERR EQU 020EH;/RX错误计数寄存器TXERR EQU 020FH;/TX错误计数寄存器TXB EQU 0210H;/写,发送缓冲区首地址RXB EQU 0210H;/读,接收缓冲区首地址,10,
7、地址标号定义(续),RXCMD EQU 0215H;/扩展帧时接收缓冲区数据第一字节,十进制21RTRDLC EQU 0210H;/包括RTR,DLC的字节ACR EQU 0210H;/复位时:滤波码,十进制16AMR EQU 0214H;/复位时,屏蔽码,十进制20RMC EQU 021DH;/RX报文计数器,十进制29RBSA EQU 021EH;/RX缓冲区起始地址,十进制30CDR EQU 021FH;/时钟分频器,十进制31;/*程序运行所需存储器及标志位*CBFRTP EQU 30H;/CPU接收或发送报文缓冲区首地址FRNUM EQU 40H;/接收报文数RECOK BIT 00
8、H;/接收报文标志,RECOK为1表示接收到一帧报文RFRM BIT 01H;/回送报文标志,RFRM为1表示该帧接收的;/报文应该回送PUSHK1 BIT 02H;/按K1键标志,PUSHK1为*0*表示K1键按下PUSHK2 BIT 03H;/按K2键标志,PUSHK2为*0*表示K2键按下,11,程序模块、子程序列表,0、系统初始化程序 MAIN1、主监控程序 MLOOP2、CAN控制器初始化子程序 CANINI3、CAN控制器查询接收子程序 CANREC4、CAN控制器发送程序 TDATA5、按设定ID值向指定节点发送一帧报文 TSDATATDATA6、向CAN总线上其他节点发送一帧广
9、播报文 TBDATATDATA7、向发送报文节点返回接收到报文 TRDATATDATA8、读按键子程序 KEYIN9、20mS、1mS延时程序 D20MS DELAY10、显示当前接收报文数 DISP,12,MAIN-系统初始化程序,;/*系统初始化程序*ORG 0000H LJMP MAIN ORG 0030HMAIN:MOV SP,#6FH MOV R0#6FH CLR A;/清零片内RAM,初始化变量和标志CLAIR:MOV R0,A DJNZ R0,CLAIR;/006FH全部清零 LCALL CANINI;/SJA1000初始化,P230页尾 MOV P1,#0FFH;/读P1前写1
10、,P1外接K1,K2 MOV IE,#00H;/采用查询标志方式工作,关闭所有中断 MOV SCON,#00H;/串行口方式0,移位寄存器方式,1*7段LED显示,13,MLOOP-主监控程序流程,MLOOP:LCALL KEYIN;/按键扫描,两个按键的状态在PUSHK1;/和PUSHK2中,=0键按下 JB PUSHK1,LOOP1;*/与课本不一样 LCALL TSDATA;/K1键按下,发送一帧点到点报文 SETB PUSHK1;/*与课本不一样LOOP1:JB PUSHK2,LOOP2;*/与课本不一样 LCALL TBDATA;/K2键按下,发送一帧广播报文 SETB PUSHK2
11、;*/与课本不一样LOOP2:LCALL CANREC;/*无键按下,从CAN总线查询接收 JNB RECOK,LOOP3 LCALL DISP;/数码管显示+1后的接收报文数 CLR RECOK JNB RFRM,LOOP3 LCALL TRDATA;/返回接收到的报文 CLR RFRM;/回送报文标志LOOP3:SJMP MLOOP,14,CANREC-CAN控制器查询接收子程序,CANREC:MOV DPTR,#SR;/状态寄存器 MOVX A,DPTR ANL A,#0C3H;/读取总线关闭、错误状态、接收溢出、有数据等状态位 JNZ PROC RET;/无上述状态,返回PROC:JN
12、B ACC.7,PROCIBUSERR:MOV DPTR,#IR;/IR中断寄存器,出现总线关闭 MOVX A,DPTR;/读中断寄存器,清除中断位 MOV DPTR,#MODE;/方式寄存器地址 MOV A,#08H MOVX DPTR,A;/将方式寄存器复位请求位清0 RETPROCI:MOV DPTR,#IR;/总线正常,IR中断寄存器 MOVX A,DPTR;/读取中断寄存器,清除中断位 JNB ACC.3,OTHEROVER:MOV DPTR,#CMR;/数据溢出,命令寄存器CMR MOV A,#0CH;/00001100 B MOVX DPTR,A;/在命令寄存器中清除数据溢出和释
13、放接收缓冲区 RET,15,CANREC-CAN控制器查询接收子程序(续1),OTHER:JB ACC.0,RECE;/IR.0=1,接收缓冲区有数据 LJMP RECOUT;/IR.0=0,接收缓冲区中无数据,退出接收 RECE:MOV DPTR,#RXB;/读取并保存接收缓冲区的数据 MOV R1,#CBFRTP;/CPU片内接收缓冲区首地址 MOVX A,DPTR;/读取数据帧格式 MOV R1,A;/保存 ANL A,#0FH;/截取数据场长度 ADD A,#4;/+ID字节数 MOV R6,ARDATA0:INC DPTR INC R1 MOVX A,DPTR MOV R1,A DJ
14、NZ R6,RDATA0;/循环读取与保存;/若接收到ID前两个字节为5555H,表明是对方返回的报文,RFRM保持清0,接收报文不回送 MOV A,CBFRTP+1 CJNE A,#55H,RDATA1 MOV A,CBFRTP+2 CJNE A,#55H,RDATA1 SJMP RDATA2,16,CANREC-CAN控制器查询接收子程序(续2),RDATA1:SETB RFRM;/若接收ID前两个字节不是5555H;/则应返回该帧报文,RFRM置1RDATA2:INC RFNUM;/接收报文数+1 MOV A,FRNUM CJNE A,#10,ADATA3 MOV FRNUM,#0;/接
15、收报文数满10时,从头开始计数RDATA3:SETB RECOK;/接收报文标志置1 MOV DPTR,#CMR;/MOV A,#04H;/释放CAN接收缓冲区 MOVX DPTR,ARECOUT:MOV DPTR,#ALC;/释放仲裁丢失捕捉寄存器和错误捕捉寄存器 MOVX A,DPTR MOV DPTR,#RCC;/MOVX A,DPTR RET,17,TDATA-CAN控制器发送程序,TDATA:MOV DPTR,#SR MOVX A,DPTR JB ACC.4,TDATA;/判断是否正在接收,=1接收TS20:MOVX A,DPTR JNB ACC.3,TS20;/判断先前发送是否成功
16、,=1成功TS21:MOVX A,DPTR JNB ACC.2,TS21;/判断发送缓冲区是否锁定,0=锁定TS22:MOV DPTR,#TXB;/将CPU报文发送缓冲区数据送往CAN发送缓冲区 MOV R1,#CBFRTP MOV A,R1 MOVX DPTR,A ANL A,#0FH ADD A,#4 MOV R6,AMTBS:INC R1 INC DPTR MOV A,R1 MOVX DPTR,A DJNZ R6,MTBS MOV DPTR,#CMR MOV A,#01H MOVX DPTR,A;/启动发送 RET,18,TSDATA-按设定ID值向指定节点发送一帧报文,;/*按设定ID
17、值向指定节点发送一帧报文*TSDATA:MOV CBFRTP,#88H;CPU内报文缓冲区;10001000,扩展格式,数据,8字节 MOV DPTR,#IDADDR MOVX A,DPTR;/从74LS244读入节点设置ID ANL A,#0F0H;/高半字节为接收节点的ID MOV CBFRTP+1,#0;MOV CBFRTP+2,A MOVX A,DPTR;/从74LS244读入节点设置ID ANL A,#0FH;/低半字节为节点自身ID MOV CBFRTP+3,#0 MOV CBFRTP+4,A LCALL TDATA RET;/*按设定ID值向指定节点发送一帧报文结束*,19,TB
18、DATA-向CAN总线上其他节点发送一帧广播报文,;/向CAN总线上其他节点发送一帧广播报文TBDATA:MOV CBFRTP,#88H MOV CBFRTP+1,#0;/广播报文ID为0000H MOV CBFRTP+2,#0 MOV DPTR,#IDADDR MOVX A,DPTR;/从74LS244读入节点设置ID ANL A,#0FH;/低半字节为节点自身ID MOV CBFRTP+3,#0 MOV CBFRTP+4,A LCALL TDATA RET,20,TRDATA-向发送报文节点返回接收到报文,;/向发送报文节点返回接收到报文TRDATA:MOV CBFRTP+1,#55H;/
19、返回报文给发送节点时;/将前两个ID字节设置为5555H MOV CBFRTP+2,#55H;/5555H可作为判断接收报文是;/否返送的标志;/通过设置标志避免循环发送 LCALL TDATA RET,21,CANINI-CAN控制器初始化子程序,CANINI:MOV DPTR,#MODE;/方式寄存器 MOV A,#01H;/进入复位模式,对SJA1000进行初始化 MOVX DPTR,A MOV DPTR,#CDR;/时钟分频寄存器 MOV A,#88H;/选择PeiliCAN模式,关闭时钟输出(CLKOUT)MOVX DPTR,A MOV DPTR,#IER;/中断允许寄存器 MOV
20、A,#0DH;/开放发送中断、溢出中断和错误警告中断 MOVX DPTR,A MOV DPTR,#AMR;/验收屏蔽寄存器 MOV R6,#4 MOV A,#0;/验收屏蔽寄存器所有位都参与滤波AMRINI:MOVX DPTR,A;/接收屏蔽寄存器赋初值 INC DPTR DJNZ R6,AMRINI,22,CANINI-CAN控制器初始化子程序(续1),MOV DPTR,#IDADDR;读P0接口开关状态地址 MOVX A,DPTR;/从74LS244读入节点设置ID ANL A,#0FH;/低半字节为节点自身ID MOV R6,A MOV DPTR,#ACR;/验收代码寄存器 MOV A,
21、#0;/ACR0和ACR1存储接收广播报文时用的ID,0000H MOVX DPTR,A;/接收代码寄存器ACR0赋初值 INC DPTR MOVX DPTR,A;/接收代码寄存器ACR1赋初值 INC DPTR;/ACR2,ACR3存储接收数据报文时用的ID;/为节点自身ID MOVX DPTR,A;/接收代码寄存器ACR2赋初值 INC DPTR MOV A,R6/自身ID MOVX DPTR,A;/接收代码寄存器ACR3赋初值,23,CANINI-CAN控制器初始化子程序(续2),MOV DPTR,#BTR0;/总线定时寄存器0 MOV A,#07H MOVX DPTR,A MOV DP
22、TR,#BTR1;/总线定时寄存器1 MOV A,#0FFH;/设置波特率40KBPS MOVX DPTR,A MOV DPTR,#OCR;/输出控制寄存器 MOV A,#0AAH MOVX DPTR,A MOV DPTR,#RBSA;/接收缓冲器起始地址寄存器 MOV A,#0;/设置接收缓冲器FIFO起始地址为0 MOVX DPTR,A MOV DPTR,#TXERR;/发送错误计数寄存器 MOV A,#0;/清除发送错误计数寄存器 MOVX DPTR,A MOV DPTR,#ECC;/错误代码捕捉寄存器 MOVX DPTR,A;/清除错误代码捕捉寄存器 MOV DPTR,#MODE;/方
23、式寄存器 MOV A,#00;/设置双滤波接收方式,并返回工作状态 MOVX DPTR,A RET,24,KEYIN-读按键子程序,KEYIN:ORL P1,#0C0H;/11000000B,读端口前先写1 MOV A,P1 ANL A,#0C0H;/从P1.6,P1.7读入K1和K2的按键状态 CJNE A,#0C0H,KEYIN1;/有键按下,转KEYIN1 RET;/无键按下返回KEYIN1:LCALL D20MS;/延时 MOV A,P1 ANL A,#0C0H CJNE A,#0C0H,KEYIN2 RET;/无键按下返回KEYIN2:CJNE A,#00H,KEYIN21 SJMP
24、 KEYIN3;/若K1,K2同时按下,无效KEYIN21:MOV C,ACC.6;/将按键状态保存到PUSHK1,PUSHK2 MOV PUSHK1,C;/按下键为0,未按下为1 MOV C,ACC.7 MOV PUSHK2,CKEYIN3:MOV A,P1 ANL A,#0C0H CJNE A,#0C0H,KEYIN3;/判断按键是否释放,等待按键释放 RET,25,D20MS、DELAY 20mS、1mS延时程序,D20MS:MOV R7,#200;/延时约20MS(FOSC=12MHZ)DAY1:MOV R6,#50DAY2:DJNZ R6,DAY2 DJNZ R7,DAY1 RETD
25、ELAY:MOV R6,#250;/延时1MSDE1:NOP NOP DJNZ R6,DE1 RET,26,DISP-显示当前接收报文数(1位表示),;/显示当前接收报文数(1位表示)DISP:MOV A,FRNUM;/读当前接收报文数 MOV DPTR,#LEDTAB MOVC A,A+DPTR;/字形码 MOV SBUF,A;/将字形码通过串口送74LS164,驱动显示 JNB TI,$CLR TI;/发送完毕清TI标志 RET;LED显示字形码(共阴极数码管)LEDTAB:DB 0FCH,060H,0DAH,0E2H,066H;/0,1,2,3,4 DB 0B6H,0BEH,0E0H,0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 现场总线 技术 CH8BCAN 应用 实验 系统 设计
链接地址:https://www.31ppt.com/p-5791968.html