⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 canbridge.txt

📁 能够实现CAN网络中不同CAN节点之间的数据传输
💻 TXT
字号:
MODE  EQU  7F00H
CMR   EQU  7F01H
SR    EQU  7F02H
IR    EQU  7F03H
IER   EQU  7F04H
BTR0  EQU  7F06H
BTR1  EQU  7F07H
OCR   EQU  7F08H
ALC   EQU  7F0BH
CDR   EQU  7F1FH
ECC   EQU  7F0CH
TXERR EQU  7F0FH
RXERR EQU  7F0EH
TXBUF EQU  7F10H
RXBUF EQU  7F10H
ACR0  EQU  7F10H
ACR1  EQU  7F11H
ACR2  EQU  7F12H
ACR3  EQU  7F13H
AMR0  EQU  7F14H
AMR1  EQU  7F15H
AMR2  EQU  7F16H
AMR3  EQU  7F17H
RBSA  EQU  7F1EH

SEND_1 EQU  30H
SEND_2 EQU  31H
SEND_3 EQU  32H

ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EXIT0
ORG 0100H

MAIN:
  MOV  SP,#60H
  ;MOV  TCON,#00H
  LCALL CANINI
  SETB EA
  SETB EX0
 LOOP1:
  MOV  SEND_1,#12H
  MOV  SEND_2,#08H
  MOV  SEND_3,#26H
  LCALL SDATA
  LJMP LOOP1

 EXIT0:
  PUSH  PSW
  PUSH  ACC
  PUSH  DPL
  PUSH  DPH
  CLR   EA
  CLR   EX0
  LCALL RECEIVE
  SETB  EA
  SETB  EX0
  POP   DPH
  POP   DPL
  POP   ACC
  POP   PSW
  RETI

CANINI:
  MOV   DPTR,#MODE          ;方式寄存器
  MOV   A,#05H     ;进入复位模式对SJA1000 进行初始化.
  MOVX  @DPTR,A
  MOV   DPTR,#CDR           ;时钟分频寄存器
  MOV   A,#0C8H       ;选择PeliCAN 模式关闭时钟输出CLKOUT
  MOVX  @DPTR,A
  MOV   DPTR,#IER       ; 中断允许寄存器
  MOV   A,#01H
  MOVX  @DPTR,A
  ;MOV   DPTR,#IER
  ;MOVX  A,@DPTR
  ;MOV   R1,#70H
  ;MOV   @R1,A
  MOV   DPTR,#AMR0         ;接收屏蔽寄存器
  MOV   A,#0FFH
  MOVX  @DPTR,A
  MOV   DPTR,#AMR1         ;接收屏蔽寄存器
  MOV   A,#0FFH
  MOVX  @DPTR,A
  MOV   DPTR,#AMR2         ;接收屏蔽寄存器
  MOV   A,#0FFH
  MOVX  @DPTR,A
  MOV   DPTR,#AMR3         ;接收屏蔽寄存器
  MOV   A,#0FFH
  MOVX  @DPTR,A
  MOV   DPTR,#ACR0
  MOV   A,#01H
  MOVX  @DPTR,A
  MOV   DPTR,#ACR1
  MOV   A,#02H
  MOVX  @DPTR,A
  MOV   DPTR,#ACR2
  MOV   A,#03H
  MOVX  @DPTR,A
  MOV   DPTR,#ACR3
  MOV   A,#60H
  MOVX  @DPTR,A
  MOV   DPTR,#BTR0
  MOV   A,#67H
  MOVX  @DPTR,A
  MOV   DPTR,#BTR1
  MOV   A,#2FH
  MOVX  @DPTR,A
  MOV   DPTR,#OCR
  MOV   A,#1AH
  MOVX  @DPTR,A
  MOV   DPTR,#RBSA
  MOV   A,#0
  MOVX  @DPTR,A
  MOV   DPTR,#TXERR
  MOV   A,#0
  MOVX  @DPTR,A
  MOV   DPTR,#ECC
  MOV   A,#0
  MOVX  @DPTR,A
  MOV   DPTR,#MODE
  MOV   A,#04H
  MOVX  @DPTR,A
  RET

SDATA:
 ;MOV   DPTR,#SR    ;状态寄存器
 ;MOVX  A,@DPTR     ;从SJA1000 读入状态寄存器值
 ;JB    ACC.4,SDATA
TS0:
 ;MOVX 	A,@DPTR
 ;JNB 	ACC.3,TS0   ;判断上次发送是否完成未完成则等待发送完成
TS1:
 ;MOVX   A,@DPTR
 ;JNB 	ACC.2,TS1    ;判断发送缓冲区是否锁定锁定则等待
TS2:
 MOV	DPTR,#TXBUF  ;SJA1000 发送缓存区首址
 MOV 	A,#83H      ;发送数据长度为8 个字节的扩展帧格式报文
 MOVX 	@DPTR,A
 INC 	DPTR
 MOV 	A,#11H       ;4 个字节的标识符ID0-ID3 依据实际情况赋值
 MOVX	@DPTR,A
 INC 	DPTR
 MOV 	A,#12H
 MOVX 	@DPTR,A
 INC	DPTR
 MOV 	A,#13H
 MOVX	@DPTR,A
 INC 	DPTR
 MOV 	A,#14H
 MOVX	@DPTR,A
 INC     DPTR
 MOV     A,SEND_1
 MOVX    @DPTR,A
 INC     DPTR
 MOV     A,SEND_2
 MOVX    @DPTR,A
 INC     DPTR
 MOV     A,SEND_3
 MOVX    @DPTR,A
 MOV	DPTR,#CMR     ;命令寄存器地址
 MOV 	A,#10H
 MOVX	@DPTR,A       ;启动SJA1000 发送
 RET

RECEIVE:
  MOV  DPTR,#RXBUF
  MOV  R1,#50H
  MOVX A,@DPTR
  MOV  @R1,A
  ANL  A,#0FH
  ADD  A,#4
  MOV  R6,A
 RDATA0:
  INC  DPTR
  INC  R1
  MOVX A,@DPTR
  MOV  @R1,A
  DJNZ R6,RDATA0
  MOV  DPTR,#CMR
  MOV  A,#04H
  MOVX @DPTR,A
  RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -