📄 11bitsp.lst
字号:
11BITSP PAGE 1
1 ;********************************************************************
2 ;
3 ; Author : ADI - Apps www.analog.com/MicroConverter
4 ;
5 ; Date : October 2003
6 ;
7 ; File : 11BITSP.asm
8 ;
9 ; Hardware : ADuC842
10 ;
11 ; Description : Sample Program to show the new ADuC842 feature
12 ; of the extended 11-bit Stack Pointer
13 ;
14 ;********************************************************************
15
16 $MOD842 ; Use 8052&ADuC842 predefined symbols
17
00B4 18 LED EQU P3.4 ; P3.4 drives red LED on eval board
19
20 ;____________________________________________________________________
21 ; BEGINNING OF CODE
---- 22 CSEG
23
0000 24 ORG 0000h
25
26 ; Configure UART at 2.097152MHz (defualt pll value)
0000 759E83 27 MOV T3CON,#83h
0003 759D2D 28 MOV T3FD,#02Dh
0006 759852 29 MOV SCON,#52h
30
31 ; enable the intenal On-Chip XRAM
32
0009 43AF01 33 ORL CFG842, #01h
34
000C 9000F8 35 MOV DPTR, #STACK8MSG
000F 1200B6 36 CALL SENDSTRING
37
38 ; initialise SP
0012 7581F0 39 MOV SP, #0F0h
0015 1200A1 40 CALL SENDSP
41
0018 12002F 42 CALL LEVEL1
001B 1200A1 43 CALL SENDSP ; stack should be back at F0 here
44 ; (it will print as F2 because calling SENDSP
45 ; will increment the stack twice)
46
47 ; now enable the stack to rollover into XRAM
001E 43AF80 48 ORL CFG842, #80h
49
0021 90010F 50 MOV DPTR, #STACK11MSG
0024 1200B6 51 CALL SENDSTRING
52
53 ; print out new stack tree
0027 12002F 54 CALL LEVEL1
002A 1200A1 55 CALL SENDSP
002D 80FE 56 JMP $ ; will eventually return to here
57
58
11BITSP PAGE 2
002F 59 LEVEL1:
002F 1200A1 60 CALL SENDSP
0032 120039 61 CALL LEVEL2
0035 1200A1 62 CALL SENDSP
0038 22 63 RET
0039 64 LEVEL2:
0039 1200A1 65 CALL SENDSP
003C 120043 66 CALL LEVEL3
003F 1200A1 67 CALL SENDSP
0042 22 68 RET
0043 69 LEVEL3:
0043 1200A1 70 CALL SENDSP
0046 12004D 71 CALL LEVEL4
0049 1200A1 72 CALL SENDSP
004C 22 73 RET
004D 74 LEVEL4:
004D 1200A1 75 CALL SENDSP
0050 120057 76 CALL LEVEL5
0053 1200A1 77 CALL SENDSP
0056 22 78 RET
0057 79 LEVEL5:
0057 1200A1 80 CALL SENDSP
005A 120061 81 CALL LEVEL6
005D 1200A1 82 CALL SENDSP
0060 22 83 RET
0061 84 LEVEL6:
0061 1200A1 85 CALL SENDSP
0064 12006B 86 CALL LEVEL7
0067 1200A1 87 CALL SENDSP
006A 22 88 RET
006B 89 LEVEL7:
006B 1200A1 90 CALL SENDSP
006E 120075 91 CALL LEVEL8
0071 1200A1 92 CALL SENDSP
0074 22 93 RET
0075 94 LEVEL8:
0075 1200A1 95 CALL SENDSP
0078 12007F 96 CALL LEVEL9
007B 1200A1 97 CALL SENDSP
007E 22 98 RET
007F 99 LEVEL9:
007F 1200A1 100 CALL SENDSP
0082 120089 101 CALL LEVEL10
0085 1200A1 102 CALL SENDSP
0088 22 103 RET
0089 104 LEVEL10:
0089 1200A1 105 CALL SENDSP
008C 120093 106 CALL LEVEL11
008F 1200A1 107 CALL SENDSP
0092 22 108 RET
0093 109 LEVEL11:
0093 1200A1 110 CALL SENDSP
0096 12009D 111 CALL LEVEL12
0099 1200A1 112 CALL SENDSP
009C 22 113 RET
009D 114 LEVEL12:
009D 1200A1 115 CALL SENDSP
00A0 22 116 RET
11BITSP PAGE 3
117
118
119 ;____________________________________________________________________
120 ; SENDSP
00A1 121 SENDSP:
122 ; send line feed
00A1 740A 123 MOV A, #10
00A3 1200E4 124 CALL SENDCHAR
00A6 740D 125 MOV A, #13
00A8 1200E4 126 CALL SENDCHAR
127 ; send SP
00AB E5B7 128 MOV A, SPH
00AD 1200CE 129 CALL SENDVAL
00B0 E581 130 MOV A, SP
00B2 1200CE 131 CALL SENDVAL
00B5 22 132 RET
133 ;____________________________________________________________________
134 ; SENDSTRING
135
00B6 136 SENDSTRING: ; sends ASCII string to UART starting at location
137 ; DPTR and ending with a null (0) value
138
00B6 C0E0 139 PUSH ACC
00B8 C0F0 140 PUSH B
00BA E4 141 CLR A
00BB F5F0 142 MOV B,A
00BD E5F0 143 IO0010: MOV A,B
00BF 05F0 144 INC B
00C1 93 145 MOVC A,@A+DPTR
00C2 6005 146 JZ IO0020
00C4 1200E4 147 CALL SENDCHAR
00C7 80F4 148 JMP IO0010
00C9 D0F0 149 IO0020: POP B
00CB D0E0 150 POP ACC
151
00CD 22 152 RET
153
154 ;____________________________________________________________________
155 ; SENDVAL
156
00CE 157 SENDVAL: ; converts the hex value of A into two ASCII chars,
158 ; and then spits these two characters up the UART.
159 ; does not change the value of A.
160
00CE C0E0 161 PUSH ACC
00D0 C4 162 SWAP A
00D1 1200EC 163 CALL HEX2ASCII
00D4 1200E4 164 CALL SENDCHAR ; send high nibble
00D7 D0E0 165 POP ACC
00D9 C0E0 166 PUSH ACC
00DB 1200EC 167 CALL HEX2ASCII
00DE 1200E4 168 CALL SENDCHAR ; send low nibble
00E1 D0E0 169 POP ACC
170
00E3 22 171 RET
172 ;____________________________________________________________________
173 ; SENDCHAR
174
11BITSP PAGE 4
00E4 175 SENDCHAR: ; sends ASCII value contained in A to UART
176
00E4 3099FD 177 JNB TI,$ ; wait til present char gone
00E7 C299 178 CLR TI ; must clear TI
00E9 F599 179 MOV SBUF,A
180
00EB 22 181 RET
182 ;____________________________________________________________________
183 ; HEX2ASCII
184
00EC 185 HEX2ASCII: ; converts A into the hex character representing the
186 ; value of A's least significant nibble
187
00EC 540F 188 ANL A,#00Fh
00EE B40A00 189 CJNE A,#00Ah,$+3
00F1 4002 190 JC IO0030
00F3 2407 191 ADD A,#007h
00F5 2430 192 IO0030: ADD A,#'0'
193
00F7 22 194 RET
195
196
197
198 ;____________________________________________________________________
199
00F8 0A0A0D38 200 STACK8MSG: DB 10,10,13,'8-BIT STACK POINTER',0
00FC 2D424954
0100 20535441
0104 434B2050
0108 4F494E54
010C 455200
010F 0A0A0D31 201 STACK11MSG: DB 10,10,13,'11-BIT STACK POINTER',0
0113 312D4249
0117 54205354
011B 41434B20
011F 504F494E
0123 54455200
202
203
204 END
VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
11BITSP PAGE 5
ACC. . . . . . . . . . . . . . . D ADDR 00E0H PREDEFINED
B. . . . . . . . . . . . . . . . D ADDR 00F0H PREDEFINED
CFG842 . . . . . . . . . . . . . D ADDR 00AFH PREDEFINED
HEX2ASCII. . . . . . . . . . . . C ADDR 00ECH
IO0010 . . . . . . . . . . . . . C ADDR 00BDH
IO0020 . . . . . . . . . . . . . C ADDR 00C9H
IO0030 . . . . . . . . . . . . . C ADDR 00F5H
LED. . . . . . . . . . . . . . . NUMB 00B4H NOT USED
LEVEL1 . . . . . . . . . . . . . C ADDR 002FH
LEVEL10. . . . . . . . . . . . . C ADDR 0089H
LEVEL11. . . . . . . . . . . . . C ADDR 0093H
LEVEL12. . . . . . . . . . . . . C ADDR 009DH
LEVEL2 . . . . . . . . . . . . . C ADDR 0039H
LEVEL3 . . . . . . . . . . . . . C ADDR 0043H
LEVEL4 . . . . . . . . . . . . . C ADDR 004DH
LEVEL5 . . . . . . . . . . . . . C ADDR 0057H
LEVEL6 . . . . . . . . . . . . . C ADDR 0061H
LEVEL7 . . . . . . . . . . . . . C ADDR 006BH
LEVEL8 . . . . . . . . . . . . . C ADDR 0075H
LEVEL9 . . . . . . . . . . . . . C ADDR 007FH
P3 . . . . . . . . . . . . . . . D ADDR 00B0H PREDEFINED
SBUF . . . . . . . . . . . . . . D ADDR 0099H PREDEFINED
SCON . . . . . . . . . . . . . . D ADDR 0098H PREDEFINED
SENDCHAR . . . . . . . . . . . . C ADDR 00E4H
SENDSP . . . . . . . . . . . . . C ADDR 00A1H
SENDSTRING . . . . . . . . . . . C ADDR 00B6H
SENDVAL. . . . . . . . . . . . . C ADDR 00CEH
SP . . . . . . . . . . . . . . . D ADDR 0081H PREDEFINED
SPH. . . . . . . . . . . . . . . D ADDR 00B7H PREDEFINED
STACK11MSG . . . . . . . . . . . C ADDR 010FH
STACK8MSG. . . . . . . . . . . . C ADDR 00F8H
T3CON. . . . . . . . . . . . . . D ADDR 009EH PREDEFINED
T3FD . . . . . . . . . . . . . . D ADDR 009DH PREDEFINED
TI . . . . . . . . . . . . . . . B ADDR 0099H PREDEFINED
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -