📄 ispiap.lst
字号:
127 #define DEBUG_Data_Memory_Begin_Sector_addr 0x8000
128 #define DEBUG_Data_Memory_End_Sector_addr 0xf600
129 #define DEBUG_Data_Memory_End_Byte_addr 0xf7ff
130 #endif
131 #ifdef DEBUG_STC89C_LE54RD //STC89C54RD+, 89LE54RD+
132 #define DEBUG_AP_Memory_Begin_Sector_addr 0x0000
133 #define DEBUG_AP_Memory_End_Sector_addr 0x3e00
134 #define DEBUG_AP_Memory_End_Byte_addr 0x3fff
135
136 #define DEBUG_Data_Memory_Begin_Sector_addr 0x4000
137 #define DEBUG_Data_Memory_End_Sector_addr 0xbe00
138 #define DEBUG_Data_Memory_End_Byte_addr 0xbfff
139
140 // #define DEBUG_Data_Memory_End_Sector_addr 0xf600
141 // #define DEBUG_Data_Memory_End_Byte_addr 0xf7ff
142 #endif
143
144 #ifdef DEBUG_STC89C_LE53RC //STC89C53RC, 89LE53RC
145 #define DEBUG_AP_Memory_Begin_Sector_addr 0x0000
146 #define DEBUG_AP_Memory_End_Sector_addr 0x3600
147 #define DEBUG_AP_Memory_End_Byte_addr 0x37ff
148 #endif
149
150 #ifdef DEBUG_STC89C_LE52RC //STC89C52RC, 89LE52RC
151 #define DEBUG_AP_Memory_Begin_Sector_addr 0x0000
152 #define DEBUG_AP_Memory_End_Sector_addr 0x1e00
153 #define DEBUG_AP_Memory_End_Byte_addr 0x1fff
154
155 #define DEBUG_Data_Memory_Begin_Sector_addr 0x2000
156 #define DEBUG_Data_Memory_End_Sector_addr 0x2e00
157 #define DEBUG_Data_Memory_End_Byte_addr 0x2fff
158
159 // #define DEBUG_Data_Memory_End_Sector_addr 0x3600
160 // #define DEBUG_Data_Memory_End_Byte_addr 0x37ff
161 #endif
162 #ifdef DEBUG_STC89C_LE51RC //STC89C51RC, 89LE51RC
163 #define DEBUG_AP_Memory_Begin_Sector_addr 0x0000
164 #define DEBUG_AP_Memory_End_Sector_addr 0x0e00
165 #define DEBUG_AP_Memory_End_Byte_addr 0x0fff
166
167 #define DEBUG_Data_Memory_Begin_Sector_addr 0x1000
168 #define DEBUG_Data_Memory_End_Sector_addr 0x1e00
169 #define DEBUG_Data_Memory_End_Byte_addr 0x1fff
170
171 // #define DEBUG_Data_Memory_End_Sector_addr 0x3600
172 // #define DEBUG_Data_Memory_End_Byte_addr 0x37ff
173 #endif
C51 COMPILER V7.50 ISPIAP 10/18/2005 14:13:32 PAGE 4
174 */
175
176 /* 打开 ISP,IAP 功能 */
177 void ISP_IAP_enable(void)
178 {
179 1 EA = 0; /* 关中断 */
180 1 ISP_CONTR = ISP_CONTR & 0x18; /* 0001,1000 */
181 1 ISP_CONTR = ISP_CONTR | WAIT_TIME;
182 1 ISP_CONTR = ISP_CONTR | 0x80; /* 1000,0000 */
183 1 }
184
185 /* 关闭 ISP,IAP 功能 */
186 void ISP_IAP_disable(void)
187 {
188 1 ISP_CONTR = ISP_CONTR & 0x7f; /* 0111,1111 */
189 1 ISP_TRIG = 0x00;
190 1 EA = 1; /* 开中断 */
191 1 }
192
193 /* 字节读 */
194 unsigned char byte_read(unsigned int byte_addr)
195 {
196 1 ISP_ADDRH = (unsigned char)(byte_addr >> 8);
197 1 ISP_ADDRL = (unsigned char)(byte_addr & 0x00ff);
198 1
199 1 ISP_CMD = ISP_CMD & 0xf8; /* 1111,1000 */
200 1 ISP_CMD = ISP_CMD | READ_AP_and_Data_Memory_Command; /* 0000,0001 */
201 1
202 1 ISP_IAP_enable();
203 1
204 1 ISP_TRIG = 0x46;
205 1 ISP_TRIG = 0xb9;
206 1 _nop_();
207 1
208 1 ISP_IAP_disable();
209 1 return (ISP_DATA);
210 1 }
211
212 /* 扇区擦除 */
213 unsigned char sector_erase(unsigned int sector_addr)
214 {
215 1 unsigned int get_sector_addr = 0;
216 1 get_sector_addr = (sector_addr & 0xfe00); /* 1111,1110,0000,0000; 取扇区地址 */
217 1 ISP_ADDRH = (unsigned char)(get_sector_addr >> 8);
218 1 ISP_ADDRL = 0x00;
219 1
220 1 ISP_CMD = ISP_CMD & 0xf8; /* 1111,1000 */
221 1 ISP_CMD = ISP_CMD | SECTOR_ERASE_AP_and_Data_Memory_Command; /* 0000,0011 */
222 1
223 1 ISP_IAP_enable();
224 1 ISP_TRIG = 0x46; /* 触发ISP_IAP命令 */
225 1 ISP_TRIG = 0xb9; /* 触发ISP_IAP命令 */
226 1 _nop_();
227 1
228 1 ISP_IAP_disable();
229 1 return OK;
230 1 }
231
232 /* 字节编程 */
233 unsigned char byte_program(unsigned int byte_addr, unsigned char original_data)
234 {
235 1 ISP_ADDRH = (unsigned char)(byte_addr >> 8);
C51 COMPILER V7.50 ISPIAP 10/18/2005 14:13:32 PAGE 5
236 1 ISP_ADDRL = (unsigned char)(byte_addr & 0x00ff);
237 1
238 1 ISP_CMD = ISP_CMD & 0xf8; /* 1111,1000 */
239 1 ISP_CMD = ISP_CMD | PROGRAM_AP_and_Data_Memory_Command; /* 0000,0010 */
240 1 ISP_DATA = original_data;
241 1
242 1 ISP_IAP_enable();
243 1 ISP_TRIG = 0x46; /* 触发ISP_IAP命令 */
244 1 ISP_TRIG = 0xb9; /* 触发ISP_IAP命令 */
245 1 _nop_();
246 1
247 1 ISP_IAP_disable();
248 1 return OK;
249 1 }
250
251
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 118 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -