·上一文章:基于嵌入式MPU和CAN总线的测控系统设计
·下一文章:基于嵌入式的物流盘点PDA无线终端设计
4.2 CAN通信程序设计
CAN应用节点的通信程序设计主要包括三部分:初始化子程序、发送子程序、接收子程序,各个部分的具体程序如下[5]:
(1)CAN总线初始化子程序
NODE EQU 30H ;节点号缓冲区
NBTR0 EQU 31H ;总线定时寄存器0缓冲区
NBTR1 EQU 32H ;总线定时寄存器1缓冲区
…;定义RAM内发送TXBF、接收RXBF缓冲区,即40H与50H
…;再定义相应的控制CR、命令CMR、状态SR、中断IR寄存器,即0BF00H-0BF04H
AMR EQU 0BF05H ;接收码屏蔽寄存器
BTR0 EQU 0BF06H ;总线定时寄存器0
BTR1 EQU 0BF07H ;总线定时寄存器1
OCR EQU 0BF08H ;输出控制寄存器
CDR EQU 0BF1FH ;时钟分频寄存器
… ;定义接收RXB、发送TXB缓冲器,即0BF14H与0BF0AH
CANINI: MOV DPTR,#CR ;写控制寄存器
MOV A,#01H ;置复位请求为高
MOVX @DPTR, A
CANI1: MOVX A, @DPTR ;判断复位请求有效
JNB ACC.0, CANI1
MOV DPTR, #ACR ;写接收码寄存器
MOV A, NODE ;设置节点号
MOVX @DPTR, A
MOV DPTR, #AMR ;写接收码屏蔽寄存器
MOV A, #00H