?? keyfuncx.c
字號:
//#include <at89x52.H> // SFR definition header file
#include <reg54.h>
#include <stdio.h> // prototype declarations for I/O functions
#include <rtx51tny.h> /* RTX-51 tiny functions & defines */
#include "function.h"
#include "SystemEvent.h"
#include "UART.h"
#include "ExtVar.h"
#include "RTOS.h"
#include "string.h"
code unsigned char _Str1[]={"Run HDMIDemo0. "};
code unsigned char _Str2[]={"Finish... "};
code unsigned char _Str3[]={"Continue. "};
code unsigned char _Str4[]={"Break. "};
code unsigned char _DemoItemsCount[8]={
1,3,4,2,2,3,3,6/*,3,5,3*/};
//unsigned char _StateFlag=_Initiate;
void RunAL720DemoX(unsigned char _DemoType,unsigned char _DemoIndeX);
code unsigned char *_DemoXLabel[]={
"0.Init ",
"1.H/V sync detect ",
"2.IR detect ",
"3.Input select ",
"4.Read EDID VGA ",
"5.Read EDID HDMI ",
"6.I2C read ",
"7.I2C write "
/*
"8.Set data length ",
"9.Read I2C ",
"a.Write I2C "
*/
};
//"1.H/V sync detect ",
#define _H_freq 0
#define _V_freq 1
#define _Video_mode 2
#define _Quad_4_1_CS 3
code unsigned char *_Demo0Label[]={
"a.H freq ",
"b.V freq ",
"c.Video mode",
"Exit "
};
//"2.IR detect ",
#define _16ChMonitor 0
#define _13ChMonitor 1
#define _9ChMonitor 2
#define _6ChMonitor 3
#define _4ChMonitor 4
#define _1x2ChMonitor 5
#define _2x1ChMonitor 6
#define _1ChMonitor 7
code unsigned char *_Demo1Label[]={
"a.Capture code ",
"b.Length of code",
"c.decoding ",
"d.Reset ",
"Exit "
};
//"3.Input select",
#define _Quad 0
#define _Quad4Pip 1
#define _Full1Pip 2
code unsigned char *_Demo2Label[]={
"a.VGA ",
"b.HDMI ",
"Exit "
};
//"4.Read EDID VGA ",
#define _ShowOSD_A 0
#define _ShowOSD_B 1
code unsigned char *_Demo3Label[]={
"a.check sum ",
"b.Browse ",
"Exit "
};
//"5.Read EDID HDMI ",
#define _4Live_MultPlayBack 0
#define _4Live_PopPlayBack 1
#define _4Live_QuadPlayBack 2
code unsigned char *_Demo4Label[]={
"a.check sum ",
"b.Browse ",
"Exit "
};
//"6.I2C read ",
code unsigned char *_Demo5Label[]={
"a.ID? ",
"b.Sub address ",
"c.Browse ",
"Exit "
};
#define _Full_V1_PIP_V2 0
#define _Full_V2_PIP_V1 1
#define _V2_XMirror_PIP_V1 2
#define _V2FlipPIP_V1 3
#define _V2_YFlip_PIP_V1 4
#define _V2_PIP_V1 5
//"6.I2C write ",
code unsigned char *_Demo6Label[]={
"a.ID? ",
"b.Sub address ",
"c.Set data ",
"Exit "
};
#define _Demo_Init 0x00
#define _Demo_0 1
#define _Demo_1 2
#define _Demo_2 3
#define _Demo_3 4
#define _Demo_4 5
#define _Demo_5 6
#define _Demo_6 7
#define _Demo_7 8
/*
#define _Demo_8 9
#define _Demo_9 0x0a
*/
sbit _Key_In=P1^4;
unsigned int ButtomKeyDetect(void){
unsigned char _gx;
//
_Key_In=0;
P1=0xf0;
_gx=P1;
_gx&=0xf0;
_Key_In=1;
if(_gx!=0xf0) return(_KeyPress);
else return(_KeyRelease);
}
unsigned char DetectButtomKey(void){
unsigned char _ax;
_Key_In=0;
P1=0xf0;
_ax=P1;
_ax&=0xf0;
_Key_In=1;
return(_ax);
}
void ShowAL720DemoX(unsigned char _DemoTypeX,unsigned char _DemoIndexX){
if(_DemoIndexX==0){
PrintAString(" ",20,0x00);
PrintAString(_DemoXLabel[_DemoTypeX],18,0x00);
}
PrintAString(" ",20,0x40);
switch(_DemoTypeX){
case _Demo_Init:
break;
case _Demo_0:
PrintAString(_Demo0Label[_DemoIndexX],14,0x40);
break;
case _Demo_1:
PrintAString(_Demo1Label[_DemoIndexX],14,0x40);
break;
case _Demo_2:
PrintAString(_Demo2Label[_DemoIndexX],10,0x40);
break;
case _Demo_3:
PrintAString(_Demo3Label[_DemoIndexX],11,0x40);
break;
case _Demo_4:
PrintAString(_Demo4Label[_DemoIndexX],20,0x40);
break;
case _Demo_5:
PrintAString(_Demo5Label[_DemoIndexX],12,0x40);
break;
case _Demo_6:
PrintAString(_Demo6Label[_DemoIndexX],19,0x40);
break;
}
}
void SelectAL720DemoX(unsigned char _DemoTypeX){
PrintTestPage();
PrintAString(" ",20,0x40);
PrintAString(_DemoXLabel[_DemoTypeX],18,0x40);
}
//idata unsigned char _dx[0x0a];
extern void InitSERIALPort(void);
extern idata unsigned int _vx;
void FunctionDispatch(unsigned char _charx){
unsigned char _dx;
PrintAString(" ",16,0x40);
switch(_charx){
/*
case 0x00: // up
switch(_KeyPressLevel){
case 0:
if(_DemoType<0x07) _DemoType++;
else _DemoType=0;
_DemoIndeX=0;
SelectAL720DemoX(_DemoType);
break;
case 1:
if(_DemoIndeX<(_DemoItemsCount[_DemoType])) _DemoIndeX++;
else _DemoIndeX=0;
ShowAL720DemoX(_DemoType,_DemoIndeX);
break;
}
break;
case 0x01: // down
switch(_KeyPressLevel){
case 0:
if(_DemoType>0) --_DemoType;
else _DemoType=0x07;
_DemoIndeX=0;
SelectAL720DemoX(_DemoType);
break;
case 1:
if(_DemoIndeX>0) --_DemoIndeX;
else _DemoIndeX=(_DemoItemsCount[_DemoType]);
ShowAL720DemoX(_DemoType,_DemoIndeX);
break;
}
break;
case 0x02:
switch(_KeyPressLevel){
case 0:
if(_DemoType==0){//
// RunAL720DemoX(_DemoType,_DemoIndeX);
PrintAString(" Ready! ",20,0x40);
_StateFlag=_AfterProcess;
_KeyPressLevel=0x00;}
else {
_KeyPressLevel=0x01;
_DemoIndeX=0;
ShowAL720DemoX(_DemoType,_DemoIndeX);
}
break;
case 1:
if(_DemoIndeX==(_DemoItemsCount[_DemoType])){ _KeyPressLevel=0x00;
PrintAString(" ",20,0x40);
_KeyPressLevel=0;
SelectAL720DemoX(_DemoType);
_StateFlag=_Idle;//AfterProcess;
}
else{
PrintAString(" Process... ",20,0x40);
// RunAL720DemoX(_DemoType,_DemoIndeX);
PrintAString(" Ready! ",20,0x40);
_StateFlag=_AfterProcess;
}
break;
}
break;
*/
case 0x00:
case 0x01:
case 0x02:
PrintAInt(_vx,0x40);
_vx++;
break;
case 0x03:
// sprintf(_dx,"PCON=0x%2x",PCON);
PrintAString("PCON=0x",7,0x40);
_dx=PCON;
PrintAShortInt(_dx,0x48);
break;
case 0x04:
// sprintf(_dx,"SCON=0x%2x",SCON);
// PrintAString(_dx,9,0x40);
PrintAString("SCON=0x",7,0x40);
_dx=SCON;
PrintAShortInt(_dx,0x48);
break;
case 0x05:
// sprintf(_dx,"TMOD=0x%2x",TMOD);
// PrintAString(_dx,9,0x40);
PrintAString("TMOD=0x",7,0x40);
_dx=TMOD;
PrintAShortInt(_dx,0x48);
break;
case 0x06:
// sprintf(_dx,"TCON=0x%2x",TCON);
// PrintAString(_dx,9,0x40);
PrintAString("TCON=0x",7,0x40);
_dx=TCON;
PrintAShortInt(_dx,0x48);
break;
case 0x07:
PrintAString("Initial UART",12,0x40);
_FuncX|=_UARTInit;
os_send_signal(_Init);
break;
case 0x08:
PrintAString("Initial IR",10,0x40);
_FuncX|=_IRInit;
os_send_signal(_Init);
break;
case 0x09:
PrintAString("IR interrupt",12,0x40);
break;
case 0x0a:
break;
case 0x0b:
// break;
case 0x0c:
// break;
case 0x0d:
// break;
case 0x0e:
// break;
case 0x0f:
// break;
case 0x10:
// break;
case 0x11:
// break;
case 0x12:
// break;
case 0x13:
// break;
case 0x14:
// break;
case 0x15:
// break;
case 0x16:
// break;
case 0x17:
// break;
case 0x18:
// break;
case 0x19:
// break;
case 0x1a:
// break;
case 0x1b:
// break;
case 0x1c:
// break;
case 0x1d:
// break;
case 0x1e:
// break;
case 0x1f:
// break;
case 0x20:
// break;
case 0x21:
// break;
case 0x22:
// break;
case 0x23:
break;
}
}
void DispatchKeyFunction(unsigned char _charx){
FunctionDispatch(_charx);
/*
switch(_StateFlag){
case _Initiate:
_DemoType=0;_DemoIndeX=0;
SelectAL720DemoX(_DemoType);
_StateFlag=_Idle;
break;
case _Ready:
if(_DemoType==0){ PrintAString(" ",7,0x48);}
else{
ShowAL720DemoX(_DemoType,_DemoIndeX);
}
_StateFlag=_Idle;
break;
case _AfterProcess:
ShowAL720DemoX(_DemoType,_DemoIndeX);// SelectAL720DemoX(_DemoType);//
_StateFlag=_Idle;
break;
default: FunctionDispatch(_charx);
break;
}
*/
}
code unsigned char _KeyBoardMap[]={
0,1,4,7,
0x0a,2,5,8,
0x0b,3,6,9,
0x0f,0x0e,0x0d,0x0c
};
unsigned char KeyPressDecode(void){
unsigned char _dx;
unsigned char _Mask=0x01;
char _ix,_jx;
_ix=0;
do{
P1=~_Mask;
_dx=(P1&0xf0);
_Mask=_Mask<<1;
_ix++;
}
while((_dx==0xf0)&&(_ix<4));
--_ix;
_dx=(~_dx&0xf0);
_jx=0;
while(_dx!=0x10){
_dx>>=1;
_jx++;
}
_dx=(3-_jx)*4+_ix;
P1=0xf0;
return(_KeyBoardMap[_dx]);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -