📄 intelhex.lst
字号:
MACRO ASSEMBLER INTELHEX 05/05/03 17:01:05 PAGE 1
WIN32 MACRO ASSEMBLER MA51 V06.04.11OBJECT MODULE PLACED IN D:\DATA\MSC1210\RIDE\MVP\INTELHEX.OBJ
ASSEMBLER INVOKED BY: MA51.EXE D:\DATA\MSC1210\RIDE\MVP\INTELHEX.A51 OJ(D:\DATA\MSC1210\RIDE\MVP\INTELHEX.OBJ) PIN(D:\RIDE\INC) PIN(D:\RIDE\INC\51\TI\) EP LINES SYNTAX(ASM51) PR(D:\DATA\MSC1210\RIDE\MVP\INTELHEX.LST) XR DB PW(80) RB(0)
LOC OBJ LINE SOURCE
1 $NOMOD51
2 $INCLUDE (REG1210.INC)
240 NAME INTEL_HEX
241 PUBLIC _READ_AND_WRITE_INTEL_HEX;
242 EXTRN CODE (_FPM, _TX_BYTE, RX_BYTE_ECHO, RX_HEX_ECHO)
243 INTEL_HEX_ROUTINES SEGMENT CODE
------ 244 RSEG INTEL_HEX_ROUTINES
0080 245 CPUA EQU 80H
0040 246 CPUS EQU 40H
0001 247 FWR EQU 1
248 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
249 ; Get, write & report result for a Intel Hex File
250 ; R7 define which CPU: CPUA or CPUS
251 _READ_AND_WRITE_INTEL_HEX:
0000 8FAA 252 MOV BPL,R7
253 RW_INTELHEX:
0002 120000 F 254 CALL INTEL_HEX_TRANSFORM
255 ;R7.3/R7.1/R7.0= EOF/ CheckSum Err/ Write Err
256 ;if R7= xx1b / x10b / 100b / 000b then print X / E / T / .
0005 EF 257 MOV A,R7
0006 7F58 258 MOV R7,#'X'
0008 20E013 259 JB ACC.0,INTEL_WR_ERROR
000B 7F45 260 MOV R7,#'E'
000D 20E10E 261 JB ACC.1,INTEL_CHKSUM_ERROR
0010 7F54 262 MOV R7,#'T'
0012 20E309 263 JB ACC.3,INTEL_EOF ;end of file
0015 7F2E 264 MOV R7, #'.' ; Successful
0017 120000 F 265 CALL _TX_BYTE
001A 30E3E5 266 JNB ACC.3, RW_INTELHEX
001D 22 267 RET
268 INTEL_WR_ERROR:
269 INTEL_CHKSUM_ERROR:
270 INTEL_EOF:
001E 120000 F 271 CALL _TX_BYTE
0021 22 272 RET
273 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
274 ; Get, write & report result for a Intel Hex Line
275 INTEL_HEX_TRANSFORM:
0022 120000 F 276 CALL RX_BYTE_ECHO ; wait for ':'
0025 BF3AFA 277 CJNE R7,#':',INTEL_HEX_TRANSFORM
0028 7C00 278 MOV R4, #0 ; reset checksum
002A 120000 F 279 CALL RX_HEX_ECHO_CS ; get byte count
002D AA07 280 MOV R2, REG7 ; store byte count in R2
002F 120000 F 281 CALL RX_HEX_ECHO_CS ; get dest address-hi
0032 8F83 282 MOV DPH, R7
0034 120000 F 283 CALL RX_HEX_ECHO_CS ; get dest address-lo
0037 8F82 284 MOV DPL, R7
0039 120000 F 285 CALL RX_HEX_ECHO_CS ; get line type (data line/last line)
003C 75F000 286 MOV B, #00H ; B has receive line status
003F BF0103 287 CJNE R7,#01, IHT_DATA_LOOP
0042 43F008 288 ORL B,#08H ; last line
289 IHT_DATA_LOOP:
0045 120000 F 290 CALL RX_HEX_ECHO_CS ; get a data OR checksum byte
0048 BA0002 291 CJNE R2, #00H, IHT_DATA_BYTE ; check_byte_count
004B 802B 292 SJMP IHT_CHECKSUM ; R2==00h
293 IHT_DATA_BYTE:
294 ;MOV R5, AR7 ; PLACE DATA BYTE IN R5
295 ;MOV R3, #0H ; FPM mode
296 ;MOV R6, DPH ; Set write address
297 ;MOV R7, DPL
004D C083 298 PUSH DPH
004F C082 299 PUSH DPL
0051 C004 300 PUSH REG4
0053 C002 301 PUSH REG2
0055 C0F0 302 PUSH REGB
0057 AB07 303 MOV R3,REG7 ; pd
0059 AC83 304 MOV R4,DPH ; a
005B AD82 305 MOV R5,DPL
005D 7F41 306 MOV R7,#41H ;BPL ; cmd
307 IHT_SKIP_TRANSLATE:
005F 120000 F 308 LCALL _FPM
309 ; call _write_src
0062 D0F0 310 POP REGB
0064 D002 311 POP REG2
0066 D004 312 POP REG4
313 IHT_WRITE_RESULT:
0068 BF0103 314 CJNE R7, #01H, IHT_GOOD_WRITE
006B 43F001 315 ORL B, #01H ; write error
316 IHT_GOOD_WRITE:
006E D082 317 POP DPL
0070 D083 318 POP DPH
0072 A3 319 INC DPTR
0073 DAD0 320 DJNZ R2, IHT_DATA_LOOP
0075 120000 F 321 CALL RX_HEX_ECHO_CS
322 IHT_CHECKSUM:
0078 EC 323 MOV A, R4;
0079 6003 324 JZ IHT_CHKSUM_PASS
325 IHT_CHKSUM_ERROR:
007B 43F002 326 ORL B, #02
327 IHT_CHKSUM_PASS:
007E AFF0 328 MOV R7, B
0080 22 329 RET
330 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
331 ; Get a byte from serial port with
332 ; hex convert/echo/checksum cal
333 RX_HEX_ECHO_CS:
0081 120000 F 334 CALL RX_HEX_ECHO;
0084 EC 335 MOV A, R4;
0085 2F 336 ADD A, R7; ADD received byte to checksum
0086 FC 337 MOV R4, A;
0087 22 338 RET
339 END
MACRO ASSEMBLER INTELHEX 05/05/03 17:01:05 PAGE 0
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES REFERENCES
REGB . . . . . . . D ADDR 00F0H A 238# 302 310
TXD0 . . . . . . . B ADDR 00B0H.1 A 167#
INT5 . . . . . . . B ADDR 0090H.7 A 131#
RCAP2H . . . . . . D ADDR 00CBH A 67#
SPITCON. . . . . . D ADDR 009DH A 38#
DPL. . . . . . . . D ADDR 0082H A 13# 284 299 305 317
P0 . . . . . . . . D ADDR 0080H A 11#
RX_HEX_ECHO_CS . . C ADDR 0081H R SEG=INTEL_HEX_ROUTINES 279 281 283 285 290
321 333#
SM01 . . . . . . . B ADDR 00C0H.7 A 180#
TXD1 . . . . . . . B ADDR 0090H.3 A 135#
HWPCO. . . . . . . D ADDR 00E9H A 95#
SBUF1. . . . . . . D ADDR 00C1H A 63#
P1 . . . . . . . . D ADDR 0090H A 27#
_FPM . . . . . . . C ADDR ----- EXT 242# 308
CP_RL2 . . . . . . B ADDR 00C8H.0 A 197#
EXEN2. . . . . . . B ADDR 00C8H.3 A 194#
SM11 . . . . . . . B ADDR 00C0H.6 A 181#
B. . . . . . . . . D ADDR 00F0H A 102# 286 288 315
326 328
P0DDRH . . . . . . D ADDR 00ADH A 53#
P2 . . . . . . . . D ADDR 00A0H A 41#
SM21 . . . . . . . B ADDR 00C0H.5 A 182#
PS . . . . . . . . B ADDR 00B8H.4 A 173#
T2EX . . . . . . . B ADDR 0090H.1 A 137#
HWPC1. . . . . . . D ADDR 00EAH A 96#
P3 . . . . . . . . D ADDR 00B0H A 56#
P1DDRH . . . . . . D ADDR 00AFH A 55#
SPIEND . . . . . . D ADDR 009FH A 40#
SP . . . . . . . . D ADDR 0081H A 12#
SMOD1. . . . . . . B ADDR 00D8H.7 A 210#
AC . . . . . . . . B ADDR 00D0H.6 A 201#
T0 . . . . . . . . B ADDR 00B0H.4 A 164#
RCAP2L . . . . . . D ADDR 00CAH A 66#
SCON1. . . . . . . D ADDR 00C0H A 62#
P2DDRH . . . . . . D ADDR 00B2H A 58#
IHT_CHKSUM_PASS. . C ADDR 007EH R SEG=INTEL_HEX_ROUTINES 324 327#
OV . . . . . . . . B ADDR 00D0H.2 A 205#
T1 . . . . . . . . B ADDR 00B0H.5 A 163#
REN. . . . . . . . B ADDR 0098H.4 A 144#
P3DDRH . . . . . . D ADDR 00B4H A 60#
PWMHI. . . . . . . D ADDR 00A3H A 44#
EA . . . . . . . . B ADDR 00A8H.7 A 151#
T2 . . . . . . . . B ADDR 0090H.0 A 138#
SECINT . . . . . . D ADDR 00F9H A 110#
LVDCON . . . . . . D ADDR 00E7H A 93#
SSCON. . . . . . . D ADDR 00E1H A 87#
T2CON. . . . . . . D ADDR 00C8H A 65#
P0DDRL . . . . . . D ADDR 00ACH A 52#
AISTAT . . . . . . D ADDR 00A7H A 47#
PWMLOW . . . . . . D ADDR 00A2H A 43#
SPIDATA. . . . . . D ADDR 009BH A 36#
ACC. . . . . . . . D ADDR 00E0H A 86# 259 261 263 266
P1DDRL . . . . . . D ADDR 00AEH A 54#
DPS. . . . . . . . D ADDR 0086H A 17#
IHT_SKIP_TRANSLATE C ADDR 005FH R SEG=INTEL_HEX_ROUTINES 307#
C_T2 . . . . . . . B ADDR 00C8H.1 A 196#
P2DDRL . . . . . . D ADDR 00B1H A 57#
RW_INTELHEX. . . . C ADDR 0002H R SEG=INTEL_HEX_ROUTINES 253# 266
CPUA . . . . . . . N NUMB 0080h 245#
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -