📄 rb.lst
字号:
A51 MACRO ASSEMBLER RB 23/07/99 16:57:48 PAGE 1
DOS MACRO ASSEMBLER A51 V5.28m
OBJECT MODULE PLACED IN RB.OBJ
ASSEMBLER INVOKED BY: C:\ANCHOR\KEIL2K\BIN\A51.EXE RB.A51 RB(0) DB EP
LOC OBJ LINE SOURCE
1 NAME ReaderBoard
2
3 $INCLUDE(../Declare.A51)
=1 4 ; This module declares the variables and constants used in the examples
=1 5 ; It is common to all of the examples
=1 6 ;
=1 7 ; Declare Special Function Registers used
00A8 =1 8 EI DATA 0A8H
00E8 =1 9 EIE DATA 0E8H ; EZ-USB specific
0091 =1 10 EXIF DATA 091H ; EZ-USB specific
00D8 =1 11 EICON DATA 0D8H ; EZ-USB specific
0092 =1 12 PageReg DATA 092H ; EZ-USB specific, used with MOVX @Ri
0086 =1 13 DPS DATA 086H ; EZ-USB specific, used with dual data pointers
=1 14 ;
=1 15 ; "External" memory locations used, EZ-USB specific
=1 16 ; Note that most of these variables are in Page 7FH
7FE8 =1 17 SETUPDAT EQU 07FE8H
7FD4 =1 18 SUDPTR EQU 07FD4H
7FB4 =1 19 EP0Control EQU 07FB4H
7F00 =1 20 EP0InBuffer EQU 07F00H
7EC0 =1 21 EP0OutBuffer EQU 07EC0H ; Not in Page 7FH
7E80 =1 22 EP1InBuffer EQU 07E80H ; Not in Page 7FH
7FB5 =1 23 IN0ByteCount EQU 07FB5H
7FC5 =1 24 Out0ByteCount EQU 07FC5H
7FB7 =1 25 IN1ByteCount EQU 07FB7H
7FAC =1 26 IN07IEN EQU 07FACH
7FA9 =1 27 IN07IRQ EQU 07FA9H
7FAD =1 28 OUT07IEN EQU 07FADH
7FAA =1 29 OUT07IRQ EQU 07FAAH
7FAE =1 30 USBIEN EQU 07FAEH
7FAB =1 31 USBIRQ EQU 07FABH
7FD6 =1 32 USBControl EQU 07FD6H
7FA6 =1 33 I2CData EQU 07FA6H
7FA5 =1 34 I2CControl EQU 07FA5H
7F93 =1 35 PortA_Config EQU 07F93H
7F94 =1 36 PortB_Config EQU 07F94H
7F95 =1 37 PortC_Config EQU 07F95H
7F96 =1 38 PortA_OUT EQU 07F96H
7F97 =1 39 PortB_OUT EQU 07F97H
7F98 =1 40 PortC_OUT EQU 07F98H
7F99 =1 41 PortA_PINS EQU 07F99H
7F9A =1 42 PortB_PINS EQU 07F9AH
7F9B =1 43 PortC_PINS EQU 07F9BH
7F9C =1 44 PortA_OE EQU 07F9CH
7F9D =1 45 PortB_OE EQU 07F9DH
7F9E =1 46 PortC_OE EQU 07F9EH
=1 47 ;
=1 48 ; Byte Variables
=1 49
---- =1 50 DSEG AT 20H
0020 =1 51 FLAGS: DS 1 ; This register is bit-addressable
=1 52 ; Bit Variables
0000 =1 53 Configured EQU FLAGS.0 ; Is this device configured
0001 =1 54 STALL EQU FLAGS.1 ; Need to STALL endpoint 0
0002 =1 55 SendData EQU FLAGS.2 ; Need to send data to PC Host
0003 =1 56 IsDescriptor EQU FLAGS.3 ; Enable a shortcut reply
=1 57 ;
0021 =1 58 MonitorSpace: DS 1FH ; Used by Dscope
A51 MACRO ASSEMBLER RB 23/07/99 16:57:48 PAGE 2
0040 =1 59 Temp: DS 1 ; A temporary working register
0041 =1 60 Idle_Time: DS 1 ; The time the PC host wants us to wait
0042 =1 61 Expired_Time: DS 1 ; A downcounter for timed Reports
0043 =1 62 ReplyBuffer: DS 3 ; First byte is Count
0046 =1 63 CurrentConfiguration:
0046 =1 64 DS 1 ; Some examples support > 1 configurations
=1 65 ;
=1 66 ; Declare the specific variables used by each of the examples
0047 =1 67 Overlay EQU $
0047 =1 68 Old_Buttons: DS 1 ; Used by BAL: stores current button position
0048 =1 69 LEDstrobe: DS 1 ; Used by BAL: strobe one LED on at a time
0049 =1 70 LEDvalue: DS 1 ; Used by BAL: stores current LED value
004A =1 71 Msec_Counter: DS 1 ; Used by BAL: counts up to 4 msec
=1 72
0047 =1 73 ORG Overlay ; Overlay the variables (only one set in use at any one tim
e)
0047 =1 74 I2CDataByte: DS 1 ; Used by I2C: keep a local copy of data read from I2C bus
=1 75
0047 =1 76 ORG Overlay
0047 =1 77 LightValues: DS 6 ; Used by LP: local buffer for light brightness
=1 78
0047 =1 79 ORG Overlay
0047 =1 80 CurrentPosition:DS 1 ; Used by Stepper: motor has 16 stable positions
0048 =1 81 MotorControl: DS 3 ; Used by Stepper: direction, Low(count) and High(count)
=1 82
0047 =1 83 ORG Overlay
0047 =1 84 LimitValues: DS 12 ; Used by Temps: local buffer for limits
=1 85
0047 =1 86 ORG Overlay
0047 =1 87 ButtonsValue: DS 1 ; Used by RB: buttons are read each full scan
0048 =1 88 DisplayPosition:DS 1 ; Used by RB: holds current display position
0049 =1 89 LEDBuffer: DS 42 ; Used by RB: local buffer for reader board
=1 90
=1 91 ;
92 $INCLUDE(../Vectors.A51)
=1 93 ; This module is common to all of the examples.
=1 94 ; It contains all of the interrupt vector declarations and
=1 95 ; the first level interrupt servicing (register save, call subroutine,
=1 96 ; clear interrupt source, restore registers, return)
=1 97 ; Suspend and Resume are handled totally in this module
=1 98 ;
=1 99 ; A Reset sends us to Program space location 0
---- =1 100 CSEG AT 0 ; Code space
=1 101 USING 0 ; Reset forces Register Bank 0
0000 020362 =1 102 LJMP Reset
=1 103 ;
=1 104 ; The interrupt vector table is also located here
=1 105 ; EZ-USB has two levels of USB interrupts:
=1 106 ; 1-the main level is described in this table (at ORG 43H)
=1 107 ; 2-there are 21 sources of USB interrupts and these are described in USB_ISR
=1 108 ; This means that two levels of acknowledgement and clearing will be required
=1 109 ; LJMP INT0_ISR ; Features not used are commented out
=1 110 ; ORG 0BH
=1 111 ; LJMP Timer0_ISR
=1 112 ; ORG 13H
=1 113 ; LJMP INT1_ISR
=1 114 ; ORG 1BH
=1 115 ; LJMP Timer1_ISR
=1 116 ; ORG 23H
=1 117 ; LJMP UART0_ISR
=1 118 ; ORG 2BH
=1 119 ; LJMP Timer2_ISR
=1 120 ; ORG 33H
=1 121 ; LJMP WakeUp_ISR
=1 122 ; ORG 3BH
=1 123 ; LJMP UART1_ISR
A51 MACRO ASSEMBLER RB 23/07/99 16:57:48 PAGE 3
0043 =1 124 ORG 43H
0043 020100 =1 125 LJMP USB_ISR ; Auto Vector will replace byte 45H
=1 126 ; ORG 4BH
=1 127 ; LJMP I2C_ISR
=1 128 ; ORG 53H
=1 129 ; LJMP INT4_ISR
=1 130 ; ORG 5BH
=1 131 ; LJMP INT5_ISR
=1 132 ; ORG 63H
=1 133 ; LJMP INT6_ISR
=1 134
00E0 =1 135 ORG 0E0H ; Keep out of the way of dScope monitor
=1 136 ; If you are not using dScope then this memory hole
=1 137 ; may be used for useful routines.
0100 =1 138 ORG 100H
0100 02013C =1 139 USB_ISR:LJMP SUDAV_ISR
0103 00 =1 140 DB 0 ; Pad entries to 4 bytes
0104 020158 =1 141 LJMP SOF_ISR
0107 00 =1 142 DB 0
0108 020118 =1 143 LJMP SUTOK_ISR
010B 00 =1 144 DB 0
010C 020129 =1 145 LJMP Suspend_ISR
010F 00 =1 146 DB 0
0110 020120 =1 147 LJMP USBReset_ISR
0113 00 =1 148 DB 0
0114 020118 =1 149 LJMP Reserved
0117 00 =1 150 DB 0
=1 151 ; LJMP EP0In_ISR ; Endpoint Interrupts are not used in these examples
=1 152 ; DB 0 ; Comment out features not used
=1 153 ; LJMP EP0Out_ISR
=1 154 ; DB 0
=1 155 ; LJMP EP1In_ISR
=1 156 ; DB 0
=1 157 ; LJMP EP1Out_ISR
=1 158 ; DB 0
=1 159 ; LJMP EP2In_ISR
=1 160 ; DB 0
=1 161 ; LJMP EP2Out_ISR
=1 162 ; DB 0
=1 163 ; LJMP EP3In_ISR
=1 164 ; DB 0
=1 165 ; LJMP EP3Out_ISR
=1 166 ; DB 0
=1 167 ; LJMP EP4In_ISR
=1 168 ; DB 0
=1 169 ; LJMP EP4Out_ISR
=1 170 ; DB 0
=1 171 ; LJMP EP5In_ISR
=1 172 ; DB 0
=1 173 ; LJMP EP5Out_ISR
=1 174 ; DB 0
=1 175 ; LJMP EP6In_ISR
=1 176 ; DB 0
=1 177 ; LJMP EP6Out_ISR
=1 178 ; DB 0
=1 179 ; LJMP EP7In_ISR
=1 180 ; DB 0
=1 181 ; LJMP EP7Out_ISR
=1 182 ; End of Interrupt Vector tables
=1 183
=1 184 ; When a feature is used insert the required interrupt processing here
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -