| |
---|---|
(点击题目 可以在互 联 网中搜索该题 目的相关内容) 日期:2006-7-24 23:07:36 来源: 作者: 点击: | |
请教各位大侠:我得sja1000初始化完成后,读sr寄存器结果是70h,请问是什么原因,谢谢 以下是对《求助sja1000初始化问题》的回复: themwere: 2005-11-25 16:16:00 龚贺: 2005-12-23 19:28:00 CANINI MOV DPTR #MOD 方式寄存器 MOV A #09H 进入复位模式对SJA1000 进行初始化. MOVX @DPTR A MOV DPTR #CDR 时钟分频寄存器 MOV A #88H 选择PeliCAN 模式关闭时钟输出CLKOUT MOVX @DPTR A MOV DPTR #IER 中断允许寄存器 MOV A #0DH 开放发送中断超载中断和错误警告中断 MOVX @DPTR A MOV DPTR #AMR 接收屏蔽寄存器 MOV R6 #4 MOV R0 #DAMR 接收屏蔽寄存器内容在片内RAM 中的首址 AMR MOV A @R0 MOVX @DPTR A 接收屏蔽寄存器赋初值 INC DPTR DJNZ R6 AMR MOV DPTR #ACR 接收代码寄存器 MOV R6 #4 MOV R0 #DACR 接收代码寄存器内容在片内RAM 中的首址 ACR MOV A @R0 MOVX @DPTR A 接收代码寄存器赋初值 INC DPTR DJNZ R6 ACR MOV DPTR #BTR0 总线定时寄存器0 MOV A #03H MOVX @DPTR A MOV DPTR #BTR1 总线定时寄存器1 MOV A #0FFH 16MHz 晶振情况下设置波特率为80kbps. 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 A @DPTR 清除错误代码捕捉寄存器 MOV DPTR #MODE 方式寄存器 MOV A #08H 设置单滤波接收方式并返回工作状态 MOVX @DPTR A RET 2 发送子程序 发送子程序负责节点报文的发送发送时用户只需将待发送的数据按特定格式组合成一帧报文送入 SJA1000 发送缓存区中然后启动SJA1000 发送即可当然在往SJA1000 发送缓存区送报文之前必须先作一 些判断如下文程序所示发送程序分发送远程帧和数据帧两种远程帧无数据场下面以发送数据帧为例对 发送子程序作一个说明 TDATA MOV DPTR #SR 状态寄存器 MOVX A @DPTR 从SJA1000 读入状态寄存器值 JB ACC.4 TDATA 判断是否正在接收正在接收则等待 TS0 MOVX A @DPTR JNB ACC.3 TS0 判断上次发送是否完成未完成则等待发送完成 TS1 MOVX A @DPTR JNB ACC.2 TS1 判断发送缓冲区是否锁定锁定则等待 TS2 MOV DPTR #CANTXB SJA1000 发送缓存区首址 MOV A #88H 发送数据长度为8 个字节的扩展帧格式报文 MOVX @DPTR A INC DPTR MOV A #ID0 4 个字节的标识符ID0-ID3 依据实际情况赋值 MOVX @DPTR A INC DPTR MOV A #ID1 MOVX @DPTR A INC DPTR |
|
上一篇: wincc的n个经典问题解答之二 下一篇: 在wincc里如何实现跳出同一种面板控制,不同的所连接的变量是其对应的设备? |