📄 v46x_common.lst
字号:
227 2 /*
228 2 if ( !Vertical && !Horizontal )
229 2 offset = i;
230 2 else if ( !Vertical && Horizontal )
231 2 offset = (i/width)*width + width - 1 - i%width;
232 2 else if ( Vertical && !Horizontal )
233 2 offset = (hight - 1 - i/width)*width + i%width;
234 2 else
235 2 offset = (hight - 1 - i/width)*width + width -1 - i%width;
236 2 */
237 2 offset = i;
238 2
239 2 I2C_WriteByte(V462_WRID, OSDDATA_L, buf[offset]);
240 2 I2C_WriteByte(V462_WRID, OSDDATA_H, 0x04);
C51 COMPILER V7.50 V46X_COMMON 12/14/2006 10:36:44 PAGE 5
241 2 }
242 1
243 1 I2C_WriteByte(V462_WRID, ORWCTRL, 0x04); //Disable OSD Reg. Read/Write
244 1 }
245
246
247 void Show_Subwin(BYTE subwin)
248 {
249 1 BYTE buf[2];
250 1
251 1 Subwin = subwin;
252 1
253 1 buf[0] = Subwin;
254 1 buf[1] = Subwin;
255 1 buf[2] = Subwin;
256 1 Write_OSDReg(buf, SEL_OSDCTRLREG, 3, 0x14);
257 1 }
258
259
260 void OSD_SubWin_Attr(BYTE subwin, BYTE hstart, BYTE vstart, BYTE width, BYTE hight, BYTE cstart)
261 {
262 1 BYTE buf[8];
263 1
264 1 buf[0] = hstart * 3 + 0x25;
265 1 buf[1] = width - 1;
266 1 buf[2] = (unsigned int)vstart * 18 / 4;
267 1 buf[3] = hight - 1;
268 1 buf[4] = 0x00;
269 1 buf[5] = 0x00;
270 1 buf[6] = 0x00;
271 1 buf[7] = cstart;
272 1 Write_OSDReg(buf, SEL_OSDCTRLREG, 8, 0x20+subwin*8); // init OSD sub Win X
273 1 }
274
275 void Set_VideoPP(BYTE video_pp)
276 {
277 1 video_pp = 0;
278 1
279 1 switch (video_pp)
280 1 {
281 2 case 0 :
282 2 Brightness = S_Brightness;
283 2 Contrast = S_Contrast;
284 2 Saturation = S_Saturation;
285 2 Sharpen = S_Sharpen;
286 2 break;
287 2 case 1 :
288 2 Brightness = 0x1D;
289 2 Contrast = 0x1D;
290 2 Saturation = 0x20;
291 2 Sharpen = 0x1A;
292 2 break;
293 2 case 2 :
294 2 Brightness = 0x1D;
295 2 Contrast = 0x1D;
296 2 Saturation = 0x18;
297 2 Sharpen = 0x1A;
298 2 break;
299 2 case 3 :
300 2 Brightness = 0x1D;
301 2 Contrast = 0x1D;
302 2 Saturation = 0x24;
C51 COMPILER V7.50 V46X_COMMON 12/14/2006 10:36:44 PAGE 6
303 2 Sharpen = 0x1A;
304 2 break;
305 2 case 4 :
306 2 Brightness = 0x20;
307 2 Contrast = 0x20;
308 2 Saturation = 0x20;
309 2 Sharpen = 0x1A;
310 2 break;
311 2 }
312 1 Adj_Brightness(Brightness);
313 1 Adj_Contrast(Contrast);
314 1 Adj_Saturation(Saturation);
315 1 Adj_Sharpen(Sharpen);
316 1 }
317
318
319 void Adj_Volume(BYTE volume)
320 {
321 1 if (_Volume == volume )
322 1 return;
323 1
324 1 _Volume = volume;
325 1 /*
326 1 if ( volume == 0 )
327 1 volume = 0xFF;
328 1 else
329 1 volume = (50 - volume) * 2 ;
330 1 */
331 1 if ( volume == 0 )
332 1 PWM_VOLUME = 0;
333 1 else
334 1 PWM_VOLUME = volume*2.5+126;
335 1 }
336
337
338 void Adj_Brightness(BYTE value)
339 {
340 1 char i;
341 1
342 1 if ( Source_type == TV_CHL )
343 1 value+=5;
344 1 value = value * 2 + 0xA0 - 50;
345 1 for (i=0; i<3; i++)
346 1 I2C_WriteByte(V462_WRID, i+0x10, value);
347 1 }
348
349
350 void Adj_Contrast(BYTE value)
351 {
352 1 char i;
353 1
354 1 value = value * 2 + 0x58 - 50;
355 1 for (i=0; i<3; i++)
356 1 I2C_WriteByte(V462_WRID, i+0x0D, value);
357 1 }
358
359
360 void Adj_Saturation(BYTE value)
361 {
362 1 if ( value <= 25 )
363 1 value = value*5;
364 1 else
C51 COMPILER V7.50 V46X_COMMON 12/14/2006 10:36:44 PAGE 7
365 1 value = (value-25)*2+125;
366 1
367 1 I2C_WriteByte(V462_WRID, 0x13, value);
368 1 }
369
370
371 void Adj_Sharpen(char value)
372 {
373 1 BYTE va, vb;
374 1
375 1 value = value*2+30;
376 1
377 1 if (value & 0x40)
378 1 {
379 2 value = (value - 0x40) << 1; //value is plus
380 2 va = 0xFF - value + 1;
381 2 vb = value + 64;
382 2 }
383 1 else
384 1 {
385 2 value = 0x40 - value; //value is minus
386 2 va = value;
387 2 vb = 64 - value;
388 2 }
389 1
390 1 I2C_WriteByte(V462_WRID, 0x1E, va);
391 1 I2C_WriteByte(V462_WRID, 0x1F, vb);
392 1 I2C_WriteByte(V462_WRID, 0x20, va);
393 1 }
394
395 void Adj_Hue(char value)
396 {
397 1 if ( _Hue == value )
398 1 return;
399 1
400 1 _Hue = value;
401 1
402 1 value *= 2;
403 1 value -= 50;
404 1 I2C_WriteByte(V462_WRID, 0x14, value);
405 1 }
406
407 void V46X_Init()
408 {
409 1 PanelOFF;
410 1
411 1 SYS_RST=1; // V462 reset
412 1 Delay(10000);
413 1 SYS_RST=0; // V462 reset
414 1 Delay(10000);
415 1 SYS_RST=1;
416 1 Delay(8000);
417 1
418 1 V46X_RegInit();
419 1 // SETCKH;
420 1
421 1 ScreenOFF;
422 1
423 1 CVD1OFF; //Reset TV-Decoder
424 1 CVD1ON; //
425 1 // PanelON;
426 1 I2C_WriteByte(V462_WRID, ORWCTRL, CLR_OSD_BUF); //Clear OSD buffer
C51 COMPILER V7.50 V46X_COMMON 12/14/2006 10:36:44 PAGE 8
427 1
428 1 /*
429 1 Write_OSDReg(OSDCtrlVal_Title, SEL_OSDCTRLREG, 10, 0); //write 10 byte
430 1
431 1 OSD_SubWin_Attr(7,0,5,10,1,0); //Display '***' in Subwin 7
432 1 Write_OSDCode(UserOSD, 10, 1, 0); //Write OSD Code buffer
433 1 OSD_Attribute(0, 10, FG_COLOR_H, BG_COLOR); //Set Title line attribute
434 1
435 1 Show_Subwin(0x80);
436 1 */
437 1 // V46X_Gamma_Init();
438 1
439 1 Write_OSDReg(&Font12x18[0], 0x01, 64, 0x00); //Write Font code
440 1
441 1 Show_Subwin(0x00);
442 1
443 1 Write_OSDReg(OSDCtrlVal, SEL_OSDCTRLREG, 10, 0); //write 10 byte
444 1 // PanelON;
445 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1756 ----
CONSTANT SIZE = 4628 ----
XDATA SIZE = 2 55
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -