📄 function.c
字号:
/*******************************************************************************
FUNCTION.C
Copyright (c) SmartASIC, Inc. All rights reserved.
*******************************************************************************/
#include <MTV230.H>
#include <DEFINE.H>
/*===========================================================================
===========================================================================*/
void Set_Background(bit set, unsigned char color) {
code unsigned char YUV[8][3]={{0x00,0x00,0x00},
{0x4d,0xd5,0x7f},
{0x95,0xab,0x95},
{0xe2,0x80,0x15},
{0x1d,0x7f,0xeb},
{0x6a,0x55,0x6b},
{0xb2,0x2b,0x80},
{0xff,0x00,0x00}};
if(set) {
STV_Byte_Write(0x30, YUV[color][0]);
STV_Byte_Write(0x31, YUV[color][1]);
STV_Byte_Write(0x32, YUV[color][2]);
STV_Byte_Write(0x2d, STV_Byte_Read(0x2d)|0x10);
}
else {
SA7114_Byte_Write(0x88, 0x88);
SA7114_Byte_Write(0x88, 0xf8);
STV_Byte_Write(0x2d, STV_Byte_Read(0x2d)&0xef);
}
}
/*===========================================================================
===========================================================================*/
void Blank_TV_Screen(void) {
Set_Mute(1);
Set_Background(YES, BLACK);
DelayX10ms(10);
}
/*==============================================================================
==============================================================================*/
void Set_Mute(unsigned char mute) {
//MUTE=mute;
if(mute==1)
Adjust_Volume(0);
else
Adjust_Volume(Volume);
}
/*==============================================================================
==============================================================================*/
void Adjust_Volume(unsigned char value) {
code unsigned int VOLMAP[101]={
// 0 1 2 3 4 5 6 7 8 9
0x0000,0x1300,0x2300,0x2D00,0x3700,0x4100,0x4500,0x4800,0x4B00,0x4D00,//0
0x4F00,0x5100,0x5300,0x5500,0x5700,0x5800,0x5900,0x5A00,0x5B00,0x5C00,//1
0x5d00,0x5E00,0x5F00,0x6000,0x6100,0x6200,0x6300,0x6400,0x6500,0x6600,//2
0x6700,0x6800,0x6900,0x6A00,0x6B00,0x6C00,0x6D00,0x6E00,0x6F00,0x6F80,//3
0x7000,0x7080,0x7100,0x7180,0x7200,0x7220,0x7240,0x7260,0x7280,0x72A0,//4
0x72C0,0x72E0,0x7300,0x7320,0x7340,0x7360,0x7380,0x73A0,0x73C0,0x73E0,//5
0x7400,0x7420,0x7440,0x7460,0x7480,0x74A0,0x74C0,0x74E0,0x7500,0x7520,//6
0x7540,0x7560,0x7580,0x75A0,0x75C0,0x75E0,0x7600,0x7620,0x7640,0x7660,//7
0x7680,0x76A0,0x76C0,0x76E0,0x7700,0x7720,0x7740,0x7760,0x7780,0x77A0,//8
0x77C0,0x77E0,0x7800,0x7820,0x7840,0x7860,0x7880,0x78A0,0x78C0,0x78E0,//9
0x7900};
MSP_Write_Address(WR_DSP, 0x0000, VOLMAP[value]);//Loudspeaker
}
/*==============================================================================
==============================================================================*/
void Set_Treble(unsigned char value) {
if(value>49)
MSP_Write_Address(WR_DSP, 0x0003, ((value-50)*2)*0x100);
else
MSP_Write_Address(WR_DSP, 0x0003, (255-((50-value)*2))*0x100);
}
/*==============================================================================
==============================================================================*/
void Set_Bass(unsigned char value) {
if(value>49)
MSP_Write_Address(WR_DSP, 0x0002, ((value-50)*2)*0x100);
else
MSP_Write_Address(WR_DSP, 0x0002, (255-((50-value)*2))*0x100);
}
/*==============================================================================
==============================================================================*/
void Set_Balance(unsigned char value) {
if(value>49)//r
MSP_Write_Address(WR_DSP, 0x0001, ((value-50)*2)*0x100);
else//l
MSP_Write_Address(WR_DSP, 0x0001, (255-((50-value)*2))*0x100);
}
/*===========================================================================
===========================================================================*/
void Set_Color_Temp(unsigned char color_mode) {
switch(color_mode) {
case(0):
ColorAddress=EE_COLOR_STD;
break;
case(1):
ColorAddress=EE_COLOR_WARM;
break;
case(2):
ColorAddress=EE_COLOR_COOL;
break;
}
STV_Gain(0, EE_MCU_Byte_Read(ColorAddress+0));//Gain
STV_Gain(1, EE_MCU_Byte_Read(ColorAddress+1));
STV_Gain(2, EE_MCU_Byte_Read(ColorAddress+2));
STV_Offset(0, EE_MCU_Byte_Read(ColorAddress+3));//Offset
STV_Offset(1, EE_MCU_Byte_Read(ColorAddress+4));
STV_Offset(2, EE_MCU_Byte_Read(ColorAddress+5));
}
/*===========================================================================
===========================================================================*/
unsigned char Video_Detection(void) {
unsigned char video, video_type;
video=SA7114_Byte_Read(0x1f);
if((video&0x40)==0x40) {//H unlocked
video_type=NOVIDEO;
}
else {//H Locked
switch(video&0x21) {
case(0x20)://NTSC B&W
case(0x21):
video_type=NTSC;
break;
case(0x01):
video_type=PAL;
break;
/* case(3):
video_type=SECAM;
break;*/
default:
video_type=NOVIDEO;
break;
}
}
return video_type;
}
/*==============================================================================
==============================================================================*/
void Video_Setting(unsigned char v_system) {
//===== the setting of stv102 for 50hz =====//
code unsigned char STV_50Hz[14][2]={{0x03,0x40},{0x04,0x02},{0x07,0x3f},{0x08,0x02},{0x19,0x40},
{0x1a,0x02},{0x1d,0x3f},{0x1e,0x02},{0x0b,0x1b},{0x0d,0x1a},
{0x13,0x47},{0xd1,0xd8},{0xda,0x80},{0xdb,0xed}};
//===== the setting of stv102 for 60hz =====//
code unsigned char STV_60Hz[14][2]={{0x03,0xe4},{0x04,0x01},{0x07,0xe3},{0x08,0x01},{0x19,0xe4},
{0x1a,0x01},{0x1d,0xe3},{0x1e,0x01},{0x0b,0x15},{0x0d,0x14},
{0x13,0x3f},{0xd1,0xdb},{0xda,0xb0},{0xdb,0xc9}};
//===== the setting of saa7114 for 50hz =====//
code unsigned char SA7114_50Hz[10][2]={{0x06,0x0a},{0x07,0x00},{0x15,0x15},{0x16,0x34},
{0x5a,0x0a},{0x9a,0x38},{0x9b,0x01},{0x9e,0x36},{0x9f,0x01}};
//===== the setting of saa7114 for 60hz =====//
code unsigned char SA7114_60Hz[10][2]={{0x06,0xeb},{0x07,0xe0},{0x15,0x11},{0x16,0x01},
{0x5a,0x00},{0x9a,0x04},{0x9b,0x01},{0x9e,0x04},{0x9f,0x01}};
unsigned char i;
switch(v_system) {
case(PAL):/******* input frequency is 50hz *******/
for(i=0;i<10;i++)
SA7114_Byte_Write(SA7114_50Hz[i][0], SA7114_50Hz[i][1]);
for(i=0;i<14;i++)
STV_Byte_Write(STV_50Hz[i][0], STV_50Hz[i][1]);
SA7114_Byte_Write(0x0e, SA7114_Byte_Read(0x0e)&0xf7);
break;
case(NTSC):/******* input frequency is 60hz *******/
for(i=0; i<10; i++)
SA7114_Byte_Write(SA7114_60Hz[i][0], SA7114_60Hz[i][1]);
for(i=0;i<14;i++)
STV_Byte_Write(STV_60Hz[i][0], STV_60Hz[i][1]);
SA7114_Byte_Write(0x0e, SA7114_Byte_Read(0x0e)|0x08);
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -