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

📄 can-only.asm

📁 89c51+sj1000 的发送例程 can2.0 扩展帧
💻 ASM
字号:
      ;应答机
                IDADDR  EQU    00H
                IDADDR1 EQU    00H
                IDADDR2 EQU    00H

                MODE    EQU    00H
                CMR     EQU    01H
                SR      EQU    02H
                IR      EQU    03H
                IER     EQU    04H
                BTR0    EQU    06H
                BTR1    EQU    07H
                OCR     EQU    08H
                ALC     EQU    0BH
                ECC     EQU    0CH
                EWLR    EQU    0DH
                RXERR   EQU    0EH
                TXERR   EQU    0FH
                TXB     EQU    10H
                RXB     EQU    10H
                RXCMD   EQU    15H
                RTRDLC  EQU    10H
                ACR     EQU    10H
                AMR     EQU    14H
                RMC     EQU    1DH
                RBSA    EQU    1EH
                CDR     EQU    1FH

                DACR    EQU    50H
                DAMR    EQU    54H
                ID0     EQU    00H
                ID1     EQU    00H
                ID2     EQU    00H
                ID3     EQU    00H
                ID4     EQU    0FFH
                ID5     EQU    0FFH
                ID6     EQU    0FFH
                ID7     EQU    0FFH

                CBFRTP  EQU    30H
                SRXD    EQU    3DH
                STXD    EQU    3DH
                RECOK   BIT    00H
                CHZH    BIT    01H
                COM_CAN BIT    02H
                CAN_COM BIT    03H

                ORG     0000H
                AJMP    MAIN


                ORG     0100H
MAIN:           MOV     SP,#60H
                MOV     R0,#6FH
                CLR     A
CLAIR:          MOV     @R0,A
                DJNZ    R0,CLAIR
                MOV     R0,#DACR
                MOV     A,#ID0
                MOV     @R0,A
                INC     R0
                MOV     A,#ID1
                MOV     @R0,A
                INC     R0
                MOV     A,#ID2
                MOV     @R0,A
                INC     R0
                MOV     A,#ID3
                MOV     @R0,A
                INC     R0
                MOV     R0,#DAMR
                MOV     A,#ID4
                MOV     @R0,A
                INC     R0
                MOV     A,#ID5
                MOV     @R0,A
                INC     R0
                MOV     A,#ID6
                MOV     @R0,A
                INC     R0
                MOV     A,#ID7
                MOV     @R0,A
                LCALL   CANINI            ;SJA1000初始化
                MOV     P1,#0FFH
                mov     r3,#1
                MOV     IE,#00H           ;关闭所有中断


MLOOP:          CALL   TSDATA             ;调用CAN发送程序发送一帧
                MOV     R2,#1FH
LOOP:           DJNZ    R2,LOOP
                SJMP    MLOOP


                ;CAN初始化设置
CANINI:         MOV     DPTR,#MODE         ;0复位模式
                MOV     A,#01H
                MOVX    @DPTR,A
                MOV     DPTR,#IER          ;4中断使能
                MOV     A,#03H
                MOVX    @DPTR,A
                MOV     DPTR,#BTR0         ;6波特率1/15时钟800k
                MOV     A,#0EH
                MOVX    @DPTR,A
                MOV     DPTR,#BTR1         ;7波特率
                MOV     A,#25H
                MOVX    @DPTR,A
                MOV     DPTR,#OCR          ;8输出控制为正常输出
                MOV     A,#0AAH
                MOVX    @DPTR,A
                MOV     DPTR,#TXERR        ;15 TX错误计数器
                MOV     A,#0
                MOVX    @DPTR,A

                MOV     DPTR,#ACR          ;16 ACR接收代码赋初值
                MOV     R6,#4
                MOV     R0,#DACR
ACRINI:         MOV     A,@R0
                MOVX    @DPTR,A
                INC     DPTR
                INC     R0
                DJNZ    R6,ACRINI
                MOV     DPTR,#AMR          ;20 AMR屏蔽代码赋初值
                MOV     R6,#4
                MOV     R0,#DAMR
AMRINI:         MOV     A,@R0
                MOVX    @DPTR,A
                INC     DPTR
                INC     R0
                DJNZ    R6,AMRINI

                MOV     DPTR,#RBSA         ;30设置接收缓冲器地址0
                MOV     A,#0
                MOVX    @DPTR,A
                MOV     DPTR,#CDR          ;31时钟分频器
                MOV     A,#85H
                MOVX    @DPTR,A
                MOV     DPTR,#ECC          ;12错误捕捉寄存器
                MOVX    A,@DPTR            ;读,清零
                MOV     DPTR,#MODE
                MOV     A,#08h             ;设为单滤波器方式工作模式
                MOVX    @DPTR,A            ;
                RET

TSDATA:         MOV     CBFRTP,#85H
                MOV     A,#IDADDR
                MOV     CBFRTP+1,A
                MOV     A,#IDADDR1
                MOV     CBFRTP+2,A
                MOV     A,#IDADDR2
                MOV     CBFRTP+3,A
                MOV     CBFRTP+4,#0
                MOV     CBFRTP+5,#0FH
                MOV     CBFRTP+6,#0
                MOV     CBFRTP+7,#0FH
                MOV     CBFRTP+8,#0
                MOV     CBFRTP+9,#0FH
                ;MOV     CBFRTP+10,#6
                ;MOV     CBFRTP+11,#7
                ;MOV     CBFRTP+12,#8
                LCALL   TDATA
                RET

TDATA:          mov     a,r3
                subb    a,#1
                mov     r3,#8
                jz      ts2
ts:             MOV     DPTR,#SR
                MOVX    A,@DPTR
                JB      ACC.4,ts
TS0:            MOVX    A,@DPTR
                JNB     ACC.3,TS0
TS1:            MOVX    A,@DPTR
                JNB     ACC.2,TS1
ts2:            MOV     DPTR,#TXB
                MOV     R1,#CBFRTP
                MOV     A,@R1
                MOVX    @DPTR,A
                ANL     A,#0FH
                ADD     A,#4
                MOV     R6,A
MTBE:           INC     R1
                INC     DPTR
                MOV     A,@R1
                MOVX    @DPTR,A
                DJNZ    R6,MTBE
                MOV     DPTR,#CMR
                MOV     A,#01H
                MOVX    @DPTR,A
                CPL     P1.2
                RET

⌨️ 快捷键说明

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