📄 osdfunc.lst
字号:
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 + -