📄 test3.lst
字号:
A51 MACRO ASSEMBLER TEST3 06/03/2003 11:04:01 PAGE 1
MACRO ASSEMBLER A51 V7.01
OBJECT MODULE PLACED IN Test3.OBJ
ASSEMBLER INVOKED BY: C:\PROGRAM FILES\KEIL701\C51\BIN\A51.EXE Test3.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
2 ;$include (SJA_BCANCONF.ASM) ;导入硬件定义文件
+1 3 ;************************************************************************
+1 4 ;* 广州周立功单片机发展有限公司 http://www.zlgmcu.com *
+1 5 ;************************************************************************
+1 6 ;************************************************************************
+1 7 ;* *
+1 8 ;* CAN 控制器SJA1000基本的硬件定义(BasicCAN 工作方式) *
+1 9 ;* *
+1 10 ;************************************************************************
+1 11 ;************************************************************************
+1 12 ;* *
+1 13 ;* 目的: SJA1000基本寄存器\功能位定义,便于用户使用SJA1000时 *
+1 14 ;* 只需作与其硬件系统相适合的简单的修改,便能实现SJA1000的 *
+1 15 ;* BasicCAN工作方式的功能 *
+1 16 ;* *
+1 17 ;* 文件名: SJA_BCANCONF.ASM *
+1 18 ;* *
+1 19 ;* 模块名: -- *
+1 20 ;* *
+1 21 ;* 目标系统: 任何基于任何兼容8051指令的微处理器同SJA1000组成的CAN *
+1 22 ;* 系统 *
+1 23 ;* *
+1 24 ;* 应用语言: Keil ASM-51 or Intel ASM-51 *
+1 25 ;* *
+1 26 ;************************************************************************
+1 27 ;* 版本 :V1.0 *
+1 28 ;* *
+1 29 ;************************************************************************
+1 30 ;* 广州周立功单片机发展有限公司 保留所有的版权 *
+1 31 ;************************************************************************
+1 32
+1 33
+1 34 ;************************************************************************
+1 35 ;*以下的定义用户要根据自己的微处理器同SJA1000的硬件连接,来修改SJA1000的*
+1 36 ;*片选地址 CONTROLLER_BASE ,暂且假定值7000H *
+1 37 ;************************************************************************
FA00 +1 38 CONTROLLER_BASE EQU 0fa00H ;SJA1000的片选地址
+1 39 ;是操作SJA1000内部寄存器的基址
+1 40
+1 41
+1 42 ;************************************************************************
+1 43 ;*以下的定义用户不可修改 *
+1 44 ;************************************************************************
+1 45 ;************************************************************************
+1 46 ;*以下的定义是SJA1000在BasicCAN工作方式下内部寄存器的定义 *
+1 47 ;************************************************************************
+1 48 ;*控制段寄存器(在内部地址0H---09H) *
+1 49 ;************************************************************************
+1 50 ;控制寄存器;;;复位模式、工作模式均可进行读写 *
FA00 +1 51 REG_CONTROL EQU CONTROLLER_BASE+0H ;内部控制寄存器地址;其内容可改变 *
+1 52 ;SJA1000 的状态 *
+1 53
0001 +1 54 BIT_RR EQU 01H ;复位请求控制位,控制寄存器的第0位 *
+1 55 ;=1,;SJA1000进入复位状态 *
+1 56 ;=0,;SJA1000返回正常工作状态 *
+1 57
A51 MACRO ASSEMBLER TEST3 06/03/2003 11:04:01 PAGE 2
0002 +1 58 BIT_RIE EQU 02H ;接收中断控制位,控制寄存器的第1位 *
+1 59 ;=1,;信息被无错接收时,SJA1000发出一个 *
+1 60 ;接收中断信号到微控制器 *
+1 61 ;=0,;SJA1000不发送接收中断信号 *
+1 62
0004 +1 63 BIT_TIE EQU 04H ;发送中断控制位,控制寄存器的第2位 *
+1 64 ;=1,;当信息被成功发送或发送缓冲器又被 *
+1 65 ;访问时,(例如,中止发送命令后), *
+1 66 ;SJA1000发出一个中断信号到微控制器*
+1 67 ;=0,;SJA1000不发送中断信号 *
+1 68
0008 +1 69 BIT_EIE EQU 08H ;出错中断控制位,控制寄存器的第3位 *
+1 70 ;=1,;如果出错或总线状态改变 *
+1 71 ;SJA1000发出一个中断信号到微控制器*
+1 72 ;=0,;SJA1000不发送中断信号 *
+1 73
0010 +1 74 BIT_OIE EQU 10H ;超载中断控制位,控制寄存器的第4位 *
+1 75 ;=1,;如果置位数据溢出位, *
+1 76 ;SJA1000发出一个中断信号到微控制器*
+1 77 ;=0,;SJA1000不发送中断信号 *
+1 78
+1 79 ;BIT_5 ;系统保留位 *
+1 80 ;BIT_6 ;系统保留位 *
+1 81 ;BIT_7 ;系统保留位 *
+1 82
+1 83 ;命令寄存器;;;复位模式、工作模式 只可进行写 ;;读出值为0XFF *
FA01 +1 84 REG_COMMAND EQU CONTROLLER_BASE+01H ;内部命令寄存器地址; *
+1 85 ;SJA1000 的状态 *
+1 86
0001 +1 87 BIT_TR EQU 01H ;发送请求位,命令寄存器的第0位 *
+1 88 ;=1,;信息被发送 *
+1 89 ;=0,;无发送动作 *
+1 90
0002 +1 91 BIT_AT EQU 02H ;中止发送位,命令寄存器的第1位 *
+1 92 ;=1,;如果不是在处理过程中, *
+1 93 ;等待处理的发送请求将取消 *
+1 94 ;=0,; *
+1 95
0004 +1 96 BIT_RRB EQU 04H ;释放接收缓冲器位,命令寄存器的第2位 *
+1 97 ;=1,;接收缓冲器中存放信息的内存空间 *
+1 98 ;将被释放 *
+1 99 ;SJA1000发出一个中断信号到微控制器*
+1 100 ;=0,; *
+1 101
0008 +1 102 BIT_COS EQU 08H ;清除超载状态位,命令寄存器的第3位 *
+1 103 ;=1,;清除超载状态 *
+1 104 ;=0,; *
+1 105
0010 +1 106 BIT_GTS EQU 10H ;睡眠位; 命令寄存器的第4位 *
+1 107 ;=1,;如果没有CAN中断等待和总线活动, *
+1 108 ;SJA1000进入睡眠模式 *
+1 109 ;=0,; *
+1 110 ;BIT_5 ;系统保留位 *
+1 111 ;BIT_6 ;系统保留位 *
+1 112 ;BIT_7 ;系统保留位 *
+1 113
+1 114 ;状态寄存器;;;复位模式、工作模式 可进行读 ; 写操作无效 *
FA02 +1 115 REG_STATUS EQU CONTROLLER_BASE+02H ;内部状态寄存器地址; *
+1 116
0001 +1 117 BIT_RBS EQU 01H ;接收缓冲器状态位,状态寄存器的第0位 *
+1 118 ;=1,;RXFIFO中有可用信息 *
+1 119 ;=0,;无可用信息 *
+1 120
0002 +1 121 BIT_DOS EQU 02H ;超载状态位,状态寄存器的第1位 *
+1 122 ;=1,;信息丢失,因为RXFIFO中没有足够的 *
+1 123 ;空间来存储它 *
A51 MACRO ASSEMBLER TEST3 06/03/2003 11:04:01 PAGE 3
+1 124 ;=0,;自从最后一次清除数据溢出命令执行,
+1 125 ;无数据溢出发生
+1 126
0004 +1 127 BIT_TBS EQU 04H ;发送缓冲器状态位,状态寄存器的第2位 *
+1 128 ;=1,;CPU可以向发送缓冲器写信息 *
+1 129 ;=0,;CPU不能访问发送缓冲器;有信息正 *
+1 130 ;在等待发送或正在发送 *
+1 131
0008 +1 132 BIT_TCS EQU 08H ;发送完毕状态位,状态寄存器的第3位 *
+1 133 ;=1,;最近一次发送请求被成功处理 *
+1 134 ;=0,;当前发送请求未处理完毕 *
+1 135
0010 +1 136 BIT_RS EQU 10H ;接收状态位; 状态寄存器的第4位 *
+1 137 ;=1,;SJA1000正在接收信息 *
+1 138 ;=0,;没有正在接收的信息 *
+1 139
0020 +1 140 BIT_TS EQU 20H ;发送状态位; 状态寄存器的第4位 *
+1 141 ;=1,;SJA1000正在发送信息 *
+1 142 ;=0,;没有正在发送的信息 *
+1 143
0040 +1 144 BIT_ES EQU 40H ;出错状态位; 状态寄存器的第4位 *
+1 145 ;=1,;至少出现一个错误计数器满或超过 *
+1 146 ;CPU报警限制 *
+1 147 ;=0,;两个错误计数器都在报警限制以下 *
+1 148
0080 +1 149 BIT_BS EQU 80H ;总线状态位; 状态寄存器的第4位 *
+1 150 ;=1,;总线关闭;SJA1000退出总线活动 *
+1 151 ;=0,;总线开启;SJA1000加入总线活动 *
+1 152
+1 153 ;中断寄存器允许中断源的识别;;; 只读 *
FA03 +1 154 REG_INTERRUPT EQU CONTROLLER_BASE+03H ;内部中断寄存器地址; *
+1 155
0001 +1 156 BIT_RI EQU 01H ;接收中断位,中断寄存器的第0位 *
+1 157 ;=1,;;当接收FIFO不空和接收中断 *
+1 158 ;使能时置位此位 *
+1 159 ;=0,;无可用信息 *
+1 160
0002 +1 161 BIT_TI EQU 02H ;发送中断位,中断寄存器的第1位 *
+1 162 ;=1,;发送缓冲器状态从0变为1(释放) *
+1 163 ;和发送中断使能时,置位此位 *
+1 164 ;=0,;微控制器的任何读访问将清除此位 *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -