📄 sja_bcanconf.asm
字号:
;************************************************************************
;* 广州周立功单片机发展有限公司 http://www.zlgmcu.com *
;************************************************************************
;************************************************************************
;* *
;* CAN 控制器SJA1000基本的硬件定义(BasicCAN 工作方式) *
;* *
;************************************************************************
;************************************************************************
;* *
;* 目的: SJA1000基本寄存器\功能位定义,便于用户使用SJA1000时 *
;* 只需作与其硬件系统相适合的简单的修改,便能实现SJA1000的 *
;* BasicCAN工作方式的功能 *
;* *
;* 文件名: SJA_BCANCONF.ASM *
;* *
;* 模块名: -- *
;* *
;* 目标系统: 任何基于任何兼容8051指令的微处理器同SJA1000组成的CAN *
;* 系统 *
;* *
;* 应用语言: Keil ASM-51 or Intel ASM-51 *
;* *
;************************************************************************
;* 版本 :V1.0 *
;* *
;************************************************************************
;* 广州周立功单片机发展有限公司 保留所有的版权 *
;************************************************************************
;************************************************************************
;*以下的定义用户要根据自己的微处理器同SJA1000的硬件连接,来修改SJA1000的*
;*片选地址 CONTROLLER_BASE ,暂且假定值7000H *
;************************************************************************
CONTROLLER_BASE EQU 0fa00H ;SJA1000的片选地址
;是操作SJA1000内部寄存器的基址
;************************************************************************
;*以下的定义用户不可修改 *
;************************************************************************
;************************************************************************
;*以下的定义是SJA1000在BasicCAN工作方式下内部寄存器的定义 *
;************************************************************************
;*控制段寄存器(在内部地址0H---09H) *
;************************************************************************
;控制寄存器;;;复位模式、工作模式均可进行读写 *
REG_CONTROL EQU CONTROLLER_BASE+0H ;内部控制寄存器地址;其内容可改变 *
;SJA1000 的状态 *
BIT_RR EQU 01H ;复位请求控制位,控制寄存器的第0位 *
;=1,;SJA1000进入复位状态 *
;=0,;SJA1000返回正常工作状态 *
BIT_RIE EQU 02H ;接收中断控制位,控制寄存器的第1位 *
;=1,;信息被无错接收时,SJA1000发出一个 *
;接收中断信号到微控制器 *
;=0,;SJA1000不发送接收中断信号 *
BIT_TIE EQU 04H ;发送中断控制位,控制寄存器的第2位 *
;=1,;当信息被成功发送或发送缓冲器又被 *
;访问时,(例如,中止发送命令后), *
;SJA1000发出一个中断信号到微控制器*
;=0,;SJA1000不发送中断信号 *
BIT_EIE EQU 08H ;出错中断控制位,控制寄存器的第3位 *
;=1,;如果出错或总线状态改变 *
;SJA1000发出一个中断信号到微控制器*
;=0,;SJA1000不发送中断信号 *
BIT_OIE EQU 10H ;超载中断控制位,控制寄存器的第4位 *
;=1,;如果置位数据溢出位, *
;SJA1000发出一个中断信号到微控制器*
;=0,;SJA1000不发送中断信号 *
;BIT_5 ;系统保留位 *
;BIT_6 ;系统保留位 *
;BIT_7 ;系统保留位 *
;命令寄存器;;;复位模式、工作模式 只可进行写 ;;读出值为0XFF *
REG_COMMAND EQU CONTROLLER_BASE+01H ;内部命令寄存器地址; *
;SJA1000 的状态 *
BIT_TR EQU 01H ;发送请求位,命令寄存器的第0位 *
;=1,;信息被发送 *
;=0,;无发送动作 *
BIT_AT EQU 02H ;中止发送位,命令寄存器的第1位 *
;=1,;如果不是在处理过程中, *
;等待处理的发送请求将取消 *
;=0,; *
BIT_RRB EQU 04H ;释放接收缓冲器位,命令寄存器的第2位 *
;=1,;接收缓冲器中存放信息的内存空间 *
;将被释放 *
;SJA1000发出一个中断信号到微控制器*
;=0,; *
BIT_COS EQU 08H ;清除超载状态位,命令寄存器的第3位 *
;=1,;清除超载状态 *
;=0,; *
BIT_GTS EQU 10H ;睡眠位; 命令寄存器的第4位 *
;=1,;如果没有CAN中断等待和总线活动, *
;SJA1000进入睡眠模式 *
;=0,; *
;BIT_5 ;系统保留位 *
;BIT_6 ;系统保留位 *
;BIT_7 ;系统保留位 *
;状态寄存器;;;复位模式、工作模式 可进行读 ; 写操作无效 *
REG_STATUS EQU CONTROLLER_BASE+02H ;内部状态寄存器地址; *
BIT_RBS EQU 01H ;接收缓冲器状态位,状态寄存器的第0位 *
;=1,;RXFIFO中有可用信息 *
;=0,;无可用信息 *
BIT_DOS EQU 02H ;超载状态位,状态寄存器的第1位 *
;=1,;信息丢失,因为RXFIFO中没有足够的 *
;空间来存储它 *
;=0,;自从最后一次清除数据溢出命令执行,
;无数据溢出发生
BIT_TBS EQU 04H ;发送缓冲器状态位,状态寄存器的第2位 *
;=1,;CPU可以向发送缓冲器写信息 *
;=0,;CPU不能访问发送缓冲器;有信息正 *
;在等待发送或正在发送 *
BIT_TCS EQU 08H ;发送完毕状态位,状态寄存器的第3位 *
;=1,;最近一次发送请求被成功处理 *
;=0,;当前发送请求未处理完毕 *
BIT_RS EQU 10H ;接收状态位; 状态寄存器的第4位 *
;=1,;SJA1000正在接收信息 *
;=0,;没有正在接收的信息 *
BIT_TS EQU 20H ;发送状态位; 状态寄存器的第4位 *
;=1,;SJA1000正在发送信息 *
;=0,;没有正在发送的信息 *
BIT_ES EQU 40H ;出错状态位; 状态寄存器的第4位 *
;=1,;至少出现一个错误计数器满或超过 *
;CPU报警限制 *
;=0,;两个错误计数器都在报警限制以下 *
BIT_BS EQU 80H ;总线状态位; 状态寄存器的第4位 *
;=1,;总线关闭;SJA1000退出总线活动 *
;=0,;总线开启;SJA1000加入总线活动 *
;中断寄存器允许中断源的识别;;; 只读 *
REG_INTERRUPT EQU CONTROLLER_BASE+03H ;内部中断寄存器地址; *
BIT_RI EQU 01H ;接收中断位,中断寄存器的第0位 *
;=1,;;当接收FIFO不空和接收中断 *
;使能时置位此位 *
;=0,;无可用信息 *
BIT_TI EQU 02H ;发送中断位,中断寄存器的第1位 *
;=1,;发送缓冲器状态从0变为1(释放) *
;和发送中断使能时,置位此位 *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -