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

📄 sja_bcanconf.asm

📁 SJA1000驱动程序(分别用C&ASM书写)
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;************************************************************************
;*   广州周立功单片机发展有限公司    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 + -