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

📄 osdfunc.lst

📁 MST720-DEMO程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 198   1              fz=0;
 199   1              
 200   1              for(i=100; i>0; i/=10)
 201   1              {
 202   2                      ucDat=(unsigned char)(dt/i);
 203   2                      if(!fz)
 204   2                      {
 205   3                              if(ucDat!=0)
 206   3                                      fz=1;
 207   3                      }
 208   2          
 209   2                      if(fz)
 210   2                      {
 211   3                              dt=dt-ucDat*i;
 212   3                              ucDat=ucDat+_0;
 213   3                              osdOSDPrintIcon(xPos++, yPos, ucDat, FGC, BGC);
 214   3                      }
 215   2                      else
 216   2                      {
 217   3                              osdOSDPrintIcon(xPos++, yPos, __, FGC, BGC);
 218   3                      }
 219   2              }
 220   1        
 221   1              if(!fz)
 222   1                      osdOSDPrintIcon((xPos-1), yPos, _0, FGC, BGC);
 223   1      }
 224          
 225          void osdOSDPrintAdjustBar(BYTE xPos, BYTE yPos, BYTE MAX, BYTE val, BYTE FGC, BYTE BGC)
 226          {
 227   1              float remainder;
 228   1              WORD uwAddress;
 229   1              BYTE i;
 230   1              WORD kk;
 231   1              BYTE  ff[30];
 232   1      
 233   1              osdOSDSetStringColor(FGC, BGC);
 234   1      
 235   1              uwAddress=yPos*OSD_MAINMENU_WIDTH+xPos;
 236   1          
 237   1              kk=val;
 238   1              ff[18]=kk*9/MAX;
 239   1              ff[19]=(kk*9)%MAX;
 240   1              //remainder=(float)ff[19]/MAX*7;                // For 7 scale
C51 COMPILER V7.50   OSDFUNC                                                               03/18/2008 22:29:10 PAGE 5   

 241   1              remainder=(float)ff[19]/MAX*5;          // for 5 scale
 242   1      
 243   1              ff[0]=_GUAGESTART;
 244   1              i=1;
 245   1              if(ff[18] >= 1)
 246   1              {
 247   2                      for(; i <= ff[18]; i++)
 248   2                              ff[i]=_GUAGE4_4;
 249   2              }
 250   1      
 251   1              if(remainder != 0)
 252   1              {
 253   2                      if(remainder >0   && remainder <1.0) ff[i]=_GUAGE0_4; else 
 254   2                      if(remainder >=1.0 && remainder <2.0) ff[i]=_GUAGE1_4; else
 255   2                      if(remainder >=2.0 && remainder <3.0) ff[i]=_GUAGE2_4; else
 256   2                      if(remainder >=3.0 && remainder <4.0) ff[i]=_GUAGE3_4; else
 257   2                      if(remainder >=4.0 && remainder <5.0) ff[i]=_GUAGE4_4; /*else
 258   2                      if(remainder >=5.0 && remainder <6.0) ff[i]=0x5A; else  // For 7 scale
 259   2                      if(remainder >=6.0 && remainder <7.0) ff[i]=0x5B;*/     // For 7 scale
 260   2                      i++;
 261   2              }
 262   1             
 263   1              while(i<10)
 264   1                      ff[i++]=_GUAGE0_4;
 265   1              ff[10]=_GUAGEEND;
 266   1      
 267   1              mstWriteWord(BK0_A9_DISPAA_H, uwAddress);               // BK0_A8_DISPAA_L, BK0_A9_DISPAA_H
 268   1              for(i = 0; i<11; i++)
 269   1              {
 270   2                      mstWriteByte(BK0_AA_DISPAD, g_ucOsdFontColor);
 271   2              }
 272   1      
 273   1              mstWriteWord(BK0_A6_DISPCA_H, uwAddress);               // BK0_A5_DISPCA_L, BK0_A6_DISPCA_H
 274   1              for(i = 0; i<11; i++)
 275   1              {
 276   2                      mstWriteByte(BK0_A7_DISPCD, ff[i]);
 277   2              }
 278   1                      
 279   1      }
 280          #endif
 281          
 282          void osdOSDSetBlockColor(BYTE xPos, BYTE yPos, BYTE width, BYTE height, BYTE FGC, BYTE BGC)
 283          {
 284   1              WORD uwAddress;
 285   1      
 286   1              osdOSDSetStringColor(FGC, BGC);
 287   1      
 288   1              uwAddress = yPos*OSD_MAINMENU_WIDTH+xPos;
 289   1      
 290   1              for (yPos = 0; yPos < height; yPos++)
 291   1              {
 292   2                      mstWriteWord(BK0_A9_DISPAA_H, uwAddress);       // BK0_A8_DISPAA_L, BK0_A9_DISPAA_H
 293   2                      
 294   2                      for (xPos = 0; xPos < width; xPos++)
 295   2                      {
 296   3                              mstWriteByte(BK0_AA_DISPAD, g_ucOsdFontColor);
 297   3                      }
 298   2                      
 299   2                      uwAddress += OSD_MAINMENU_WIDTH;
 300   2              }
 301   1      }
 302          
