⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 自编isp测试.lst

📁 关于isp的一个测试程序
💻 LST
字号:
A51 MACRO ASSEMBLER  譥__ISP_馐_                                                          06/12/2005 15:27:28 PAGE     1


MACRO ASSEMBLER A51 V6.12
OBJECT MODULE PLACED IN 自编isp测试.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE 自编isp测试.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     
                       2     
                       3     
                       4     
                       5     
  2000                 6     MEM_TOP        EQU    2000H    ;use for 8KB code memory devices
                       7     
0000                   8     INIT:
0000 11AB              9         ACALL    I_WDT        ;
0002 5391FC           10         ANL    91H,#0FCH    ;RxD = quasi-bi
0005 439201           11         ORL    92H,#01H    ;TxD = push-pull
0008 7590FF           12         MOV    P1,#0FFH    ;
                      13     
000B 758920           14             MOV    TMOD,#20H    ;8-bit auto-reload mode
000E 53BAFA           15             ANL    0BAH,#0FAH
0011 E4               16             CLR    A
0012 F5BD             17             MOV    0BDH,A
0014 759850           18         MOV    SCON,#50H    ;init UART 8-bit variable, TI=0 RI=0
0017 75BEF0           19             MOV    0BEH,#0F0H
001A 75BF02           20             MOV    0BFH,#02H
001D 75BD03           21             MOV    0BDH,#03H
                      22     
0020                  23     QRZ:    
0020 11A3             24             ACALL    ECHO        ;wait until character is rcv'd & get it
0022 B455FB           25         CJNE    A,#'U',QRZ    ;check to see if uppercase "U"
0025 118F             26     W1:     ACALL    CO
                      27     
0027                  28     LCMD:
0027 7D00             29         MOV    R5,#0    ;begin record... zero checksum
0029 11A3             30         ACALL    ECHO        ;get first char and echo
002B B43AF7           31             CJNE    A,#':',W1    ;record starts with ':' char
002E 1174             32         ACALL    GET2        ;get the number of bytes in record
0030 853533           33         MOV    33H,35H    ;and save
0033 1174             34         ACALL    GET2        ;get MSB of load address
0035 853531           35         MOV    31H,35H    ;and save
0038 1174             36         ACALL    GET2        ;get LSB of load address
003A 853530           37         MOV    30H,35H    ;and save it
003D 1174             38         ACALL    GET2        ;get record type
003F 853534           39         MOV    34H,35H    ;and save it
0042 E533             40         MOV    A,33H    ;else, more than
0044 FA               41         MOV    R2,A    
0045 6009             42         JZ    EOR        ;zero data bytes ?
0047 7980             43         MOV    R1,#80H    ;pointer for data bytes
0049 1174             44     LDATA:    ACALL    GET2        ;get data byte
004B A735             45         MOV    @R1,35H    ;store it
004D 09               46         INC    R1        ;and bump up the pointer    
004E DAF9             47         DJNZ    R2,LDATA    ;repeat if more bytes in record
0050                  48     EOR:
0050 ED               49         MOV    A,R5        ;
0051 FC               50         MOV    R4,A        ;save calculated checksum
0052 1174             51         ACALL    GET2        ;get the checksum byte
0054 EC               52         MOV    A,R4        ;and compare with calculated checksum byte
0055 B53518           53         CJNE    A,35H,CHKERR    ;recv'd & calc'd chksums match ?
0058 7980             54         MOV    R1,#80H    ;pointer for data
                      55     ;    AJMP    PROCESS        ;YES, process command
                      56     
005A 743A             57             MOV    A,#3AH
005C 118F             58             ACALL    CO
A51 MACRO ASSEMBLER  譥__ISP_馐_                                                          06/12/2005 15:27:28 PAGE     2

005E E533             59             MOV    A,33H
0060 118F             60             ACALL    CO
0062 E531             61             MOV    A,31H
0064 118F             62             ACALL    CO
0066 E530             63             MOV    A,30H
0068 118F             64             ACALL    CO
006A E534             65             MOV    A,34H
006C 118F             66             ACALL    CO
006E 0127             67             AJMP    LCMD
                      68     
0070 7458             69     CHKERR:    MOV    A,#'X'
0072 01B8             70         AJMP    RSPND1
                      71     
0074 11A3             72     GET2:    ACALL    ECHO        ;get first char of length
0076 1187             73         ACALL    A2HEX        ;convert to hex
0078 C4               74         SWAP    A        ;set in high nibble
0079 F535             75         MOV    35H,A        ;store in NBYTES
007B 11A3             76         ACALL    ECHO        ;get second char of length
007D 1187             77         ACALL    A2HEX        ;convert to hex
007F 4235             78         ORL    35H,A        ;add into NBYTES
0081 ED               79         MOV    A,R5        ;get checksum
0082 C3               80         CLR    C        ;subtract NBYTES
0083 9535             81         SUBB    A,35H        ;from checksum and
0085 FD               82         MOV    R5,A        ;store as new checksum
0086 22               83         RET
                      84     
                      85     ;***** ASCII to HEX routine *****
                      86     ;
                      87     ;This routine accepts an ASCII char in the ACC
                      88     ;and converts it into the corresponding hex digit.
                      89     ;The routine checks to see if the char is in the
                      90     ;range of '0' through '9' or in the range of 'A'
                      91     ;through 'F'. If not in either range then the ASCII
                      92     ;char is not a valid hex entry from the operator
                      93     ;and an error flag is returned true along with the
                      94     ;original ASCII char returned in the ACC.
                      95     
0087                  96     A2HEX:
0087 30E602           97         JNB    ACC.6,HEX1
008A 2409             98         ADD    A,#09H
008C 540F             99     HEX1:    ANL    A,#0FH
008E 22              100         RET
                     101     
                     102     ;***** console output routine *****
                     103     ;
                     104     ;Outputs character in the ACC to 
                     105     ;the serial output line.
                     106     
008F 11B1            107     CO:    ACALL    FD_WDT        ;feed the WDT
0091 F599            108         MOV    SBUF,A    ;output char to SIO
0093 3099FD          109         JNB    TI,$        ;wait till xmtr ready
0096 C299            110         CLR    TI        ;reset xmtr flag
0098 22              111        RET            ;and done
                     112     
                     113     ;***** console input routine *****
                     114     ;
                     115     ;Waits until character has been received
                     116     ;and then returns char in ACC.
                     117     
0099 11B1            118     CI:    ACALL    FD_WDT        ;feed the WDT
009B 3098FB          119         JNB    RI,CI        ;wait till char
009E C298            120         CLR    RI        ;reset rcvr flag
00A0 E599            121         MOV    A,SBUF    ;read the char
00A2 22              122         RET            ;and done
                     123     
                     124     ;***** character echo routine *****
A51 MACRO ASSEMBLER  譥__ISP_馐_                                                          06/12/2005 15:27:28 PAGE     3

                     125     ;
                     126     ;waits until a character is received from
                     127     ;the console input and echos this character
                     128     ;to the console output. The received char
                     129     ;is also passed to the caller in the ACC.
                     130     
00A3 1199            131     ECHO:    ACALL    CI            ;get char from console 
                     132     ;    ACALL    CO            ;print the character
00A5 30E602          133         JNB    ACC.6,EXECHO    ;exit if not 4x,5x, or 6x Hex
00A8 C2E5            134         CLR    ACC.5            ;convert to upper case
00AA 22              135     EXECHO:  RET                ;and done
                     136     
00AB                 137     I_WDT:
00AB 75C1FF          138         MOV    0C1H,#0FFH    ;set to max count
00AE 43A7E0          139         ORL    0A7H,#0E0H    ;set pre= max
00B1                 140     FD_WDT:
00B1 75C2A5          141         MOV    0C2H,#0A5H    ;
00B4 75C35A          142         MOV    0C3H,#5AH     ;    
00B7 22              143         RET
                     144     
00B8                 145     RSPND1:
00B8 118F            146         ACALL    CO        ;send an okay message
00BA 01BC            147         AJMP    DEXIT        ;and done
                     148     
00BC                 149     DEXIT:
00BC 11C5            150         ACALL    CRLF        ;print a CRLF
00BE 3099FD          151         JNB    TI,$
00C1 D29C            152         SETB    REN        ;TURN ON UART RECEIVER
00C3 0127            153         AJMP    LCMD        ;branch to main loop
                     154     
00C5 740D            155     CRLF:    MOV    A,#0DH
00C7 118F            156         ACALL    CO
00C9 740A            157         MOV    A,#0AH
00CB 118F            158         ACALL    CO
00CD 22              159         RET
                     160     
                     161     END
A51 MACRO ASSEMBLER  譥__ISP_馐_                                                          06/12/2005 15:27:28 PAGE     4

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

A2HEX. . . . . . .  C ADDR   0087H   A   
ACC. . . . . . . .  D ADDR   00E0H   A   
CHKERR . . . . . .  C ADDR   0070H   A   
CI . . . . . . . .  C ADDR   0099H   A   
CO . . . . . . . .  C ADDR   008FH   A   
CRLF . . . . . . .  C ADDR   00C5H   A   
DEXIT. . . . . . .  C ADDR   00BCH   A   
ECHO . . . . . . .  C ADDR   00A3H   A   
EOR. . . . . . . .  C ADDR   0050H   A   
EXECHO . . . . . .  C ADDR   00AAH   A   
FD_WDT . . . . . .  C ADDR   00B1H   A   
GET2 . . . . . . .  C ADDR   0074H   A   
HEX1 . . . . . . .  C ADDR   008CH   A   
INIT . . . . . . .  C ADDR   0000H   A   
I_WDT. . . . . . .  C ADDR   00ABH   A   
LCMD . . . . . . .  C ADDR   0027H   A   
LDATA. . . . . . .  C ADDR   0049H   A   
MEM_TOP. . . . . .  N NUMB   2000H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
QRZ. . . . . . . .  C ADDR   0020H   A   
REN. . . . . . . .  B ADDR   0098H.4 A   
RI . . . . . . . .  B ADDR   0098H.0 A   
RSPND1 . . . . . .  C ADDR   00B8H   A   
SBUF . . . . . . .  D ADDR   0099H   A   
SCON . . . . . . .  D ADDR   0098H   A   
TI . . . . . . . .  B ADDR   0098H.1 A   
TMOD . . . . . . .  D ADDR   0089H   A   
W1 . . . . . . . .  C ADDR   0025H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -