📄 boot831.lst
字号:
E070 D9F8 188 DJNZ R1, READDATA ; REPEAT 256 TIMES
189
190 ; verify checksum
E072 11F5 191 ACALL RECBYTE
E074 28 192 ADD A, R0
E075 F8 193 MOV R0, A
E076 6002 194 JZ DOWNLOADCHECKSUMOK
E078 2109 195 AJMP SENDNACK
196
E07A 197 DOWNLOADCHECKSUMOK:
198 ; program page
E07A 75B902 199 MOV ECON, #2
200
201 ; verify download
E07D 75A754 202 MOV DPCON, #54H ; main DPTR in auto INC mode
203 ; shadow DPTR in auto INC mode
204 ; DPTR in aut toggle mode
E080 900000 205 MOV DPTR, #0 ; main DPTR=0 (XRAM)
E083 05A7 206 INC DPCON ; select shadow DPTR
E085 85C783 207 MOV DPH, EADRH ; shadow DPTR (CODE)
E088 758200 208 MOV DPL, #0
E08B 7800 209 MOV R0, #0
210
E08D 211 VERIFYDOWNLOADLOOP:
212 ; read code memory
E08D E4 213 CLR A
E08E 93 214 MOVC A, @A+DPTR ; swap to main DPTR
E08F F5F0 215 MOV B, A
E091 E0 216 MOVX A, @DPTR
E092 B5F007 217 CJNE A, B, JMPSENDNACK
E095 D8F6 218 DJNZ R0, VERIFYDOWNLOADLOOP
E097 75A700 219 MOV DPCON, #0
220
E09A 2105 221 AJMP SENDACK
222
E09C 223 JMPSENDNACK:
E09C 2109 224 AJMP SENDNACK
225
226 ;====================================================================
227 ; DOWNLOAD OK COMMAND
228 ;====================================================================
E09E 229 DOWNLOADOKCOMMAND:
230 ; wait for Download OK command
231 ; <'O'><CS>
E09E 12E0F5 232 CALL RECBYTE
BOOT831 PAGE 5
E0A1 244F 233 ADD A,#'O'
E0A3 6002 234 JZ EXITULOADMODE
E0A5 2109 235 AJMP SENDNACK
236
E0A7 237 EXITULOADMODE:
238 ; exit ULOAD mode
E0A7 75B90F 239 MOV ECON, #0Fh
240
E0AA 241 DOWNLOADOK:
242 ; clear BOOTEN
E0AA 75C700 243 MOV EADRH, #0
E0AD 75C600 244 MOV EADRL, #0
E0B0 75B901 245 MOV ECON, #1 ; read page
E0B3 53BCFE 246 ANL EDATA1, #0FEh ; clear LSB
E0B6 75B905 247 MOV ECON, #5 ; ERASE page
E0B9 75B902 248 MOV ECON, #2 ; program page
E0BC 75B904 249 MOV ECON, #4 ; verify page
E0BF E5B9 250 MOV A, ECON
E0C1 6002 251 JZ BOOTENCLEAR
E0C3 2109 252 AJMP SENDNACK
253
E0C5 254 BOOTENCLEAR:
255 ; send an ACK
E0C5 7406 256 MOV A, #ACK
E0C7 12E0FD 257 CALL SENDBYTE
E0CA 3099FD 258 JNB TI, $ ; disabling UART shortly
259 ; => wait for char to send
260
E0CD 261 RESETSFR:
262 ; reset SFRs
E0CD E4 263 CLR A
E0CE F5F0 264 MOV B, A
E0D0 F5D0 265 MOV PSW, A
E0D2 F5C7 266 MOV EADRH, A
E0D4 F5C6 267 MOV EADRL, A
E0D6 F5BC 268 MOV EDATA1, A
E0D8 F5BD 269 MOV EDATA2, A
E0DA F5BE 270 MOV EDATA3, A
E0DC F5BF 271 MOV EDATA4, A
E0DE 75A701 272 MOV DPCON, #1
E0E1 900000 273 MOV DPTR, #0 ; clear shadow DPTR
E0E4 F5A7 274 MOV DPCON, A
E0E6 900000 275 MOV DPTR, #0 ; clear main DPTR
E0E9 63AF01 276 XRL CFG831,#01H
E0EC F59E 277 MOV T3CON, A
E0EE F59E 278 MOV T3CON, A
E0F0 F598 279 MOV SCON, A
280
281 ; jump to 0000H
E0F2 020000 282 LJMP 0000H
283
284 ;====================================================================
285 ; FUNCTIONS
286 ;====================================================================
287 ;____________________________________________________________________
288 ; RECBYTE
E0F5 289 RECBYTE: ; waits for a single ASCII character to be received
290 ; by the UART. places this character into A.
BOOT831 PAGE 6
291
E0F5 3098FD 292 JNB RI,$
E0F8 E599 293 MOV A,SBUF
E0FA C298 294 CLR RI
295
E0FC 22 296 RET
297 ;____________________________________________________________________
298 ; SENDBYTE
E0FD 299 SENDBYTE: ; sends ASCII value contained in A to UART
300
E0FD 3099FD 301 JNB TI,$ ; wait til present char gone
E100 C299 302 CLR TI ; must clear TI
E102 F599 303 MOV SBUF,A
304
E104 22 305 RET
306 ;____________________________________________________________________
307 ; SENDACK/SENDNACK
E105 308 SENDACK:
E105 7406 309 MOV A, #ACK
E107 210B 310 AJMP CONTSENDACK
E109 311 SENDNACK:
E109 7415 312 MOV A, #NACK
E10B 313 CONTSENDACK:
E10B 11FD 314 ACALL SENDBYTE
315
E10D 012B 316 AJMP GETCOMMAND
317 ;____________________________________________________________________
318
319 END
VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND
BOOT831 PAGE 7
ACC. . . . . . . . . . . . . . . D ADDR 00E0H PREDEFINED
ACK. . . . . . . . . . . . . . . NUMB 0006H
ADDRESSOK. . . . . . . . . . . . C ADDR E062H
B. . . . . . . . . . . . . . . . D ADDR 00F0H PREDEFINED
BLINK. . . . . . . . . . . . . . C ADDR 003DH
BOOTENCLEAR. . . . . . . . . . . C ADDR E0C5H
BOOTLOADER . . . . . . . . . . . C ADDR E01AH
CFG831 . . . . . . . . . . . . . D ADDR 00AFH PREDEFINED
CONTSENDACK. . . . . . . . . . . C ADDR E10BH
DELAY. . . . . . . . . . . . . . C ADDR 0044H
DLY. . . . . . . . . . . . . . . C ADDR 0046H
DOWNLOADCHECKSUMOK . . . . . . . C ADDR E07AH
DOWNLOADCOMMAND. . . . . . . . . C ADDR E04DH
DOWNLOADOK . . . . . . . . . . . C ADDR E0AAH NOT USED
DOWNLOADOKCOMMAND. . . . . . . . C ADDR E09EH
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 E03FH
ERASEOK. . . . . . . . . . . . . C ADDR E048H
ERROR. . . . . . . . . . . . . . C ADDR 002DH
EX0. . . . . . . . . . . . . . . B ADDR 00A8H PREDEFINED
EXITULOADMODE. . . . . . . . . . C ADDR E0A7H
GETCOMMAND . . . . . . . . . . . C ADDR E02BH
IT0. . . . . . . . . . . . . . . B ADDR 0088H PREDEFINED
JMPSENDNACK. . . . . . . . . . . C ADDR E09CH
MAIN . . . . . . . . . . . . . . C ADDR 002EH
NACK . . . . . . . . . . . . . . NUMB 0015H
P3 . . . . . . . . . . . . . . . D ADDR 00B0H PREDEFINED
PSW. . . . . . . . . . . . . . . D ADDR 00D0H PREDEFINED
READDATA . . . . . . . . . . . . C ADDR E06AH
RECBYTE. . . . . . . . . . . . . C ADDR E0F5H
RESETSFR . . . . . . . . . . . . C ADDR E0CDH NOT USED
RI . . . . . . . . . . . . . . . B ADDR 0098H PREDEFINED
SBUF . . . . . . . . . . . . . . D ADDR 0099H PREDEFINED
SCON . . . . . . . . . . . . . . D ADDR 0098H PREDEFINED
SENDACK. . . . . . . . . . . . . C ADDR E105H
SENDBYTE . . . . . . . . . . . . C ADDR E0FDH
SENDNACK . . . . . . . . . . . . C ADDR E109H
T3CON. . . . . . . . . . . . . . D ADDR 009EH PREDEFINED
T3FD . . . . . . . . . . . . . . D ADDR 009DH PREDEFINED
TI . . . . . . . . . . . . . . . B ADDR 0099H PREDEFINED
VERIFYDOWNLOADLOOP . . . . . . . C ADDR E08DH
WDCON. . . . . . . . . . . . . . D ADDR 00C0H PREDEFINED
WDWR . . . . . . . . . . . . . . B ADDR 00C0H PREDEFINED
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -