?? process.c
字號:
#include "define.h"
#include "variable.h"
#include "I2C.h"
#include "osddisplay.h"
#include "key.h"
#include "IEBus.h"
#include "memory.h"
#include "video.h"
extern void Send_Char(uchar c);
void Rev_Process(uchar c);
void Mode_Process(uchar c);
/*{0x17,0xA0,0x87,0xA4,0x5C,0x6E,0x63,0x83,0x01};*/
void Variable_Init(void)
{
SysMenuDisplayFlg=0x00;
WindowDispFlag=NO_WINDOW;
SysWindowsOff;
SysMenuCnt=0;
VideoMenuCnt=0;
}
void Video_Init(void)
{
MemoryInit_Check();
/*
SysMenuBright=0x1f;
SysMenuColor=0xA5;
SysMenuCont=0x82;
SysMenuPic=0x5a;
SysMenuTint=0x9D;
SysMenuCom=0x81;
SysMenuSubr=0x6B;
SysMenuSubb=0x60;
*/
Pwm_Process(CTRADDR, 0x7C);//0x7c
Pwm_Process(BRIGHTADDR,SysMenuBright);//+VideoMenuBright);
Pwm_Process(COLORADDR, SysMenuColor);//+VideoMenuColor);
Pwm_Process(CONTADDR, SysMenuCont);//+VideoMenuCont);
Pwm_Process(PICADDR, SysMenuPic);
Pwm_Process(TINTADDR, SysMenuTint);
Pwm_Process(COMADDR, SysMenuCom);
Pwm_Process(SUBRADDR, SysMenuSubr);
Pwm_Process(SUBBADDR, SysMenuSubb);
Rev_Process(2);
Mode_Process(0);
Osd_Init();
Logo_Disp();
//Yc_Process(0x4f,0x00,0xd0);
//Yc_Process(0x00,0x00,0x00);
}
void Pwm_On(void)
{
ICR1 =150;//210;//0xD5;//8M/8/D5=4.7K
OCR1A=67;//0x6A;
TCCR1A=0x82;//0x82;
//TCCR1B=0x1A;//clk/8
TCCR1B=0x1B;//clk/64
//TCCR1B=0x1C;//clk/256
}
void Pwm_Off(void)
{
TCCR1A=0x82;//0x82;
TCCR1B=0x18;//clk/8
}
void SysOn_Init(void)//開機初始化
{
Variable_Init();
I2c_Init();
DECODE_High;
VGHGL_High;//+-
NmDelay(200);
Video_Init();
NmDelay(200);
//Pwm_On();
NmDelay(100);
HIGHV_High;//高壓
NmDelay(100);
if(!ConnectVal)
{
Osd_Clear();
Windows_Close();
}
Rev_Process(VideoMenuRev);
Mode_Process(VideoMenuMode);
LED1_High;
LED2_High;
INT1_Enable;
}
void SysOff_Init(void)//關機初始化
{
INT1_Disable;
HIGHV_Low;//高壓
VGHGL_Low;//+-
if(!ConnectVal)//未聯機
Memory_Save(0);
//Memory_Save(1);
//Pwm_Off();
NmDelay(200);
DECODE_Low;
ConnectNo;
LED1_Low;
LED2_Low;
}
void Rev_Process(uchar c)
{
switch(c)
{
case 0:
case 2:UD_Low;LR_High; break;
case 1:UD_High;LR_Low;break;
case 3:UD_High;LR_High;break;
case 4:UD_Low;LR_Low;break;
default:break;
}
}
void Mode_Process(uchar c)
{
if(c==0)
MODE_Low;
else
MODE_High;
}
void Ctr_Process(void)
{
if(WindowDispFlag==VIDEO_WINDOW)//user setting
switch(VideoMenuCnt)
{
case NUM_BRIGHT: Pwm_Process(BRIGHTADDR,SysMenuBright+VideoMenuBright);break;
case NUM_COLOR: Pwm_Process(COLORADDR,SysMenuColor+VideoMenuColor); break;
case NUM_CONT: Pwm_Process(CONTADDR,SysMenuCont+VideoMenuCont); break;
case NUM_REV: Rev_Process(VideoMenuRev); break;
case NUM_MODE: Mode_Process(VideoMenuMode); break;
default:break;
}
else if(SysWindowsVal)//sytem setting
switch(SysMenuCnt)
{
case NUM_BRIGHT: Pwm_Process(BRIGHTADDR,SysMenuBright);break;
case NUM_COLOR: Pwm_Process(COLORADDR, SysMenuColor); break;
case NUM_CONT: Pwm_Process(CONTADDR, SysMenuCont); break;
case NUM_PIC: Pwm_Process(PICADDR, SysMenuPic); break;
case NUM_TINT: Pwm_Process(TINTADDR, SysMenuTint); break;
case NUM_COM: Pwm_Process(COMADDR, SysMenuCom); break;
case NUM_SUBR: Pwm_Process(SUBRADDR, SysMenuSubr); break;
case NUM_SUBB: Pwm_Process(SUBBADDR, SysMenuSubb); break;
default:break;
}
}
void Disp_Process(void)
{
if(SysWindowsVal)//System
{
Sysdata_Updata();
}
else if(WindowDispFlag==VIDEO_WINDOW)//user setting
{
Videodata_Updata();
}
}
void KeyPower_Process(void)
{
if(PowVal)//如果開機
{
SysOff_Init();
PowOff;//關機
}
else
{
SysOn_Init();
PowOn;
}
}
void KeySet_Process(void)
{
if(WindowDispFlag==VIDEO_WINDOW)
{
WindowDispFlag=NO_WINDOW;
Windows_Close();
SysWindowsOff;
}
else
{
WindowDispFlag=VIDEO_WINDOW;
SysWindowsOff;
VideoSet_Windows();
//SoundSet_Windows();
//UsrSet_Windows();
//RadioFreCH++;
//if(RadioFreCH>8)
// RadioFreCH=0;
//RadioDisp_Windwos();
//DvcDisp_Windows();
}
}
void KeyVolInc_Process(void)//UP
{
if(SysMenuDisplayFlg==0||SysMenuDisplayFlg==1)
SysMenuDisplayFlg=1;
else
SysMenuDisplayFlg=0xff;
if(WindowDispFlag==VIDEO_WINDOW)//if video set close return
{
if(VideoMenuCnt>0)
VideoMenuCnt--;
else
VideoMenuCnt=VIDEOMENU_NUM-1;
}
else if(SysWindowsVal)//system setting
{
if(SysMenuCnt>0)
SysMenuCnt--;
else
SysMenuCnt=SYSMENU_NUM-1;
}
Disp_Process();
}
void KeyVolDec_Process(void)//DOWN
{
if(SysMenuDisplayFlg==1||SysMenuDisplayFlg==2)
SysMenuDisplayFlg=2;
else
SysMenuDisplayFlg=0xff;
if(WindowDispFlag==VIDEO_WINDOW)//if video set close return
{
VideoMenuCnt++;
if(VideoMenuCnt>=VIDEOMENU_NUM)
VideoMenuCnt=0;
}
else if(SysWindowsVal)//system setting
{
SysMenuCnt++;
if(SysMenuCnt>=SYSMENU_NUM)
SysMenuCnt=0;
}
Disp_Process();
}
void KeyPrev_Process(void)//LEFT
{
if(SysMenuDisplayFlg==3)
{
SysMenuDisplayFlg=0xff;
SysWindowsOn;
WindowDispFlag=NO_WINDOW;
Sysdata_Updata();
return;
}
else
SysMenuDisplayFlg=0xff;
if(WindowDispFlag==VIDEO_WINDOW)//if video set close return
switch(VideoMenuCnt)
{
case NUM_BRIGHT: if(VideoMenuBright>0) VideoMenuBright--;break;
case NUM_COLOR: if(VideoMenuColor>0) VideoMenuColor--; break;
case NUM_CONT: if(VideoMenuCont>0) VideoMenuCont--; break;
case NUM_REV: if(VideoMenuRev>1) VideoMenuRev--; break;
case NUM_MODE: if(VideoMenuMode>0) VideoMenuMode--; break;
default: break;
}
else if(SysWindowsVal)//system setting
switch(SysMenuCnt)
{
case NUM_BRIGHT : if(SysMenuBright>0) SysMenuBright--;break;
case NUM_COLOR: if(SysMenuColor>0) SysMenuColor--; break;
case NUM_CONT: if(SysMenuCont>0) SysMenuCont--; break;
case NUM_PIC: if(SysMenuPic>0) SysMenuPic--; break;
case NUM_TINT: if(SysMenuTint>0) SysMenuTint--; break;
case NUM_COM: if(SysMenuCom>0) SysMenuCom--; break;
case NUM_SUBR: if(SysMenuSubr>0) SysMenuSubr--; break;
case NUM_SUBB: if(SysMenuSubb>0) SysMenuSubb--; break;
default: break;
}
Disp_Process();
Ctr_Process();
}
void KeyNext_Process(void)//RIGHT
{
if(SysMenuDisplayFlg==2||SysMenuDisplayFlg==3)
SysMenuDisplayFlg=3;
else
SysMenuDisplayFlg=0xff;
if(WindowDispFlag==VIDEO_WINDOW)//if video set close return
switch(VideoMenuCnt)
{
case NUM_BRIGHT: VideoMenuBright++;if(VideoMenuBright>16) VideoMenuBright=16;break;
case NUM_COLOR: VideoMenuColor++; if(VideoMenuColor>16) VideoMenuColor=16; break;
case NUM_CONT: VideoMenuCont++; if(VideoMenuCont>16) VideoMenuCont=16; break;
case NUM_REV: VideoMenuRev++; if(VideoMenuRev>4) VideoMenuRev=4; break;
case NUM_MODE: VideoMenuMode++; if(VideoMenuMode>1) VideoMenuMode=1; break;
default:break;
}
else if(SysWindowsVal)//system setting
switch(SysMenuCnt)
{
case NUM_BRIGHT: if(SysMenuBright<0xFF) SysMenuBright++;break;
case NUM_COLOR: if(SysMenuColor<0xFF) SysMenuColor++; break;
case NUM_CONT: if(SysMenuCont<0xFF) SysMenuCont++; break;
case NUM_PIC: if(SysMenuPic<0xFF) SysMenuPic++; break;
case NUM_TINT: if(SysMenuTint<0xFF) SysMenuTint++; break;
case NUM_COM: if(SysMenuCom<0xFF) SysMenuCom++; break;
case NUM_SUBR: if(SysMenuSubr<0xFF) SysMenuSubr++; break;
case NUM_SUBB: if(SysMenuSubb<0xFF) SysMenuSubb++; break;
default: break;
}
Disp_Process();
Ctr_Process();
}
void SendDataToBus(uchar Cmd,uchar Val,uchar LongFlag)
{
IEBus_TBroadcast=0x80;//0x80;
IEBus_THAddr=IEBus_MASTERADDR>>4;
IEBus_TLAddr=(uchar)(IEBus_MASTERADDR<<4);
IEBus_TLength=3;
IEBus_TData0=Cmd;//CMD_KEY;//Cmd_KEY
IEBus_TData1=Val;//KeyPrevious;//KEY
if(LongFlag)//(KeyLongFlagVal)
IEBus_TData2=0x01;//Val
else
IEBus_TData2=0x00;//Val
IEBus_SendData(IEBus_TxBuf);
}
/*********************************************
按鍵處理方式:當面板與外界(主控制板)聯機時,收集到的按鍵直接傳輸給總線
當面板沒有與外界聯機,單獨使用時,響應按鍵,但只對面板的video調節的按鍵起作用
*********************************************/
void Key_Process(void)
{
if(!ConnectVal)//if not connect mainboard
{
if((KeyPrevious!=KEYPOWER)&&(!PowVal))//如果沒有開機,按下的不是power則返回
return;
switch(KeyPrevious)
{
case KEYPOWER:
KeyPower_Process();
break;
case KEYSET:
KeySet_Process();
break;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -