📄 boot832.lst
字号:
E072 F8 190 MOV R0, A
E073 D9F8 191 DJNZ R1, READDATA ; REPEAT 256 TIMES
192
193 ; verify checksum
E075 11FA 194 ACALL RECBYTE
E077 28 195 ADD A, R0
E078 F8 196 MOV R0, A
E079 6002 197 JZ DOWNLOADCHECKSUMOK
E07B 210E 198 AJMP SENDNACK
199
E07D 200 DOWNLOADCHECKSUMOK:
201 ; program page
E07D 75B902 202 MOV ECON, #2
203
204 ; verify download
E080 75A754 205 MOV DPCON, #54H ; main DPTR in auto INC mode
206 ; shadow DPTR in auto INC mode
207 ; DPTR in aut toggle mode
E083 900000 208 MOV DPTR, #0 ; main DPTR=0 (XRAM)
E086 05A7 209 INC DPCON ; select shadow DPTR
E088 85C783 210 MOV DPH, EADRH ; shadow DPTR (CODE)
E08B 758200 211 MOV DPL, #0
E08E 7800 212 MOV R0, #0
213
E090 214 VERIFYDOWNLOADLOOP:
215 ; read code memory
E090 E4 216 CLR A
E091 93 217 MOVC A, @A+DPTR ; swap to main DPTR
E092 F5F0 218 MOV B, A
E094 E0 219 MOVX A, @DPTR
E095 B5F007 220 CJNE A, B, JMPSENDNACK
E098 D8F6 221 DJNZ R0, VERIFYDOWNLOADLOOP
E09A 75A700 222 MOV DPCON, #0
223
E09D 210A 224 AJMP SENDACK
225
E09F 226 JMPSENDNACK:
E09F 210E 227 AJMP SENDNACK
228
229 ;====================================================================
230 ; DOWNLOAD OK COMMAND
231 ;====================================================================
E0A1 232 DOWNLOADOKCOMMAND:
BOOT832 PAGE 5
233 ; wait for Download OK command
234 ; <'O'><CS>
E0A1 12E0FA 235 CALL RECBYTE
E0A4 244F 236 ADD A,#'O'
E0A6 6002 237 JZ EXITULOADMODE
E0A8 210E 238 AJMP SENDNACK
239
E0AA 240 EXITULOADMODE:
241 ; exit ULOAD mode
E0AA 75B90F 242 MOV ECON, #0Fh
243
E0AD 244 DOWNLOADOK:
245 ; clear BOOTEN
E0AD 75C700 246 MOV EADRH, #0
E0B0 75C600 247 MOV EADRL, #0
E0B3 75B901 248 MOV ECON, #1 ; read page
E0B6 53BCFE 249 ANL EDATA1, #0FEh ; clear LSB
E0B9 75B905 250 MOV ECON, #5 ; ERASE page
E0BC 75B902 251 MOV ECON, #2 ; program page
E0BF 75B904 252 MOV ECON, #4 ; verify page
E0C2 E5B9 253 MOV A, ECON
E0C4 6002 254 JZ BOOTENCLEAR
E0C6 210E 255 AJMP SENDNACK
256
E0C8 257 BOOTENCLEAR:
258 ; send an ACK
E0C8 7406 259 MOV A, #ACK
E0CA 12E102 260 CALL SENDBYTE
E0CD 3099FD 261 JNB TI, $ ; disabling UART shortly
262 ; => wait for char to send
263
E0D0 264 RESETSFR:
265 ; reset SFRs
E0D0 E4 266 CLR A
E0D1 F5F0 267 MOV B, A
E0D3 F5D0 268 MOV PSW, A
E0D5 F5C7 269 MOV EADRH, A
E0D7 F5C6 270 MOV EADRL, A
E0D9 F5BC 271 MOV EDATA1, A
E0DB F5BD 272 MOV EDATA2, A
E0DD F5BE 273 MOV EDATA3, A
E0DF F5BF 274 MOV EDATA4, A
E0E1 75A701 275 MOV DPCON, #1
E0E4 900000 276 MOV DPTR, #0 ; clear shadow DPTR
E0E7 F5A7 277 MOV DPCON, A
E0E9 900000 278 MOV DPTR, #0 ; clear main DPTR
E0EC F5AF 279 MOV CFG832, A
E0EE 75D703 280 MOV PLLCON, #3 ; run core at max speed
E0F1 F59E 281 MOV T3CON, A
E0F3 F59E 282 MOV T3CON, A
E0F5 F598 283 MOV SCON, A
284
285 ; jump to 0000H
E0F7 020000 286 LJMP 0000H
287
288 ;====================================================================
289 ; FUNCTIONS
290 ;====================================================================
BOOT832 PAGE 6
291 ;____________________________________________________________________
292 ; RECBYTE
E0FA 293 RECBYTE: ; waits for a single ASCII character to be received
294 ; by the UART. places this character into A.
295
E0FA 3098FD 296 JNB RI,$
E0FD E599 297 MOV A,SBUF
E0FF C298 298 CLR RI
299
E101 22 300 RET
301 ;____________________________________________________________________
302 ; SENDBYTE
E102 303 SENDBYTE: ; sends ASCII value contained in A to UART
304
E102 3099FD 305 JNB TI,$ ; wait til present char gone
E105 C299 306 CLR TI ; must clear TI
E107 F599 307 MOV SBUF,A
308
E109 22 309 RET
310 ;____________________________________________________________________
311 ; SENDACK/SENDNACK
E10A 312 SENDACK:
E10A 7406 313 MOV A, #ACK
E10C 2110 314 AJMP CONTSENDACK
E10E 315 SENDNACK:
E10E 7415 316 MOV A, #NACK
E110 317 CONTSENDACK:
E110 3102 318 ACALL SENDBYTE
319
E112 012E 320 AJMP GETCOMMAND
321 ;____________________________________________________________________
322
323 END
VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
BOOT832 PAGE 7
ACC. . . . . . . . . . . . . . . D ADDR 00E0H PREDEFINED
ACK. . . . . . . . . . . . . . . NUMB 0006H
ADDRESSOK. . . . . . . . . . . . C ADDR E065H
B. . . . . . . . . . . . . . . . D ADDR 00F0H PREDEFINED
BLINK. . . . . . . . . . . . . . C ADDR 0040H
BOOTENCLEAR. . . . . . . . . . . C ADDR E0C8H
BOOTLOADER . . . . . . . . . . . C ADDR E01AH
CFG832 . . . . . . . . . . . . . D ADDR 00AFH PREDEFINED
CONTSENDACK. . . . . . . . . . . C ADDR E110H
DELAY. . . . . . . . . . . . . . C ADDR 0047H
DLY. . . . . . . . . . . . . . . C ADDR 0049H
DOWNLOADCHECKSUMOK . . . . . . . C ADDR E07DH
DOWNLOADCOMMAND. . . . . . . . . C ADDR E050H
DOWNLOADOK . . . . . . . . . . . C ADDR E0ADH NOT USED
DOWNLOADOKCOMMAND. . . . . . . . C ADDR E0A1H
DPCON. . . . . . . . . . . . . . D ADDR 00A7H PREDEFINED
DPH. . . . . . . . . . . . . . . D ADDR 0083H PREDEFINED
DPL. . . . . . . . . . . . . . . D ADDR 0082H PREDEFINED
EA . . . . . . . . . . . . . . . B ADDR 00AFH PREDEFINED
EADRH. . . . . . . . . . . . . . D ADDR 00C7H PREDEFINED
EADRL. . . . . . . . . . . . . . D ADDR 00C6H PREDEFINED
ECON . . . . . . . . . . . . . . D ADDR 00B9H PREDEFINED
EDATA1 . . . . . . . . . . . . . D ADDR 00BCH PREDEFINED
EDATA2 . . . . . . . . . . . . . D ADDR 00BDH PREDEFINED
EDATA3 . . . . . . . . . . . . . D ADDR 00BEH PREDEFINED
EDATA4 . . . . . . . . . . . . . D ADDR 00BFH PREDEFINED
ERASECOMMAND . . . . . . . . . . C ADDR E042H
ERASEOK. . . . . . . . . . . . . C ADDR E04BH
ERROR. . . . . . . . . . . . . . C ADDR 002DH
EX0. . . . . . . . . . . . . . . B ADDR 00A8H PREDEFINED
EXITULOADMODE. . . . . . . . . . C ADDR E0AAH
GETCOMMAND . . . . . . . . . . . C ADDR E02EH
IT0. . . . . . . . . . . . . . . B ADDR 0088H PREDEFINED
JMPSENDNACK. . . . . . . . . . . C ADDR E09FH
MAIN . . . . . . . . . . . . . . C ADDR 002EH
NACK . . . . . . . . . . . . . . NUMB 0015H
P3 . . . . . . . . . . . . . . . D ADDR 00B0H PREDEFINED
PLLCON . . . . . . . . . . . . . D ADDR 00D7H PREDEFINED
PSW. . . . . . . . . . . . . . . D ADDR 00D0H PREDEFINED
READDATA . . . . . . . . . . . . C ADDR E06DH
RECBYTE. . . . . . . . . . . . . C ADDR E0FAH
RESETSFR . . . . . . . . . . . . C ADDR E0D0H NOT USED
RI . . . . . . . . . . . . . . . B ADDR 0098H PREDEFINED
SBUF . . . . . . . . . . . . . . D ADDR 0099H PREDEFINED
SCON . . . . . . . . . . . . . . D ADDR 0098H PREDEFINED
SENDACK. . . . . . . . . . . . . C ADDR E10AH
SENDBYTE . . . . . . . . . . . . C ADDR E102H
SENDNACK . . . . . . . . . . . . C ADDR E10EH
T3CON. . . . . . . . . . . . . . D ADDR 009EH PREDEFINED
T3FD . . . . . . . . . . . . . . D ADDR 009DH PREDEFINED
TI . . . . . . . . . . . . . . . B ADDR 0099H PREDEFINED
VERIFYDOWNLOADLOOP . . . . . . . C ADDR E090H
WDCON. . . . . . . . . . . . . . D ADDR 00C0H PREDEFINED
WDWR . . . . . . . . . . . . . . B ADDR 00C0H PREDEFINED
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -