📄 936isp_4800_7.3728m.lst
字号:
A51 MACRO ASSEMBLER 936ISP_4800_7_3728M 04/30/2007 17:15:55 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN 936ISP_4800_7.3728M.OBJ
ASSEMBLER INVOKED BY: E:\Program Files\keil\C51\BIN\A51.EXE 936ISP_4800_7.3728M.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;************************************************
2 ; P89LPC922 ISP PROGRAM
3 ; VER:02/02
4 ; CODE ADDRESS: 1E00H~1FFFH
5 ; BOOT VECTOR: 1FH
6 ;************************************************
7 $set ( AUTOBAUD = 0)
8 ;************************************************
00D1 9 F1 BIT PSW.1
10
00BD 11 BRGCON DATA 0BDH
00BE 12 BRGR0 DATA 0BEH
00BF 13 BRGR1 DATA 0BFH
0091 14 P1M1 DATA 091H
0092 15 P1M2 DATA 092H
16
0030 17 addr_l DATA 30H
0031 18 addr_h DATA 31H
0033 19 data_n DATA 33H
0034 20 comm_type DATA 34H
0035 21 temp DATA 35H
22
0080 23 DATA_BUF EQU 80H
FF03 24 PGM_MTP EQU 0FF03H
25
26 ;T_BPS = 256 - Fosc/16/2/BAUDRATE
00E6 27 T_BPS EQU 0E6H ;4800BPS@4MHz
28 ;T_BPS EQU 0D0H ;4800BPS@7.3728MHz
29 ;T_BPS EQU 0FAH ;38400BPS@7.3728MHz
30 ;************************************************
3E00 31 ORG 3E00H
32
3E00 43A208 33 SOFT_RST: ORL 0A2H,#08H ;SOFT RESET
34 ;************************************************
35 $if 1
36 $if AUTOBAUD
ISP_START: ACALL WDG_INIT
MOV 91H,#00H ;P1M1=91H
MOV 92H,#00H ;P1M2=92H
MOV P1,#0FFH
MOV TMOD,#10H
ANL 8FH,#0EFH ;TAMOD=8FH,TIMER1 MODE1
MOV PCON,#80H
CLR A
MOV TH1,A
MOV TL1,A
RXD_HIGH: ACALL WDG_RST
JNB P1.1,RXD_HIGH ;RXD=P1.1
RXD_LOW: ACALL WDG_RST
JB P1.1,RXD_LOW ;Waiting receive start, receive 'U'
SETB TR1
JNB P1.1,$ ;Waiting one bit(bit 0) finish
CLR TR1
ACALL WDG_RST
MOV comm_type,TH1 ;ATUOBAUD
MOV R1,#comm_type
A51 MACRO ASSEMBLER 936ISP_4800_7_3728M 04/30/2007 17:15:55 PAGE 2
MOV A,TL1
XCHD A,@R1
SWAP A ;(TH1*256+TL1)/16
CPL A
INC A ;(0FFH-N)+1=256-N
$else
3E03 D1BF 66 ISP_START: ACALL WDG_INIT
3E05 759100 67 MOV 91H,#00H ;P1M1=91H
3E08 759200 68 MOV 92H,#00H ;P1M2=92H
3E0B 7590FF 69 MOV P1,#0FFH
3E0E 538FEF 70 ANL 8FH,#0EFH ;TAMOD=8FH,TIMER1 MODE1
3E11 758780 71 MOV PCON,#80H
3E14 74E6 72 MOV A,#T_BPS
73 $endif
3E16 F58B 74 MOV TL1,A ;TIMER VALUE=256 - ONE_BIT_TIME/16
3E18 F58D 75 MOV TH1,A
3E1A 758920 76 MOV TMOD,#20H
3E1D D28E 77 SETB TR1
3E1F 759852 78 MOV SCON,#52H ;UART MODE1,ENABLE REN,SETB TI
79 $endif
80 ;************************************************
3E22 D185 81 WAIT_55H: ACALL HAND_ASC
3E24 B455FB 82 CJNE A,#55H,WAIT_55H ;Waiting receive 'U'
3E27 7D00 83 WAIT_3AH: MOV R5,#00H ;R5=CHECK SUM
3E29 D185 84 ACALL HAND_ASC
3E2B B43AF9 85 CJNE A,#3AH,WAIT_3AH ;Waiting receive ':'
86
3E2E D15E 87 ACALL GET_DATA
3E30 853533 88 MOV data_n,temp ;RECEIVE DATA NUMBER
3E33 D15E 89 ACALL GET_DATA
3E35 853531 90 MOV addr_h,temp ;RECEIVE HIGH 8 BIT ADDRESS
3E38 D15E 91 ACALL GET_DATA
3E3A 853530 92 MOV addr_l,temp ;RECEIVE LOW 8 BIT ADDRESS
3E3D D15E 93 ACALL GET_DATA
3E3F 853534 94 MOV comm_type,temp ;RECEIVE COMMAND TYPE
95
3E42 E533 96 MOV A,data_n ;DATA NUMBER=0,RET
3E44 FA 97 MOV R2,A
3E45 6009 98 JZ RECV_END
99
3E47 7980 100 MOV R1,#DATA_BUF ;DATA BUFFERS ADDRESS
3E49 D15E 101 RECV_LOOP: ACALL GET_DATA
3E4B A735 102 MOV @R1,temp
3E4D 09 103 INC R1
3E4E DAF9 104 DJNZ R2,RECV_LOOP
105
3E50 ED 106 RECV_END: MOV A,R5 ;CHECK SUM COMPARE
3E51 FC 107 MOV R4,A
3E52 D15E 108 ACALL GET_DATA
3E54 EC 109 MOV A,R4
3E55 B53502 110 CJNE A,temp,RECV_ERR
3E58 C1A4 111 AJMP ISP_COMMAND
112
3E5A 7458 113 RECV_ERR: MOV A,#58H ;SEND ERROR DATA 'X'
3E5C E126 114 AJMP WRITE_OK1 ;SEND 'X'&'ENTER',GOTO "WAIT_3AH"
115 ;************************************************
3E5E D185 116 GET_DATA: ACALL HAND_ASC ;RECEIVE ONE BYTE DATA
3E60 D18F 117 ACALL ASC_HEX
3E62 C4 118 SWAP A
3E63 F535 119 MOV temp,A
3E65 D185 120 ACALL HAND_ASC
3E67 D18F 121 ACALL ASC_HEX
3E69 4235 122 ORL temp,A
123
3E6B ED 124 MOV A,R5 ;CHECK_SUM = CHECK_SUM - TEMP
A51 MACRO ASSEMBLER 936ISP_4800_7_3728M 04/30/2007 17:15:55 PAGE 3
3E6C C3 125 CLR C
3E6D 9535 126 SUBB A,temp
3E6F FD 127 MOV R5,A
3E70 22 128 RET
129 ;************************************************
3E71 D1C5 130 SEND_ASC: ACALL WDG_RST
3E73 3099FB 131 JNB TI,SEND_ASC
3E76 C299 132 CLR TI
3E78 F599 133 MOV SBUF,A
3E7A 22 134 RET
135 ;************************************************
3E7B D1C5 136 RECV_ASC: ACALL WDG_RST
3E7D 3098FB 137 JNB RI,RECV_ASC
3E80 C298 138 CLR RI
3E82 E599 139 MOV A,SBUF
3E84 22 140 RET
141 ;************************************************
3E85 D17B 142 HAND_ASC: ACALL RECV_ASC
3E87 D171 143 ACALL SEND_ASC
3E89 30E602 144 JNB ACC.6,HAND_RET ;'A~Z':41H~5AH,'a~z':61H~7AH
3E8C C2E5 145 CLR ACC.5 ;a->A
3E8E 22 146 HAND_RET: RET
147 ;************************************************
3E8F 30E602 148 ASC_HEX: JNB ACC.6,ASC_HEX1 ;30H~39H -> N&0x0F: 0~9
3E92 2409 149 ADD A,#09H ;41H~46H -> (N+9)&0x0F: A~F
3E94 540F 150 ASC_HEX1: ANL A,#0FH
3E96 22 151 RET
152 ;************************************************
3E97 540F 153 HEX_ASC: ANL A,#0FH
3E99 C3 154 CLR C
3E9A 940A 155 SUBB A,#0AH ;N-10 -> C=0:A~F,C=1:0~9
3E9C 5003 156 JNC HEX_ASC1
3E9E 243A 157 ADD A,#3AH ;0~9:30H~39H
3EA0 22 158 RET
159
3EA1 2441 160 HEX_ASC1: ADD A,#41H ;A~F:41H~46H
3EA3 22 161 RET
162 ;************************************************
3EA4 E534 163 ISP_COMMAND: MOV A,comm_type
3EA6 23 164 RL A
3EA7 903EAB 165 MOV DPTR,#COMMAND_TAB ;0ECFH/1ECFH
3EAA 73 166 JMP @A+DPTR
167
3EAB E10B 168 COMMAND_TAB: AJMP WRITE_FLASH ;00
3EAD C1CC 169 AJMP READ_IAP_ID ;01
3EAF E18B 170 AJMP WRITE_CFG ;02
3EB1 E198 171 AJMP READ_CFG ;03
3EB3 E1A9 172 AJMP ERASE_FLASH ;04
3EB5 E1BB 173 AJMP READ_SECTOR_CRC ;05
3EB7 E1B7 174 AJMP READ_GOLBER_CRC ;06
3EB9 E1DE 175 AJMP SET_BAUD ;07
3EBB C100 176 AJMP SOFT_RST ;08
3EBD E12A 177 AJMP READ_USER_ID ;09
178 ;************************************************
3EBF 75C1FF 179 WDG_INIT: MOV 0C1H,#0FFH ;WATCHDOG SET
3EC2 43A7E0 180 ORL 0A7H,#0E0H
3EC5 75C2A5 181 WDG_RST: MOV 0C2H,#0A5H
3EC8 75C35A 182 MOV 0C3H,#5AH
3ECB 22 183 RET
184 ;************************************************
3ECC 7402 185 READ_IAP_ID: MOV A,#02H ;ISP_ID = 02
3ECE F1F4 186 ACALL SEND_HEX
3ED0 7401 187 MOV A,#01H
3ED2 12FF03 188 LCALL PGM_MTP
3ED5 EF 189 MOV A,R7
3ED6 F1F4 190 ACALL SEND_HEX
A51 MACRO ASSEMBLER 936ISP_4800_7_3728M 04/30/2007 17:15:55 PAGE 4
3ED8 E124 191 AJMP WRITE_0K
3EDA 00 192 NOP
3EDB 00 193 NOP
194 ;************************************************
3F00 195 ORG 3F00H
196
3F00 C103 197 AJMP ISP_START
198 ;************************************************
3F02 7452 199 WRITE_ERR: MOV A,#52H ;SEND 'R'
3F04 D171 200 ACALL SEND_ASC
3F06 EF 201 MOV A,R7
3F07 F1F4 202 ACALL SEND_HEX ;SEND ERROR DATA
3F09 E173 203 AJMP OP_END
204 ;************************************************
3F0B AB33 205 WRITE_FLASH: MOV R3,data_n
3F0D EB 206 MOV A,R3
3F0E 6014 207 JZ WRITE_0K
208
3F10 AD30 209 MOV R5,addr_l
3F12 AC31 210 MOV R4,addr_h
3F14 7F80 211 MOV R7,#DATA_BUF
3F16 7400 212 MOV A,#00H ;WRITE FLASH
3F18 78FF 213 CALL_IAP: MOV R0,#0FFH
3F1A 7696 214 MOV @R0,#96H ;0FFH=0x96
3F1C C2D1 215 CLR F1 ;F1=0D0.1H
3F1E 12FF03 216 LCALL PGM_MTP
3F21 20D5DE 217 JB F0,WRITE_ERR
218
3F24 742E 219 WRITE_0K: MOV A,#2EH ;SEND '.'
3F26 D171 220 WRITE_OK1: ACALL SEND_ASC
3F28 E173 221 AJMP OP_END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -