- 打卡等级:以坛为家I
- 打卡总天数:350
- 最近打卡:2025-05-01 00:57:45
高级会员
- 积分
- 829
|
本帖最后由 newlined 于 2024-10-11 09:27 编辑
首先是读数据,不需要解析ID,是标准帧,TMP2_BUF 是不是占用3个字节就可以了?谢谢。
CAN2_ReadMsg:
ORL AUXR2, #08H ;选择CAN2模块
MOV A, #RX_BUF0
CALL CAN_ReadReg
MOV TMP2_BUF+0, A
MOV A, #RX_BUF1
CALL CAN_ReadReg
MOV TMP2_BUF+1, A
MOV A, #RX_BUF2
CALL CAN_ReadReg
MOV TMP2_BUF+2, A
MOV A, #RX_BUF3
CALL CAN_ReadReg
MOV RX2_BUF+0, A ;RX_BUF+0
MOV A, #RX_BUF0
CALL CAN_ReadReg
MOV RX2_BUF+1, A ;RX_BUF+1
MOV A, #RX_BUF1
CALL CAN_ReadReg
MOV RX2_BUF+2, A ;RX_BUF+2
发送数据:
CAN2_SendMsg:
PUSH WR2
MOV A, #TX_BUF0
MOV B, #03H ;bit7: 标准帧(0)/扩展帧(1), bit6: 数据帧(0)/远程帧(1), bit3~bit0: 数据长度(DLC)
CALL CAN_WriteReg
MOV WR2, CAN2_ID
SLL WR2
SLL WR2
SLL WR2
SLL WR2
SLL WR2
MOV A, #TX_BUF1
MOV B, R2
CALL CAN_WriteReg
MOV A, #TX_BUF2
MOV B, R3
CALL CAN_WriteReg
MOV A, #TX_BUF3
MOV B, TX2_BUF+0
CALL CAN_WriteReg
MOV A, #TX_BUF0
MOV B, TX2_BUF+1
CALL CAN_WriteReg
MOV A, #TX_BUF1
MOV B, TX2_BUF+2
CALL CAN_WriteReg
MOV A, #TX_BUF3
MOV B, #0
CALL CAN_WriteReg
MOV A, #CMR
MOV B, #04H ;发起一次帧传输
CALL CAN_WriteReg
POP WR2
RET
|
|