




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CAN总线实验报告系 别:自动化学院班 级:测控0802班姓 名: 任晓亮(24)学 号:06082059实验一初始化实验 实验要求正确完成对初始化,初始化成功后用发光二极管显示成功信号否则循环执行初始化程序。 实验目的() 实现的初始化设置。() 理解的相关寄存器的设置。 实验内容() 实验流程图() 实验源程序ORG 0DE00HJMP STARTORG 0DE40HSTART:MOV DPTR,#0DE00H ;指向模式寄存器MOV A,#0FHMOVX DPTR,AMOV DPTR,#0DE1FH ;时钟MOV A,#88HMOVX DPTR,AMOV DPTR,#0DE10H ;验收滤波MOV A,#00HMOVX DPTR,AMOV DPTR,#0DE11HMOV A,#20HMOVX DPTR,AMOV DPTR,#0DE14HMOV A,#00HMOVX DPTR,AMOV DPTR,#0DE15HMOV A,#0FHMOVX DPTR,AMOV DPTR,#0DE16HMOV A,#0FFHMOVX DPTR,AMOV DPTR,#0DE17HMOV A,#0FFHMOVX DPTR,AMOV DPTR,#0DE06H ;总线时序MOV A,#00HMOVX DPTR,AMOV DPTR,#0DE07HMOV A,#1CHMOVX DPTR,AMOV DPTR,#0DE08H ;输出控制MOV A,#0AAHMOVX DPTR,AMOV DPTR,#0DE00HMOV A,#0EHMOVX DPTR,AMOV DPTR,#0DE02HMOVX A,DPTRCJNE A,#0CH,STARTCLR P1.0SJMP $END实验截图:实验心得: 本次实验是对SJA1000的初始化。虽然上课听老师讲了,但具体应用起来又是另一回事,刚开始将整个初始化程序输完后,显示有错误,然后就修改修改再修改,使之完善.最后进行单步运行可并没有结果。实验二 SJA1000局部自检测实验一.实验要求:进行单节点自测这实验,要求CAN节点自发自收标准数据(数据可自定义),并将所收数据显示到LCD上,观察与发送数据是否一致。二实验目的:实现CAN节点的初始化及CAN节点的自发自收。学会对CAN 节点的基本操作,理解CAN通信的基本流程。三实验器材:计算机一台,CAN模块一个源程序:MODEEQU0DE00H ;模式寄存器CMREQU0DE01H ;命令寄存器SREQU0DE02H ;状态寄存器IREQU0DE03H ;中断寄存器IEREQU0DE04H ;中断使能寄存器BTR0EQU0DE06H ;总线定时寄存器一BTR1EQU0DE07H ;总线定时寄存器二OCREQU0DE08H ;输出控制寄存器ALC EQU 0DE0BH ;仲裁丢失捕捉寄存器ECC EQU 0DE0CH ;错误代码捕捉寄存器TXERR EQU 0DE0FH ;发送错误计数器ACR0EQU0DE10H ;验收代码寄存器0ACR1EQU0DE11H ; 1ACR2EQU0DE12H ; 2ACR3EQU0DE13H ; 3AMR0EQU0DE14H;验收屏蔽寄存器0AMR1EQU0DE15H ; 1AMR2EQU0DE16H ; 2AMR3EQU0DE17H ; 3FIN EQU 0DE10H ;发送/接收帧信息ID1 EQU0DE11H ;发送/接收缓冲区之标示符一ID2 EQU0DE12H ;发送/接收缓冲区之标示符二DATA1 EQU0DE13H ;发送/接收数据首址RBSAEQU0DE1EH ;接收缓冲器起始地址寄存器CDR EQU0DE1FH ;时钟分频寄存器ORG 4000HJMP STARTORG 4080HSTART: MOV R1,#8 MOV R0,#27HFILL: MOV B,#11H MOV A,R1 MUL AB MOV R0,A DEC R0 DJNZ R1,FILL MOV R0,#0AAH LCALL INITCAN ;CAN初始化(CAN片选为CS0:0DE00H);-发送-RETRAN: MOV DPH, #0DEH MOV R0, #20H LCALL SEND ;发送20H为首址的1桢数据(前三字节为:08H、BBH、FFH,后8字节任意) LCALL DELAY;-接收数据- MOV DPH, #0DEH MOV R0, #30H LCALL RECV NOP ;在此处设置断点,以观察结果 JMP $INITCAN: MOV DPTR,#MODE ;初始化子程序,DPH、R0为入口参数MOV A,#01HMOVX DPTR,A ;模式寄存器,单验收滤波器,进入复位模式MOVDPTR,#CDRMOVA,#88HMOVXDPTR, A ;时钟分频R,选择增强CAN模式,关闭CLKOUT输出MOVDPTR,#IERMOVA,#0DHMOVX DPTR,A ;中断使能寄存器,开溢出、错误、接收中断MOVDPTR,#BTR0MOVA,#03HMOVXDPTR,A ;总线定时寄存器一MOVDPTR,#BTR1MOVA,#0FFHMOVX DPTR,A ;总线定时寄存器二,6MHz晶振,波特率30KbpsMOVX A, DPTRMOVDPTR,#OCRMOVA,#0AAHMOVXDPTR,A ;输出控制寄存器MOVDPTR,#ACR0MOVA, 00HMOVXDPTR,A ;验收代码ACR0MOVDPTR,#ACR1MOVA,#0FFHMOVX DPTR,A ;无关INC DPTRMOVXDPTR,A ;无关INC DPTRMOVXDPTR,A ;无关MOVDPTR,#AMR0MOV A,#0FFH ;modify #00 to #0FF MOVX DPTR,A ;验收屏蔽寄存器AMR0=00HINC DPTRMOVA,#0FFHMOVXDPTR,A ;AMR1INC DPTRMOVXDPTR,A ;AMR2INC DPTRMOVXDPTR,A ;AMR3验收屏蔽:只有ACR0是相关项MOV DPTR, #RBSAMOV A, #00HMOVX DPTR, A ;接收缓冲器FIFO起始地址为0MOV DPTR, #TXERRMOVX DPTR, A ;清除发送错误计数器 MOV DPTR, #ECCMOVX DPTR, A ;清除错误代码捕捉寄存器 MOVDPTR,#MODEMOVA,#0CH MOVX DPTR,A ;单滤波方式,返回工作方式RETSEND: MOV DPTR,#SR ;状态寄存器MOVX A,DPTR ;从SJA1000 读入状态寄存器值JB ACC.4,SEND ;判断是否正在接收正在接收则等待SEND0:MOVX A,DPTRJNB ACC.3,SEND0 ;判断上次发送是否完成未完成则等待发送完成SEND1:MOVX A,DPTRJNB ACC.2,SEND1 ;判断发送缓冲区是否锁定锁定则等待SEND2: MOV DPTR,#FIN ;SJA1000 发送缓存区首址MOV A, #08HMOVX DPTR, AINC DPLMOV A, #00HMOVX DPTR, AINC DPLMOV A, #0FFHMOVX DPTR, AINC DPL MOV R2, #08HSEND3:MOV A, R0 ;R0为发送数据首址MOVX DPTR, AINC R0INC DPL DJNZ R2, SEND3MOV DPTR,#CMR ;命令寄存器地址MOV A,#10H ;发送请求 MOVX DPTR,A ;启动SJA1000 发送RETRECV: MOV DPTR,#SR ;状态寄存器地址MOVX A,DPTRANL A, #0C3H ;读取总线脱离、错误状态、接收溢出、有数据等位JNZ PROCRET ;无上述状态,结束PROC: JNB ACC.7, PROC1BUSERR: MOV DPTR, #IR ;IR中断寄存器,出现总线脱离 MOVX A, DPTR ;读中断寄存器,清除中断位 MOV DPTR, #MODE MOV A, #08H MOVX DPTR, A ;将方式寄存器复位请求位清0 RET NOPPROC1: MOV DPTR, #IR ;总线正常 MOVX A, DPTR ;读取中断位 JNB ACC.3, OTHEROVER: MOV DPTR, #CMR ;数据溢出处理 MOV A, #0CH MOVX DPTR, A ;清除数据溢出位,释放接收缓冲区 RET NOPOTHER: JB ACC.0, RECE LJMP RECOUT ;接收缓冲区无数据 NOPRECE: CLR P1.0 SETB P1.7 MOVDPTR, #FIN ;接收缓冲区有数据MOVXA,DPTRJNB ACC.6, RDATAMOV DPTR, #CMR ;远程桢处理MOV A, #04HMOVX DPTR, ALJMP RECOUTNOPRDATA: MOV DPTR, #DATA1 ;将接收数据传至R0为首址的内存中 MOV R2, #08HRDATA1: MOVX A, DPTR MOV R0, A INC DPL INC R0 DJNZ R2, RDATA1 MOV DPTR, #CMRMOV A, #04HMOVX DPTR, ARECOUT: MOV DPTR, #ALC ;释放仲裁丢失捕捉寄存器和错误捕捉寄存器 MOVX A, DPTR NOP RETDELAY: MOV R2, #40DELAY1: MOV R4, #255DELAY2: NOP DJNZ R4, DELAY2 DJNZ R2, DELAY1 RET END实验心得: 通过本次实验,对局部自检测有了较深的认识,结合上次初始化实验自己的感想,通过分析和查看课本,完成本次试验.对我来说,这次实验也让我对SJA10000有了一些了解。CAN网络进行通信时,发送器需要得到接收器的应答信号,但是,节点局部自检测不需要其它节点的配合,接终端电阻即可。实验采用中断接收,将SJA1000的中断引脚与单片机的外部中断0相连。本实验选择120的终端电阻。 实验三:双机通信一 实验目的 :通过SJA1000完成CAN节点间通信二 实验内容 :在前次实验的基础上,初始化的时候定义两个节点ID号,分别为0020和0040,修改发送缓冲器的地址分别为定义的对方的ID号 修改模式寄存器的值为08.在发送子程序确认发送无误后点灯接收子程序中有数据正确接收亮灯并把接收到的数据低四位送二极管显示实验源程序:MODEEQU0DE00H ;模式寄存器CMREQU0DE01H ;命令寄存器SREQU0DE02H ;状态寄存器IREQU0DE03H ;中断寄存器IEREQU0DE04H ;中断使能寄存器BTR0EQU0DE06H ;总线定时寄存器一BTR1EQU0DE07H ;总线定时寄存器二OCREQU0DE08H ;输出控制寄存器ALC EQU 0DE0BH ;仲裁丢失捕捉寄存器ECC EQU 0DE0CH ;错误代码捕捉寄存器TXERR EQU 0DE0FH ;发送错误计数器ACR0EQU0DE10H ;验收代码寄存器0ACR1EQU0DE11H ; 1ACR2EQU0DE12H ; 2ACR3EQU0DE13H ; 3AMR0EQU0DE14H;验收屏蔽寄存器0AMR1EQU0DE15H ; 1AMR2EQU0DE16H ; 2AMR3EQU0DE17H ; 3FIN EQU 0DE10H ;发送/接收帧信息ID1 EQU0DE11H ;发送/接收缓冲区之标示符一ID2 EQU0DE12H ;发送/接收缓冲区之标示符二DATA1 EQU0DE13H ;发送/接收数据首址RBSAEQU0DE1EH ;接收缓冲器起始地址寄存器CDR EQU0DE1FH ;时钟分频寄存器ORG 4000HJMP STARTORG 4080HSTART: MOV R1,#8 MOV R0,#27HFILL: MOV B,#10H MOV A,R1 MUL AB MOV R0,A DEC R0 DJNZ R1,FILL MOV R0,#0AAH LCALL INITCAN ;CAN初始化(CAN片选为CS0:0DE00H);-发送-RETRAN: MOV DPH, #0DEH MOV R0, #20H LCALL SEND ;发送20H为首址的1桢数据(前三字节为:08H、BBH、FFH,后8字节任意) LCALL DELAY;-接收数据- MOV DPH, #0DEH MOV R0, #30H LCALL RECV NOP ;在此处设置断点,以观察结果 JMP $INITCAN: MOV DPTR,#MODE ;初始化子程序,DPH、R0为入口参数MOV A,#01HMOVX DPTR,A ;模式寄存器,单验收滤波器,进入复位模式MOVDPTR,#CDRMOVA,#88HMOVXDPTR, A;时钟分频R,选择增强CAN模式,关闭CLKOUT输出MOVDPTR,#IERMOVA,#0DHMOVX DPTR,A ;中断使能寄存器,开溢出、错误、接收中断MOVDPTR,#BTR0MOVA,#03HMOVXDPTR,A ;总线定时寄存器一MOVDPTR,#BTR1MOVA,#0FFHMOVX DPTR,A ;总线定时寄存器二,6MHz晶振,波特率30KbpsMOVX A, DPTRMOVDPTR,#OCRMOVA,#0AAHMOVXDPTR,A ;输出控制寄存器MOVDPTR,#ACR0MOVA, 00HMOVXDPTR,A ;验收代码ACR0MOVDPTR,#ACR1MOVA,#2FHMOVX DPTR,A;无关MOVA,#0FFHINC DPTRMOVXDPTR,A ;无关INC DPTRMOVXDPTR,A ;无关MOVDPTR,#AMR0MOV A,#0FFH ;modify #00 to #0FF MOVX DPTR,A ;验收屏蔽寄存器AMR0=00HINC DPTRMOVA,#0FFHMOVXDPTR,A ;AMR1INC DPTRMOVXDPTR,A ;AMR2INC DPTRMOVXDPTR,A ;AMR3验收屏蔽:只有ACR0是相关项MOV DPTR, #RBSAMOV A, #00HMOVX DPTR, A ;接收缓冲器FIFO起始地址为0MOV DPTR, #TXERRMOVX DPTR, A ;清除发送错误计数器 MOV DPTR, #ECCMOVX DPTR, A ;清除错误代码捕捉寄存器 MOVDPTR,#MODEMOVA,#08H MOVX DPTR,A ;单滤波方式,返回工作方式RETSEND: MOV DPTR,#SR ;状态寄存器MOVX A,DPTR ;从SJA1000 读入状态寄存器值JB ACC.4,SEND ;判断是否正在接收正在接收则等待SEND0:MOVX A,DPTRJNB ACC.3,SEND0 ;判断上次发送是否完成未完成则等待发送完成SEND1:MOVX A,DPTRJNB ACC.2,SEND1 ;判断发送缓冲区是否锁定锁定则等待SEND2: MOV DPTR,#FIN ;SJA1000 发送缓存区首址MOV A, #08HMOVX DPTR, AINC DPLMOV A, #00HMOVX DPTR, AINC DPLMOV A, #4FHMOVX DPTR, AINC DPL MOV R2, #08HSEND3:MOV A, R0 ;R0为发送数据首址MOVX DPTR, AINC R0INC DPL DJNZ R2, SEND3MOV DPTR,#CMR ;命令寄存器地址MOV A,#10H ;发送请求 MOVX DPTR,A ;启动SJA1000 发送RETRECV: MOV DPTR,#SR ;状态寄存器地址MOVX A,DPTRANL A, #0C3H ;读取总线脱离、错误状态、接收溢出、有数据等位JNZ PROCRET ;无上述状态,结束PROC: JNB ACC.7, PROC1BUSERR: MOV DPTR, #IR ;IR中断寄存器,出现总线脱离 MOVX A, DPTR ;读中断寄存器,清除中断位 MOV DPTR, #MODE MOV A, #08H MOVX DPTR, A ;将方式寄存器复位请求位清0 RET NOPPROC1: MOV DPTR, #IR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地板市场调研报告
- 2024-2025学年度下学期五年级英语期末质量分析
- 难点解析京改版数学7年级上册期末试卷及完整答案详解
- 小儿推拿腹痛课件
- 其他财产转移权合同范本
- 小儿推拿护理方案课件
- 冯绍峰赵丽颖离婚协议书
- 个人出租给公司合同范本
- 解除租赁合同书面协议范本
- 快递模板区转租合同协议书
- 养老机构标准化建设方案
- 2024人教版初中英语单词词汇表默写背诵(中考复习必背)
- 2022年江苏省春季高考数学试卷
- 分期缴纳罚款保证书
- 2023年内蒙古乌海市委组织部选用事业编制人员6人笔试参考题库(共500题)答案详解版
- 医院护理培训课件:《母婴同室病房医院感染预防与控制》
- 国际尿失禁咨询委员会尿失禁问卷表
- 面试性格测试表
- 特种设备安全管理-使用知识
- H35-462(5G中级)认证考试题库(附答案)
- HY/T 122-2009海洋倾倒区选划技术导则
评论
0/150
提交评论