⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exper.lst

📁 我使用的是MYSON的MTV412 MCU+MTV048
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -