📄 isr.lst
字号:
213 2 {
214 3 if(addr==0)
215 3 pulse_read();
216 3 otp_read_usb(addr);
217 3 P1=P1^0x01;
218 3 addr++;
219 3 D12_WriteEndpoint(5, 64, EpBuf);
220 3 }
221 2 break;
222 2 case 0xa3:///读OTP_CONFIG
223 2 {
224 3 pulse_read();
225 3 read_configue();
226 3 GenEpBuf[1] = EpBuf[0];
227 3 GenEpBuf[2] = EpBuf[1];
228 3 D12_WriteEndpoint(3, 3, GenEpBuf);
229 3 }
230 2 break;
231 2 case 0xa4:///写CONFIG(FILE)->OTP及读出回送
232 2 {
233 3 EpBuf[0] = GenEpBuf[1];
234 3 EpBuf[1] = GenEpBuf[2];
235 3 write_configue();
236 3 pulse_read();
237 3 read_configue();
238 3 GenEpBuf[1] = EpBuf[0];
239 3 GenEpBuf[2] = EpBuf[1];
240 3 D12_WriteEndpoint(3, 3, GenEpBuf);
241 3
C51 COMPILER V8.02 ISR 12/19/2007 17:51:24 PAGE 5
242 3 }
243 2 break;
244 2 case 0xa5://表示读FLASH程序
245 2 {
246 3
247 3 CE_FLS = 0;//选中FLASH IC
248 3 for(len=0;len<128;len++)
249 3 {
250 4 EpBuf[len] = XBYTE[len+addr*128];
251 4 }
252 3 P1=P1^0x01;
253 3 addr++;
254 3 D12_WriteEndpoint(5, 64, EpBuf);
255 3 busb_tx=1;
256 3
257 3 }
258 2 break;
259 2 case 0xaa: //FILE->OTP
260 2 {
261 3 addr =0;two_ci=0;
262 3 dir_otp_flash = 0;
263 3 }
264 2 break;
265 2
266 2 case 0xab://表示加密IC
267 2 {
268 3 GenEpBuf[1]=(unsigned char)write_protect();
269 3 D12_WriteEndpoint(3, 2, GenEpBuf);
270 3 }
271 2 break;
272 2
273 2 case 0xac: //读FLASH的CONFIG
274 2 {
275 3 CE_FLS =0;//选中FLASH IC
276 3 GenEpBuf[1]=XBYTE[0X8000];
277 3 GenEpBuf[2]=XBYTE[0x8001];
278 3 GenEpBuf[3]=XBYTE[0X8002];
279 3 GenEpBuf[4]=XBYTE[0x8003];
280 3 D12_WriteEndpoint(3, 5, GenEpBuf);
281 3 }
282 2 break;
283 2
284 2 case 0xad: //写FLASH的CONFIG
285 2 {
286 3 CE_FLS =0;//选中FLASH IC
287 3 XBYTE[0x5555]=0xaa;
288 3 XBYTE[0x2aaa]=0x55;
289 3 XBYTE[0x5555]=0xa0;
290 3 XBYTE[0x8000]=GenEpBuf[1];
291 3 XBYTE[0x8001]=GenEpBuf[2];
292 3 XBYTE[0x8002]=GenEpBuf[3];
293 3 XBYTE[0x8003]=GenEpBuf[4];
294 3 otp_type=GenEpBuf[4]; //更新otp_type
295 3 for (len=0;len<124;len++)
296 3 {
297 4 XBYTE[0x8004+len]=0xff;
298 4 }
299 3 DelayNms(20);
300 3 GenEpBuf[1]=XBYTE[0X8000];
301 3 GenEpBuf[2]=XBYTE[0x8001];
302 3 GenEpBuf[3]=cal_checksum()/0x100;
303 3 GenEpBuf[4]=cal_checksum()%0x100;
C51 COMPILER V8.02 ISR 12/19/2007 17:51:24 PAGE 6
304 3 D12_WriteEndpoint(3, 5, GenEpBuf);
305 3
306 3 }
307 2 break;
308 2
309 2 case 0x00: //复位
310 2 {
311 3 addr=0;addr=0;two_ci=0;two_ci=0;busb_tx=0;
312 3 D12_WriteEndpoint(3, 1, GenEpBuf);
313 3 }
314 2 break;
315 2 case 0x01: //收到连机信号,然后初始划
316 2 {
317 3 //初始化
318 3 addr=0;addr=0;two_ci=0;two_ci=0;busb_tx=0;
319 3 reconnect_USB();
320 3
321 3 }
322 2 break;
323 2 case 0x02: //收到buzzer_1信号,然后初始划
324 2 {
325 3 //初始化
326 3 addr=0;two_ci=0;busb_tx=0;
327 3 D12_WriteEndpoint(3, 1, GenEpBuf);
328 3 buzzer_1();
329 3 }
330 2 break;
331 2 case 0x03: //收到buzzer_3信号,然后初始划
332 2 {
333 3 //初始化
334 3 addr=0;two_ci=0;busb_tx=0;
335 3 D12_WriteEndpoint(3, 1, GenEpBuf);
336 3 buzzer_3();
337 3 }
338 2 break;
339 2
340 2 case 0xb0://表示烧录IC,把EE512的程序烧录到PM10P40中
341 2 {
342 3 unsigned int adr;
343 3 unsigned char i;
344 3 CE_FLS = 0; //选中FLASH IC
345 3 adr=128*GenEpBuf[1]; //start address
346 3 for(i=0; i<128; i++)
347 3 {
348 4 EpBuf[i]=XBYTE[adr];
349 4 adr++;
350 4 }
351 3 otp_write(GenEpBuf[1]);
352 3 P1=P1^0x01;
353 3 }
354 2 break;
355 2 case 0xb1://表示verify_otp(to flash)
356 2 {
357 3 unsigned int adr;
358 3 unsigned char iv;
359 3 iv=GenEpBuf[1];
360 3 pulse_read(); //???改善挑片的毛病
361 3 otp_read(iv);
362 3 P1=P1^0x01;
363 3 adr=128*iv;
364 3 CE_FLS =0;//选中FLASH IC
365 3 for(iv=0; iv<128; iv++)
C51 COMPILER V8.02 ISR 12/19/2007 17:51:24 PAGE 7
366 3 {
367 4 if(EpBuf[iv]!=XBYTE[adr++])
368 4 {
369 5 GenEpBuf[2] = 0x80|iv;
370 5 D12_WriteEndpoint(3, 3, GenEpBuf);
371 5 return;
372 5 }
373 4 }
374 3 GenEpBuf[2] = 0x00;
375 3 D12_WriteEndpoint(3, 3, GenEpBuf);
376 3 return;
377 3 }
378 2 break;
379 2 case 0xb4:
380 2 CE_FLS =0;//选中FLASH IC
381 2 EpBuf[0]=XBYTE[0x8000];
382 2 EpBuf[1]=XBYTE[0x8001];
383 2 nop; nop;
384 2 write_configue();
385 2 CE_FLS =0;//选中FLASH IC
386 2 GenEpBuf[1]=XBYTE[0X8000];
387 2 GenEpBuf[2]=XBYTE[0x8001];
388 2 D12_WriteEndpoint(3, 3, GenEpBuf);
389 2 break;
390 2
391 2 case 0xb5://VERIFY_OTPconfig(to flash)
392 2 {
393 3 EpBuf[0] =0;EpBuf[1] =0;//???
394 3 CE_FLS = 0; //选中FLASH IC
395 3 pulse_read();
396 3 read_configue();
397 3 if (((EpBuf[0]&0xdf)!=(XBYTE[0X8000]&0xdf))||((EpBuf[1]&0xdf)!=(XBYTE[0X8001]&0xdf)))
398 3 GenEpBuf[1]=0xff;
399 3 else
400 3 GenEpBuf[1]=0x00;
401 3 D12_WriteEndpoint(3, 2, GenEpBuf);
402 3 }
403 2 break;
404 2 case 0xc0://pin_test
405 2 {
406 3 if (PIN_TEST())
407 3 {
408 4 GenEpBuf[1]=1;
409 4 }
410 3 else
411 3 {
412 4 GenEpBuf[1] = 0;
413 4 }
414 3 D12_WriteEndpoint(3, 2, GenEpBuf);
415 3 }
416 2 break;
417 2 case 0xc1:
418 2 {
419 3 GenEpBuf[1] = VERSION;
420 3 D12_WriteEndpoint(3, 2, GenEpBuf);
421 3 }
422 2 break;
423 2 }
424 1 }
425
426 //主端点OUT控制
427 void main_txdone(void)
C51 COMPILER V8.02 ISR 12/19/2007 17:51:24 PAGE 8
428 {
429 1 // unsigned char len,epstatus;
430 1 D12_ReadLastTransactionStatus(5); //清中断标志
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -