📄 dualdptr.lst
字号:
DUALDPTR PAGE 1
1 ;********************************************************************
2 ;
3 ; Author : ADI - Apps www.analog.com/MicroConverter
4 ;
5 ; Date : October 2003
6 ;
7 ; File : DualDPTR.asm
8 ;
9 ; Hardware : ADuC842/ADuC843
10 ;
11 ; Description : Sample Program to show the new ADuC842 features
12 ; of dual DPTRs.
13 ;
14 ;********************************************************************
15
16 $MOD842 ; Use 8052&ADuC832 predefined symbols
00B4 17 LED EQU P3.4 ; P3.4 drives red LED on eval board
18
19 ;____________________________________________________________________
20 ; BEGINNING OF CODE
---- 21 CSEG
22
0000 23 ORG 0000h
0000 75D703 24 MOV PLLCON,#03H
25 ; CONFIGURE UART....9600 buad at core clk of 2.097152MHz
26
0003 759E83 27 MOV T3CON,#83h
0006 759D2D 28 MOV T3FD,#2Dh
0009 759852 29 MOV SCON,#52h
30
31 ; enable the intenal On-Chip XRAM
32
000C 43AF01 33 ORL CFG842, #01h
34
35 ; move 512 bytes from code memory (adress 1000h -> 1200h) into
36 ; data XRAM (address 0000h -> 0200h)
37 ; configure the datapointer
000F 900000 38 MOV DPTR, #0
0012 75A755 39 MOV DPCON, #55h ; auto toggle between DPTRs
40 ; auto increment shadow DPTR
41 ; auto increment main DPTR
42 ; select shadow DPTR
0015 901000 43 MOV DPTR, #1000h
44
0018 45 COPYDATALOOP:
46 ; read Code Memory using Shadow DPTR
0018 E4 47 CLR A
0019 93 48 MOVC A, @A+DPTR ; read code memory
49 ; auto increment shadow DPTR
50 ; swap to main DPTR
51 ; write to XRAM using main DPTR
001A F0 52 MOVX @DPTR, A ; write to XRAM
53 ; auto increment main DPTR
54 ; swap to shadow DPTR
55 ; check if at end of loop
56 ; NOTE: shadow DPTR selected (not main)
001B E583 57 MOV A, DPH
001D B412F8 58 CJNE A, #12h, COPYDATALOOP
DUALDPTR PAGE 2
59
60
0020 00 61 NOP ; <----NOTE: Set a breakpoint in the debugger here
62 ; This will show that the values in code memory
63 ; at addresses 1000h thru 1200h has been mapped
64 ; into XRAM at address 0000h thru 0200h.
65 ; The debugger will not run the nextpiece of
66 ; code as this requires the use of the serial port
67
68
69
70
71 ; transmit XRAM up UART
0021 75A704 72 MOV DPCON, #4 ; select main DPTR
73 ; auto increment DPTR
74 ; do not toggle DPTR
0024 900000 75 MOV DPTR, #0
0027 7810 76 MOV R0, #16
0029 77 SENDXRAM:
0029 E0 78 MOVX A, @DPTR
002A 120042 79 CALL SENDVAL
002D D8FA 80 DJNZ R0, SENDXRAM
81 ; send a newline
002F 740A 82 MOV A, #10
0031 120058 83 CALL SENDCHAR
0034 740D 84 MOV A, #13
0036 120058 85 CALL SENDCHAR
0039 7810 86 MOV R0, #16
003B E583 87 MOV A, DPH
003D B402E9 88 CJNE A, #2, SENDXRAM
89
0040 80FE 90 JMP $
91
92
93 ;____________________________________________________________________
94 ; SENDVAL
95
0042 96 SENDVAL: ; converts the hex value of A into two ASCII chars,
97 ; and then spits these two characters up the UART.
98 ; does not change the value of A.
99
0042 C0E0 100 PUSH ACC
0044 C4 101 SWAP A
0045 120060 102 CALL HEX2ASCII
0048 120058 103 CALL SENDCHAR ; send high nibble
004B D0E0 104 POP ACC
004D C0E0 105 PUSH ACC
004F 120060 106 CALL HEX2ASCII
0052 120058 107 CALL SENDCHAR ; send low nibble
0055 D0E0 108 POP ACC
109
0057 22 110 RET
111 ;____________________________________________________________________
112 ; SENDCHAR
113
0058 114 SENDCHAR: ; sends ASCII value contained in A to UART
115
0058 3099FD 116 JNB TI,$ ; wait til present char gone
DUALDPTR PAGE 3
005B C299 117 CLR TI ; must clear TI
005D F599 118 MOV SBUF,A
119
005F 22 120 RET
121 ;____________________________________________________________________
122 ; HEX2ASCII
123
0060 124 HEX2ASCII: ; converts A into the hex character representing the
125 ; value of A's least significant nibble
126
0060 540F 127 ANL A,#00Fh
0062 B40A00 128 CJNE A,#00Ah,$+3
0065 4002 129 JC IO0030
0067 2407 130 ADD A,#007h
0069 2430 131 IO0030: ADD A,#'0'
132
006B 22 133 RET
134 ;____________________________________________________________________
1000 135 ORG 1000h
136
1000 00010203 137 DB 00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh
1004 04050607
1008 08090A0B
100C 0C0D0E0F
1010 10111213 138 DB 10h,11h,12h,13h,14h,15h,16h,17h,18h,19h,1Ah,1Bh,1Ch,1Dh,1Eh,1Fh
1014 14151617
1018 18191A1B
101C 1C1D1E1F
1020 20212223 139 DB 20h,21h,22h,23h,24h,25h,26h,27h,28h,29h,2Ah,2Bh,2Ch,2Dh,2Eh,2Fh
1024 24252627
1028 28292A2B
102C 2C2D2E2F
1030 30313233 140 DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh
1034 34353637
1038 38393A3B
103C 3C3D3E3F
1040 00010203 141 DB 00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh
1044 04050607
1048 08090A0B
104C 0C0D0E0F
1050 10111213 142 DB 10h,11h,12h,13h,14h,15h,16h,17h,18h,19h,1Ah,1Bh,1Ch,1Dh,1Eh,1Fh
1054 14151617
1058 18191A1B
105C 1C1D1E1F
1060 20212223 143 DB 20h,21h,22h,23h,24h,25h,26h,27h,28h,29h,2Ah,2Bh,2Ch,2Dh,2Eh,2Fh
1064 24252627
1068 28292A2B
106C 2C2D2E2F
1070 30313233 144 DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh
1074 34353637
1078 38393A3B
107C 3C3D3E3F
1080 00010203 145 DB 00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh
1084 04050607
1088 08090A0B
108C 0C0D0E0F
1090 10111213 146 DB 10h,11h,12h,13h,14h,15h,16h,17h,18h,19h,1Ah,1Bh,1Ch,1Dh,1Eh,1Fh
1094 14151617
DUALDPTR PAGE 4
1098 18191A1B
109C 1C1D1E1F
10A0 20212223 147 DB 20h,21h,22h,23h,24h,25h,26h,27h,28h,29h,2Ah,2Bh,2Ch,2Dh,2Eh,2Fh
10A4 24252627
10A8 28292A2B
10AC 2C2D2E2F
10B0 30313233 148 DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh
10B4 34353637
10B8 38393A3B
10BC 3C3D3E3F
10C0 00010203 149 DB 00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh
10C4 04050607
10C8 08090A0B
10CC 0C0D0E0F
10D0 10111213 150 DB 10h,11h,12h,13h,14h,15h,16h,17h,18h,19h,1Ah,1Bh,1Ch,1Dh,1Eh,1Fh
10D4 14151617
10D8 18191A1B
10DC 1C1D1E1F
10E0 20212223 151 DB 20h,21h,22h,23h,24h,25h,26h,27h,28h,29h,2Ah,2Bh,2Ch,2Dh,2Eh,2Fh
10E4 24252627
10E8 28292A2B
10EC 2C2D2E2F
10F0 30313233 152 DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh
10F4 34353637
10F8 38393A3B
10FC 3C3D3E3F
1100 00010203 153 DB 00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh
1104 04050607
1108 08090A0B
110C 0C0D0E0F
1110 10111213 154 DB 10h,11h,12h,13h,14h,15h,16h,17h,18h,19h,1Ah,1Bh,1Ch,1Dh,1Eh,1Fh
1114 14151617
1118 18191A1B
111C 1C1D1E1F
1120 20212223 155 DB 20h,21h,22h,23h,24h,25h,26h,27h,28h,29h,2Ah,2Bh,2Ch,2Dh,2Eh,2Fh
1124 24252627
1128 28292A2B
112C 2C2D2E2F
1130 30313233 156 DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh
1134 34353637
1138 38393A3B
113C 3C3D3E3F
1140 00010203 157 DB 00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh
1144 04050607
1148 08090A0B
114C 0C0D0E0F
1150 10111213 158 DB 10h,11h,12h,13h,14h,15h,16h,17h,18h,19h,1Ah,1Bh,1Ch,1Dh,1Eh,1Fh
1154 14151617
1158 18191A1B
115C 1C1D1E1F
1160 20212223 159 DB 20h,21h,22h,23h,24h,25h,26h,27h,28h,29h,2Ah,2Bh,2Ch,2Dh,2Eh,2Fh
1164 24252627
1168 28292A2B
116C 2C2D2E2F
1170 30313233 160 DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh
1174 34353637
1178 38393A3B
117C 3C3D3E3F
DUALDPTR PAGE 5
1180 00010203 161 DB 00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh
1184 04050607
1188 08090A0B
118C 0C0D0E0F
1190 10111213 162 DB 10h,11h,12h,13h,14h,15h,16h,17h,18h,19h,1Ah,1Bh,1Ch,1Dh,1Eh,1Fh
1194 14151617
1198 18191A1B
119C 1C1D1E1F
11A0 20212223 163 DB 20h,21h,22h,23h,24h,25h,26h,27h,28h,29h,2Ah,2Bh,2Ch,2Dh,2Eh,2Fh
11A4 24252627
11A8 28292A2B
11AC 2C2D2E2F
11B0 30313233 164 DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh
11B4 34353637
11B8 38393A3B
11BC 3C3D3E3F
11C0 00010203 165 DB 00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh
11C4 04050607
11C8 08090A0B
11CC 0C0D0E0F
11D0 10111213 166 DB 10h,11h,12h,13h,14h,15h,16h,17h,18h,19h,1Ah,1Bh,1Ch,1Dh,1Eh,1Fh
11D4 14151617
11D8 18191A1B
11DC 1C1D1E1F
11E0 20212223 167 DB 20h,21h,22h,23h,24h,25h,26h,27h,28h,29h,2Ah,2Bh,2Ch,2Dh,2Eh,2Fh
11E4 24252627
11E8 28292A2B
11EC 2C2D2E2F
11F0 30313233 168 DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,3Ah,3Bh,3Ch,3Dh,3Eh,3Fh
11F4 34353637
11F8 38393A3B
11FC 3C3D3E3F
169
170
171 ;____________________________________________________________________
172
173 END
VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
DUALDPTR PAGE 6
ACC. . . . . . . . . . . . . . . D ADDR 00E0H PREDEFINED
CFG842 . . . . . . . . . . . . . D ADDR 00AFH PREDEFINED
COPYDATALOOP . . . . . . . . . . C ADDR 0018H
DPCON. . . . . . . . . . . . . . D ADDR 00A7H PREDEFINED
DPH. . . . . . . . . . . . . . . D ADDR 0083H PREDEFINED
HEX2ASCII. . . . . . . . . . . . C ADDR 0060H
IO0030 . . . . . . . . . . . . . C ADDR 0069H
LED. . . . . . . . . . . . . . . NUMB 00B4H NOT USED
P3 . . . . . . . . . . . . . . . D ADDR 00B0H PREDEFINED
PLLCON . . . . . . . . . . . . . D ADDR 00D7H PREDEFINED
SBUF . . . . . . . . . . . . . . D ADDR 0099H PREDEFINED
SCON . . . . . . . . . . . . . . D ADDR 0098H PREDEFINED
SENDCHAR . . . . . . . . . . . . C ADDR 0058H
SENDVAL. . . . . . . . . . . . . C ADDR 0042H
SENDXRAM . . . . . . . . . . . . C ADDR 0029H
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 + -