C51 COMPILER V7.50   OSDFUNC                                                               03/18/2008 22:29:10 PAGE 6   

 303          void osdOSDClearBlock(BYTE xPos, BYTE yPos, BYTE width, BYTE height)
 304          {
 305   1              WORD uwAddress;
 306   1              uwAddress = yPos*OSD_MAINMENU_WIDTH+xPos;
 307   1              
 308   1              for (yPos = 0; yPos < height; yPos++)
 309   1              {
 310   2                      mstWriteWord(BK0_A6_DISPCA_H, uwAddress);       // BK0_A5_DISPCA_L, BK0_A6_DISPCA_H
 311   2                      
 312   2                      for(xPos = 0; xPos < width; xPos++)
 313   2                      {
 314   3                              mstWriteByte(BK0_A7_DISPCD, __);
 315   3                      }
 316   2                      
 317   2                      uwAddress += OSD_MAINMENU_WIDTH;
 318   2              }
 319   1      
 320   1      }
 321          
 322          void osdSetTransparency(BYTE TransValue)
 323          {
 324   1              mstWriteByte(BK0_62_DITHCTL1, 0x41);
 325   1              TransValue &= 0x07;
 326   1              mstWriteByte(BK0_63_OSD_CTL, ((mstReadByte(BK0_63_OSD_CTL)&0xF8)|TransValue));
 327   1      }
 328          
 329          /*
 330          void OSD_Test(void)
 331          {
 332                  BYTE index;
 333          
 334                  mstWriteByte(BK0_A6_DISPCA_H, 0x00);
 335                  mstWriteByte(BK0_A5_DISPCA_L, 0x00);
 336                  for(index=0; index < 100; index++)
 337                          mstWriteByte(BK0_A7_DISPCD, index);
 338          
 339                  mstWriteByte(BK0_A9_DISPAA_H, 0x00);
 340                  mstWriteByte(BK0_A8_DISPAA_L, 0x00);
 341                  for(index=0; index < 100; index++)
 342                          mstWriteByte(BK0_AA_DISPAD, 0x25);
 343          
 344          }*/
 345          
 346          void osdOsdInitial(void)
 347          {
 348   1              mstWriteByte(GEN_00_REGBK, REGBANKSCALER);
 349   1      
 350   1              
 351   1              osdOSDClearAll();
 352   1              // disable OSD
 353   1              osdOSDWriteByte(OSD_0C_IOSDC1, 0x00);
 354   1              // enable double
 355   1              osdOSDWriteByte(OSD_01_OSDDBC, 0x5);
 356   1              // disable OSD code buffer Base/Offset address
 357   1              osdOSDWriteByte(OSD_12_OCBUFO, 0x00);
 358   1              // shadow function control
 359   1              osdOSDWriteByte(OSD_0E_IOSDC3, ((OSD_WIN_SHADOW_TYPE<<5)+(OSD_WIN_SHADOW_EN<<4)+(OSD_WIN_SHADOW_COLOR&0x0
             -F)));        
 360   1              // shadow height and width control
 361   1              osdOSDWriteByte(OSD_0F_OSHC, (((OSD_WIN_SHADOW_HEIGHT<<4)&0xF0)+(OSD_WIN_SHADOW_WIDTH&0x0F)));
 362   1              // Set OSD window size and position
 363   1              osdOSDSetFrame(OSD_WIN_POS_HStart, OSD_WIN_POS_VStart, OSD_MAINMENU_WIDTH, OSD_MAINMENU_HEIGHT);
C51 COMPILER V7.50   OSDFUNC                                                               03/18/2008 22:29:10 PAGE 7   

 364   1              
 365   1              // Set OSD space function
 366   1              osdOSDWriteByte(OSD_08_OHSPA, ((OSD_WIN_SPACE_HStart-1)&0x3F));
 367   1              osdOSDWriteByte(OSD_09_OVSPA, ((OSD_WIN_SPACE_VStart-1)&0x1F));
 368   1              osdOSDWriteByte(OSD_0A_OSPW, OSD_WIN_SPACE_WIDTH);
 369   1              osdOSDWriteByte(OSD_0B_OSPH, OSD_WIN_SPACE_HEIGHT);
 370   1              // Set OSD character border
 371   1              osdOSDWriteByte(OSD_0D_IOSDC2, ((OSD_CHAR_BODER_TYPE<<5)+(OSD_CHAR_BODER_WIDTH<<4)+(OSD_CHAR_BODER_COLOR&
             -0x0F)));
 372   1      
 373   1              // Set OSD palette 16 color
 374   1              osdOSDWriteByte(OSD_10_IOSDC4, 0x01);
 375   1      
 376   1              mstWriteByte(BK0_A0_OSDIOA, 0x9E);
 377   1              // load osd fonts
 378   1              osdOSDLoadFont(0, &tOSDFont0, sizeof(tOSDFont0));
 379   1              // load osd palette 
 380   1              osdOSDLoadPalette(&tOSDColorPalette0, sizeof(tOSDColorPalette0));
 381   1          
 382   1              //osdOSDDisable();
 383   1      
 384   1      }
 385          
 386          
 387          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1578    ----
   CONSTANT SIZE    =   5010    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1     106
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -