vgadetect.c

来自「Terawins的芯片T128点3.5"屏的源程序。」· C语言 代码 · 共 66 行

C
66
字号
#include "Common.h"
#include "Global.h"
#include "ICControl.h"	
#include "System.h"
#include "TWICreg.h"
#include "VGADetect.h"
#include "VGAModeTab.h"


void DetectVGAMOde(void)
{
	unsigned int REG5859,REG5A5B;
	REG5859=IC_ReadByte(TWIC_P0, 0x58)|(((unsigned int)(IC_ReadByte(TWIC_P0, 0x59)))<<8);
	REG5A5B=IC_ReadByte(TWIC_P0, 0x5a)|(((unsigned int)(IC_ReadByte(TWIC_P0, 0x5b)))<<8);
	if(((REG5859>0x6b25-8)&&(REG5859<0x6b25+8))&&((REG5A5B>0x020B-4)&&(REG5A5B<0x020B+4)))
		cur_Mode=0;
	else if(((REG5859>0x6b41-8)&&(REG5859<0x6b41+8))&&((REG5A5B>0x020C-4)&&(REG5A5B<0x020C+4)))
		cur_Mode=1;
	else if(((REG5859>0x6C01-8)&&(REG5859<0x6C01+8))&&((REG5A5B>0x0271-4)&&(REG5A5B<0x0271+4)))
		cur_Mode=2;
	else 
		cur_Mode=0xff;
	if(old_Mode != cur_Mode)
	{
		SetVGAMode(cur_Mode);
		old_Mode=cur_Mode;
	}

}

void SetVGAMode(uCHAR ModeID)
{
	uCHAR i=0;
	switch(ModeID)
	{
		case 0:	//640x480
			while(VGAREG[i] != 0xff)
			{
				IC_WritByte(TWIC_P0, VGAREG[i], VGA640x480[i]);
				//IC_WritByte(TWIC_P0,0x05,VGAREG[i]);
				i++;
			}
			IC_WritByte(TWIC_P0, 0xE2, 0x11);
			break;
		case 1:	//720x480
			while(VGAREG[i] != 0xff)
			{
				IC_WritByte(TWIC_P0, VGAREG[i], VGA720x480[i]);
				//IC_WritByte(TWIC_P0,0x05,VGAREG[i]);
				i++;
			}
			IC_WritByte(TWIC_P0, 0xE2, 0x11);
			break;
		case 2:	//720X576
			while(VGAREG[i] != 0xff)
			{
				IC_WritByte(TWIC_P0, VGAREG[i], VGA720x576[i]);
				//IC_WritByte(TWIC_P0,0x05,VGAREG[i]);
				i++;
			}
			IC_WritByte(TWIC_P0, 0xE2, 0x11);
			break;
		
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?