📄 isp_mcu.lst
字号:
Mon Nov 29 2004 16:01 Page 1
2500 A.D. 8051 Macro Assembler - Version 4.01d
------------------------------------------------
Input Filename : Isp_MCU.asm
Output Filename : Isp_MCU.obj
1 ;******************************************************************************
2 ; W78E516B单片机的ISP在线下载的MCU端源程序(ASM51)
3 ;******************************************************************************
4 ;设计人:田伯运
5 ;e-mail:tianboyun@163.com
6 ;版本号: V1.0
7 ;编译软件:2500.A.D公司的X51.EXE
8 ;******************************************************************************
9
10 0000 .chip 8052
11 .ramchk OFF
12
13 ;------------------------------------------------------------------------------
14 ;definition for connecting to PC
15
16 00AA DTR EQU AAh
17 00BB DSR EQU BBh
18 00CC RTS EQU CCh
19 00DD CTS EQU DDh
20 00EE OK EQU EEh
21 00FF FAIL EQU FFh
22 001B ESC EQU 27
23 ;
24 ;------------------------------------------------------------------------------
25
26 00F6 CHPENR REG F6h
27 00C4 SFRAL REG C4h
28 00C5 SFRAH REG C5h
29 00C6 SFRFD REG C6h
30 00C7 SFRCN REG C7h
31 00BF CHPCON REG BFh
32
33 0030 data REG 30h
34 0031 file_end_addrH REG 31h
35 0032 file_end_addrL REG 32h
36 0033 retL REG 33h
37 0034 retH REG 34h
38 0035 idle_time REG 35h
39 0036 TH0e REG 36h
40 0037 TL0e REG 37h
41 0038 TH0p REG 38h
42 0039 TL0p REG 39h
43
44 0000 chk_PC_flag REG 20h.0
45
46 ;?#############################################################################
47 0000 ORG 0000h
Mon Nov 29 2004 16:01 Page 2
48 0000 02 00 0E JMP start
49 000B ORG 000Bh
50 000B 02 01 3A JMP TF0_isr
51 000E start:
52 000E 75 81 7F MOV SP,#7Fh
53 0011 12 01 56 CALL connect_to_PC
54 0014 start2:
55 0014 12 02 90 CALL receive_data_from_PC2 ;make sure to enter ISP mode
56 0017 E5 30 MOV A,data ;
57 0019 B4 5A 1B CJNE A,#5Ah,not_ISP ;
58 001C 12 02 90 CALL receive_data_from_PC2 ;
59 001F E5 30 MOV A,data ;
60 0021 B4 A5 13 CJNE A,#A5h,not_ISP ;
61 0024 12 02 90 CALL receive_data_from_PC2 ;
62 0027 E5 30 MOV A,data ;
63 0029 B4 55 0B CJNE A,#55h,not_ISP ;
64 002C 12 02 90 CALL receive_data_from_PC2 ;
65 002F E5 30 MOV A,data ;
66 0031 B4 AA 03 CJNE A,#AAh,not_ISP ;
67 0034 02 00 39 JMP ISP_mode
68 0037 not_ISP:
69 0037 01 0E JMP start
70 ;
71 0039 ISP_mode:
72 0039 75 F6 87 MOV CHPENR,#87h ;enable CHPCON write attribute
73 003C 75 F6 59 MOV CHPENR,#59h ;
74
75 003F 12 02 90 CALL receive_data_from_PC2
76 0042 E5 30 MOV A,data
77 0044 B4 31 0B CJNE A,#'1',select_LDROM
78 0047 select_APROM:
79 0047 E5 BF MOV A,CHPCON
80 0049 30 E7 11 JNB A.7,illegal_select ;CHPCON.7 should be 1, boot from 4K LDROM
81 004C 75 BF 03 MOV CHPCON,#03h ;enable ISP, 64K APROM is re-programmed
82 004F 02 00 65 JMP ISP_start
83 0052 select_LDROM:
84 0052 E5 BF MOV A,CHPCON
85 0054 20 E7 06 JB A.7,illegal_select ;CHPCON.7 should be 0, boot from 64K APROM
86 0057 75 BF 01 MOV CHPCON,#01h ;enable ISP, 4K LDROM is re-programmed
87 005A 02 00 65 JMP ISP_start
88
89 005D illegal_select:
90 005D 75 30 FF MOV data,#FAIL
91 0060 12 02 7B CALL send_data_to_PC2
92 0063 01 0E JMP start
93 ;
94 0065 ISP_start:
95 0065 75 30 EE MOV data,#OK
96 0068 12 02 7B CALL send_data_to_PC2
97
98 006B 12 02 90 CALL receive_data_from_PC2
99 006E 85 30 32 MOV file_end_addrL,data ;file_end_addrL
100 0071 12 02 90 CALL receive_data_from_PC2
101 0074 85 30 31 MOV file_end_addrH,data ;file_end_addrH
102
103 0077 75 A8 82 MOV IE,#10000010b ;enable TF0 interrupt
104 007A 75 89 21 MOV TMOD,#00100001b ;Timer0: mode1, 16-bit timer for ISP
Mon Nov 29 2004 16:01 Page 3
105 ;Timer1: mode2, 8-bit auto-reload UART
106 ;
107 ;------------------------------------------------------------------------------
108 ; Erase
109 ;------------------------------------------------------------------------------
110 007D E5 BF MOV A,CHPCON
111 007F 20 E1 06 JB A.1,erase_APROM
112 0082 erase_LDROM:
113 0082 75 C7 62 MOV SFRCN,#62h ;Erase 4K LDROM
114 0085 02 00 8B JMP do_erase
115 0088 erase_APROM:
116 0088 75 C7 22 MOV SFRCN,#22h ;Erase 64K APROM
117 008B do_erase:
118 ;
119 008B erase:
120 008B 85 36 8C MOV TH0,TH0e ;Tpwe=15ms/(12/11.0592us)=13824
121 008E 85 37 8A MOV TL0,TL0e ;
122 0091 D2 8C SETB TR0 ;
123 0093 75 87 01 MOV PCON,#01h ;enter idle mode
124 0096 erase_ok:
125 ;
126 ;------------------------------------------------------------------------------
127 ; Program
128 ;------------------------------------------------------------------------------
129 0096 E5 BF MOV A,CHPCON
130 0098 20 E1 06 JB A.1,program_APROM
131 009B program_LDROM:
132 009B 75 C7 61 MOV SFRCN,#61h ;Program 4K LDROM
133 009E 02 00 A4 JMP do_program
134 00A1 program_APROM:
135 00A1 75 C7 21 MOV SFRCN,#21h ;Program 64K APROM
136 00A4 do_program:
137 ;
138 00A4 90 00 00 MOV DPTR,#0000h
139 00A7 program:
140 00A7 75 30 EE MOV data,#OK
141 00AA 12 02 7B CALL send_data_to_PC2
142 00AD 12 02 90 CALL receive_data_from_PC2
143
144 00B0 85 83 C5 MOV SFRAH,DPH ;
145 00B3 85 82 C4 MOV SFRAL,DPL ;
146 00B6 85 30 C6 MOV SFRFD,data ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -