📄 noname2.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 + -