📄 exper.lst
字号:
306 1 uchar i,j;
307 1
308 1 for(j=0;j<36;j++)
309 1 {
310 2 SendUserFontCmd(0,j,Upfont[j]);
311 2 }
312 1 for(j=0;j<36;j++)
313 1 {
314 2 SendUserFontCmd(1,j,Downfont[j]);
315 2 }
316 1 for(j=0;j<36;j++)
317 1 {
318 2 SendUserFontCmd(2,j,Leftfont[j]);
319 2 }
320 1 for(j=0;j<36;j++)
321 1 {
322 2 SendUserFontCmd(3,j,Rightfont[j]);
323 2 }
324 1
325 1 for(i=4;i<8;i++)
326 1 {
327 2 for(j=0;j<36;j++)
328 2 {
329 3 SendUserFontCmd(i,j,UserFont[j]);
330 3 }
331 2 }
332 1 }
333
334 void PutPage2Char(uchar da, uchar color)
335 {
336 1 uchar buf[4];
337 1
338 1 buf[0]=0x7a;
339 1 buf[1]=CursorY|0x80;
340 1 buf[2]=CursorX|0x20; // or 0x20 is the page2 font
341 1 buf[3]=da;
342 1 SendIIC(buf,4);
343 1
344 1 buf[1]|=0xa0;
345 1 buf[3]=color;
346 1 SendIIC(buf,4);
347 1
348 1 CursorX++;
349 1 if(CursorX>29)
350 1 {
351 2 CursorX=0;
352 2 CursorY++;
353 2 }
354 1 if(CursorY>14)
355 1 CursorY=0;
356 1 }
357 void ShowOSDAllFont(uchar ifInitflag)
358 {
359 1 int i=0,j=0;
360 1
361 1 ResetKey();
362 1 ClearOSD();
363 1 //Initmoudletest();
C51 COMPILER V7.06 EXPER 06/08/2006 15:01:13 PAGE 7
364 1 OpenOSDWindow(1,0,1,29,13,cyan,0);
365 1 OpenOSDWindow(2,0,0,29,14,yellow,0);
366 1 gotoxy(8,0);
367 1 for(i=0;i<13;i++)
368 1 PutChar(OSDFontall[i],7);
369 1 gotoxy(16,14);
370 1 for(i=0;i<14;i++)
371 1 PutChar(AnyKeyAway[i],7);
372 1 gotoxy(0,1);
373 1 for(i=0;i<256;i++)
374 1 {
375 2 if(i%30==0)
376 2 {
377 3 j++;
378 3 if(j==3) j++;
379 3 if(j>=8) j=1; //omit black
380 3 }
381 2 PutChar(i,j);
382 2
383 2 }
384 1 for(i=0;i<128;i++)
385 1 {
386 2 if((i+16)%30==0)
387 2 {
388 3 j++;
389 3 if(j==3) j++;
390 3 if(j>=8) j=1;
391 3 }
392 2 PutPage2Char(i,j);
393 2 }
394 1 ResetKey();
395 1 do
396 1 {
397 2 AnyKeyExit();
398 2 KeyLayer2=0;
399 2 KeyLayer1=1;
400 2 MainMenuFlg=1;
401 2 WaitKeyup();//**************
402 2 ClearOSD();
403 2 if(ifInitflag==1)
404 2 {
405 3 InitOSD();
406 3 }
407 2 TurnOSD(1);
408 2 }while(KeyLayer2!=0 );
409 1 SecondMenuFlg=0;
410 1 MainMenuFlg=1;
411 1 //InitOSD63();
412 1 //TurnOSD(1);
413 1 }
414 void ShowEnterISPmode()
415 {
416 1 ClearOSD();
417 1 ResetKey();
418 1 OpenOSDWindow(3,6,4,21,9,cyan,0);
419 1 gotoxy(9,6);
420 1 PrintString(ShowISP,11,red);
421 1 while(1)
422 1 {
423 2 }
424 1 }
425 // Handler for Interrupt # 1
C51 COMPILER V7.06 EXPER 06/08/2006 15:01:13 PAGE 8
426 void int1 (void) interrupt 2
427 {
428 1 uchar INTFLG,temp; // static int i=0; //[Bosan]3/8
429 1 EA=0;
430 1 INTFLG=XRAM[IIC_INTFLG];
431 1
432 1 if( ( XRAM[IIC_INTFLG]&0x20) !=0 ) // Slave B matched for ISP
433 1 {
434 2 XRAM[IIC_INTFLG]=INTFLG&0x08; // 00000101b, Clear interrupt flag
435 2 }
436 1 // if( ( INTFLG&0x40 ) !=0 ) // Receieved data
437 1 // {
438 1
439 1 if( (XRAM[IICSTUS]&0x80 ) !=0) // if( (XRAM[IICSTUS1]&0x80 ) !=0)
440 1 {
441 2
442 2 temp=XRAM[RCBBUF]; // i++;
443 2
444 2 if((XRAM[IICSTUS]&0x08)!=0) //if((XRAM[IICSTUS1]&0x08)!=0)
445 2 {
446 3
447 3 if(temp==0x1f)
448 3 {
449 4
450 4 IE=0;
451 4 XRAM[WDT]=0;
452 4 XRAM[ISPSLV]=0x94;
453 4 XRAM[ISPEN]=0x93;
454 4 PCON=1;
455 4 }
456 3 } }
457 1 // else
458 1 // byAutoAlignData=XRAM[RCBBUF];
459 1 // }
460 1 // IE1=0;
461 1 EA=1;
462 1
463 1 }
464
465 void int0 (void) interrupt 0
466 {
467 1 }
468 // Handler for timer 0 in 1ms timebase interrupt
469 void timer0 (void) interrupt 1
470 {
471 1 EA=0;
472 1 T1msFLAG=1;
473 1 KeyCounter++;
474 1 TimeCounter++;
475 1 IIC_counter++;
476 1 KeyP=PressKey(); //when timer interrupts,check if key is being pressed
477 1 if(TimeCounter==0)
478 1 { T256msFLAG=1;}
479 1 //if(Showsymbol==1)
480 1 //{ Showsymboladdr();}
481 1 TH0=TH0+0xfc;
482 1 TL0=TL0+0x18;
483 1 EA=1;
484 1 }
485
486 // Wait for MBUFL flag and clear it, return 1 if time out
487 bit wait_IIC()
C51 COMPILER V7.06 EXPER 06/08/2006 15:01:13 PAGE 9
488 {
489 1 bit err=0;
490 1
491 1 IIC_counter=0;
492 1 while( (XRAM[IIC_INTFLG]&0x1)==0) // Wait for MBUFl
493 1 {
494 2 if(IIC_counter>2)
495 2 {
496 3 err=1;
497 3 break;
498 3 }
499 2 }
500 1
501 1 if( ( XRAM[IICSTUS] & 0x01 ) != 0 ) // No Ack receieved from IIC slave device
502 1 err=1;
503 1
504 1 XRAM[IIC_INTFLG]=0;
505 1
506 1 return(err);
507 1 }
508
509 void InitMicroP()
510 {
511 1 // Set IIC speed to 200 kHz
512 1 XRAM[OPTION]=0x82; //MTV412 // Select 400 kHz , Disable DDC2 bypass mod
-e
513 1 //XRAM[OPTION1]=0; // Select 200 kHz , Disable DDC2 bypass mode
514 1 XRAM[IIC_INTEN]=0xe0;
515 1 //XRAM[SLVA1ADR]=0x00; //0;
516 1 XRAM[SLVA2ADR]=0x00;
517 1 XRAM[SLVBADR]=0x80|(0xc6>>1);
518 1 // Set P3.0, P3.1, P3.4, p3.5 to IIC related pins
519 1 XRAM[PADMOD0]=0x00;
520 1 XRAM[PADMOD1]=0x7f;
521 1 XRAM[PADMOD2]=0xe7;
522 1 XRAM[PADMOD3]=0x7f;
523 1 XRAM[PADMOD4]=0x0ff;
524 1 XRAM[PADMOD5]=0x00;
525 1 XRAM[PADMOD6]=0x1f;
526 1 XRAM[PADMOD7]=0x00; // Use HSCL, HSDA, ISCL, ISDA
527 1 XRAM[HVSTUS]|=0xe0; // enable composite
528 1 XRAM[HV_INTEN]=0X01; // Disable all H/V sync related interrupt
529 1 //XRAM[HVCTR2]=0x21; // Disable Self-Pattern out.
530 1 //XRAM[ISPCMP1]=0X00;
531 1 //XRAM[ISPCMP2]=0X00;
532 1 //XRAM[ISPCMP3]=0X00;
533 1
534 1 //XRAM[XBANK]=0;
535 1 // XRAM[ADC]=0x8f;
536 1 // Set Time Base=1ms
537 1 TH0=0x0fc;
538 1 TL0=0x18;
539 1 IT1=0;
540 1 TMODE=0x51; // Set Timer1=counter , Timer0=timer
541 1 TR0=1;
542 1 IE=0x86; // Enable timer 0 and interrupt 1
543 1
544 1 P1=0x0ff; // Set all bits in P1 to 1
545 1 }
546
547
548 void delay_short(unsigned int time)
C51 COMPILER V7.06 EXPER 06/08/2006 15:01:13 PAGE 10
549 {
550 1 unsigned int i;
551 1 for(i=0;i<time;i++);
552 1 }
553
554 void delay(unsigned int time) //based on 1ms
555 {
556 1 TimeCounter=0;
557 1 while (TimeCounter!=time)
558 1 {
559 2 }
560 1 }
561 // Send n byte(s) of IIC data stored in the *buf
562 // Retrun value: 0 =normal, 1= error
563 bit SendIIC(uchar *buf,uchar n)
564 {
565 1 uchar i=0;
566 1 bit err=0;
567 1 XRAM[IIC_INTFLG]=0; // Clear MBUFl
568 1 XRAM[MBUF]=buf[i]; // First byte of IIC data
569 1 XRAM[IICCTR]=0; // P=0; Keep S low
570 1 delay_short(2);
571 1 XRAM[IICCTR]=1; // S now rising
572 1 delay_short(2);
573 1
574 1 for(i=1; i<n;i++)
575 1 {
576 2 IIC_counter=0;
577 2
578 2 err=wait_IIC();
579 2
580 2 if(err==1)
581 2 break;
582 2
583 2 XRAM[MBUF]=buf[i]; // Send next byte
584 2 delay_short(4);
585 2 }
586 1 XRAM[IICCTR]=0;
587 1 XRAM[IICCTR]=0x2; // P rise, S low, Stop transmitting
588 1 delay_short(2);
589 1 return(err);
590 1 }
591 /* Send data to OSD control registers, using format A,
592 send 1 byte a time */
593 void SendOSDCmd(uchar row, uchar column,uchar value)
594 {
595 1 uchar buf[4];
596 1
597 1 buf[0]=0x7a; // Slave address of OSD IC
598 1 buf[1]=row|0xa0;
599 1 buf[2]=column&0x3f; // Mask upper 2 bits
600 1 buf[3]=value;
601 1
602 1 SendIIC(buf,4);
603 1 }
604
605 // Open an OSD window with coordinate and color, set OSDWidowStatus[WinNo]=1
606 // shadow:0 =no, 1= yes
607 void OpenOSDWindow(uchar WinNo,uchar LeftX,uchar LeftY, uchar RightX, uchar RightY, uchar color,bit
-shadow)
608 {
609 1 SendOSDCmd(15, WinNo*3, (LeftY<<4) | RightY );
C51 COMPILER V7.06 EXPER 06/08/2006 15:01:13 PAGE 11
610 1 SendOSDCmd(15, WinNo*3+1, (LeftX<<3) | 4 | ( (uchar ) shadow ) );
611 1 SendOSDCmd(15, WinNo*3+2, (RightX<<3) | ( color& 0x7) );
612 1 // OSDWindowStatus[WinNo]=1;
613 1 }
614
615 // Close the OSD window of number WinNo, set the OSDWindowStatus[WinNo]=0
616 void CloseOSDWindow(uchar WinNo)
617 {
618 1 SendOSDCmd(15,WinNo*3+1,0);
619 1 // OSDWindowStatus[WinNo]=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -