新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于P89C668单片机的CAN总线接口设计

基于P89C668单片机的CAN总线接口设计

作者: 时间:2012-03-14 来源:网络 收藏

下面是SJA1000 的初始化程序.
_INI: MOV DPTR, #MOD; 模式寄存器
MOV A, #01H
MOVX @DPTR, A
NOP
MOVX A, @DPTR
ANL A, #01H
JZ _INI; 等待SJA1000 进入复位模式
MOV DPTR, #BTR0; 定时0
MOV A, #BandRate0
MOV DPTR, #BTR1; 定时1
MOV A, # BandRate1
MOV DPTR, #OCR; 输出控制寄存器
MOV A, #1AH
MOVX @DPTR, A
MOV DPTR, #CDR; 时钟分频器
MOV A, #0C0H
MOV DPTR, #ACR0; 接收代码寄存器ACR0
MOV A, #ModuleAddress; 设置为模块的地址
MOVX @DPTR, A
INC DPTR
MOV A, #0FFH
MOV @DPTR, A
INC DPTR
MOV A, #0FFH
MOVX @DPTR, A
INC DPTR
MOV A, #0FFH
MOVX @DPTR, A
MOV DPTR, #AMF0; 接收掩码寄存器AMF0
MOV A, #0FFH; 接收代码设置为
0X0FFFFFFFF
MOVX @DPTR, A
INC DPTR
MOV A, #0FFH
MOVX @DPTR, A
INC DPTR
MOV A, #0FFH
MOVX @DPTR, A
INC DPTR
MOV A, #0FFH
MOVX @DPTR, A
MOV DPTR, #IER ; 中断使能寄存器IER
MOV A, #09H; 允许接收中断和数据溢出中断
MOV DPTR, #CMR; 命令寄存器
MOV A, #04H; 释放接收缓冲器
MOVX @DPTR, A
LOOP: MOV DPTR, #MOD
MOV A, #08H; 设置SJA1000 工作模式为普通模式,单滤波接收
MOVX @DPTR, A
MOV DPTR, #MOD
MOV A, @DPTR
ANL A, #01H
JNZ LOOP; 等待复位标识被清除
RET

2.2 发送程序

对SJA1000控制器进行初始化建立CAN总线通信后,就可以通过CAN总线发送和接收报文.发送程序负责节点的报文发送.发送报文时,用户只需将需要发送的数据按一定的格式组合成一帧的报文,并送入SJA1000发送缓存区中,然后启动SJA1000发送即可.发送程序分发送数据帧和远程帧两种.通过设置RTR以决定是发送数据帧还是远程帧.



评论


相关推荐

技术专区

关闭