求助sja1000初始化问题-PLC技术网(www.plcjs.com)-可编程控制器技术门户


求助sja1000初始化问题

 (点击题目 可以在互 联 网中搜索该题 目的相关内容)
日期: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

本新闻共3页,当前在第11 2  3  

上一篇: wincc的n个经典问题解答之二
下一: 在wincc里如何实现跳出同一种面板控制,不同的所连接的变量是其对应的设备?