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

📄 noname2.asm

📁 CAN总线源程序,欢迎大家共同学习
💻 ASM
字号:

;************************************************************************
;*以下的定义用户要根据自己的微处理器同SJA1000的硬件连接,来修改SJA1000的*
;*片选地址 CONTROLLER_BASE ,                           *
;************************************************************************
CONTROLLER_BASE   EQU   0C000H     ;SJA1000的片选地址
                                  ;是操作SJA1000内部寄存器的基址

;************************************************************************
;*以下的定义用户不可修改                                                *
;************************************************************************
;************************************************************************
;*以下的定义是SJA1000在PeliCAN工作方式下内部寄存器的定义               *
;************************************************************************
;*控制段寄存器(在内部地址0H---1FH)                                     *
;************************************************************************
;************************************************************************
;*模式寄存器                                   *
;************************************************************************
REG_MOD       EQU  CONTROLLER_BASE+0H         ;内部控制寄存器地址;其内容可改变      *

;************************************************************************
;*命令寄存器                                   *
;************************************************************************
REG_CMR       EQU  CONTROLLER_BASE+01H        ;内部命令寄存器地址;                  *

;************************************************************************
;*状态寄存器                                    *
;************************************************************************
REG_SR        EQU  CONTROLLER_BASE+02H        ;内部状态寄存器地址;                  *

 ;************************************************************************
;*中断寄存器                                   *
;************************************************************************
REG_IR    EQU  CONTROLLER_BASE+03H        ;内部中断寄存器地址;

;************************************************************************
;*中断使能寄存器                                    *
;************************************************************************
REG_IER    EQU  CONTROLLER_BASE+04H

;************************************************************************
;*保留                                   *
;************************************************************************
;REG保留    EQU  CONTROLLER_BASE+05H

;************************************************************************
;*总线定时寄存器0                                   *
;************************************************************************
REG_BTR0   EQU  CONTROLLER_BASE+06H              ;总线定时寄存器0       ;               *
;BIT 7	BIT 6	BIT 5	BIT 4	BIT 3	BIT 2	BIT 1	BIT 0           *
;SJW.1	SJW.0	BRP.5	BRP.4	BRP.3	BRP.2	BRP.1	BRP.0           *
                                 ;总线定时寄存器0定义了波特率
                                 ;预设值(BRP)和同步跳转宽度(SJW)的值。
                                 ;CAN系统时钟由如下公式计算:
                                 ;tSCL=2×tCLK×(32×BRP.5+16×BRP.4+8×BRP.3+4×BRP.2+2×BRP.1+BRP.0+1)
                                 ;这里tCLK =XTAL的频率周期=1/fXTAL
                                 ;同步跳转宽度
                                 ;tSJW=tSCL×(2×SJW.1+SJW.0+1)
;************************************************************************
;*总线定时寄存器1                                    *
;************************************************************************
REG_BTR1   EQU  CONTROLLER_BASE+07H              ;总线定时寄存器1       ;               *
;BIT 7	BIT 6	BIT 5	BIT 4	BIT 3	BIT 2	BIT 1	BIT 0           *
;SAM	TSEG2.2	TSEG2.1	TSEG2.0	TSEG1.3	TSEG1.2	TSEG1.1	TSEG1.0         *
                                 ;时间段1(TSEG1)和时间段(TSEG2)
                                 ;(TSEG1)和(TSEG2)决定了每一位的时钟数目和采样点的位置,这里:
                                 ;tSYNCSEG=1×tSCL
                                 ;tTSEG1=tSCL×(8×TSEG1.3+4×TSEG1.2+2×TSEG1.1+TSEG1.0+1)
                                 ;tTSEG2=tSCL×(4×TSEG2.2+2×TSEG2.1+TSEG2.1+1)

;************************************************************************
;*输出控制寄存器(OCR)                                   *
;************************************************************************
REG_OCR   EQU  CONTROLLER_BASE+08H               ;输出控制寄存器                        *
;BIT 7	BIT 6	BIT 5	BIT 4	BIT 3	BIT 2	BIT 1	BIT 0           *
;OCTP1	OCTN1	OCPOL1	OCTP0	OCTN0	OCPOL0	OCMODE1	OCMODE0         *

;************************************************************************
;*测试寄存器(仅由于内部测试

⌨️ 快捷键说明

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