亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hal.c

?? 用C語言設計的EPSON LCD控制器S1D13700驅動。
?? C
?? 第 1 頁 / 共 3 頁
字號:
			return dwRetVal;
		}
	}
	else
	{
		if( HalInfo.dwFlags & fINDIRECT_INTERFACE )
			return halpIndReadDisplay32( (UInt16)Offset );
		else
		{
			UInt32  dwRetVal;

			dwRetVal  =  *(pvUInt8)(gHD.MemoryAddress + Offset);
			dwRetVal |= (*(pvUInt8)(gHD.MemoryAddress + Offset + 1))<< 8;
			dwRetVal |= (*(pvUInt8)(gHD.MemoryAddress + Offset + 1))<<16;
			dwRetVal |= (*(pvUInt8)(gHD.MemoryAddress + Offset + 1))<<24;
			return dwRetVal;
		}
	}
}



//-----------------------------------------------------------------------------
// COMMON FUNCTION: halWriteDisplay8()
// COMMON FUNCTION: halWriteDisplay16()
// COMMON FUNCTION: halWriteDisplay32()
//-----------------------------------------------------------------------------
void halWriteDisplay8( UInt32 Offset, UInt8 Value, UInt32 Count )
{
	if ( HalInfo.dwFlags & fPCCARD_INTERFACE )
	{
		if( Count )
		{
			if( HalInfo.dwFlags&fINDIRECT_INTERFACE )
				halpIndWriteDisplay8( (UInt16)(Offset*2), Value, Count );
			else
			{
				UInt32 dwMemAddr = gHD.MemoryAddress;
				dwMemAddr += Offset*2;

				do
				{
					*((UInt8*)dwMemAddr) = Value;
					dwMemAddr += 2;
				} while( --Count );
			}
		}
	}
	else
	{
		if( Count )
		{
			if( HalInfo.dwFlags&fINDIRECT_INTERFACE )
				halpIndWriteDisplay8( (UInt16)Offset, Value, Count );
			else
			{
				UInt32 dwMemAddr = gHD.MemoryAddress;
				dwMemAddr += Offset;

				do
				{
					*((UInt8*)dwMemAddr) = Value;
					dwMemAddr++;
				} while( --Count );
			}
		}
	}
}


void halWriteDisplay16( UInt32 Offset, UInt16 Value, UInt32 Count )
{

	if ( HalInfo.dwFlags & fPCCARD_INTERFACE )
	{
		if( Count )
		{
			if( HalInfo.dwFlags&fINDIRECT_INTERFACE )
				halpIndWriteDisplay16( (UInt16)Offset, Value, Count );
			else
			{
				UInt8 b0 = (UInt8) Value;
				UInt8 b1 = (UInt8)(Value>>8);

				pvUInt8 pMem = (pvUInt8)(gHD.MemoryAddress+Offset);
				do
				{	*pMem	= b0;
				     pMem  += 2;
					*pMem	= b1;
				     pMem  += 2;
				} while( --Count );
			}
		}
	}
	else
	{
		if( Count )
		{
			if( HalInfo.dwFlags&fINDIRECT_INTERFACE )
				halpIndWriteDisplay16( (UInt16)Offset, Value, Count );
			else
			{
				UInt8 b0 = (UInt8) Value;
				UInt8 b1 = (UInt8)(Value>>8);

				pvUInt8 pMem = (pvUInt8)(gHD.MemoryAddress+Offset);
				do
				{	*pMem++	= b0;
					*pMem++	= b1;
				} while( --Count );
			}
		}
	}
}


void halWriteDisplay32( UInt32 Offset, UInt32 Value, UInt32 Count )
{
	if ( HalInfo.dwFlags & fPCCARD_INTERFACE )
	{
		if( Count )
		{
			if( HalInfo.dwFlags&fINDIRECT_INTERFACE )
				halpIndWriteDisplay32( (UInt16)Offset, Value, Count );
			else
			{
				UInt8 b0 = (UInt8) Value;
				UInt8 b1 = (UInt8)(Value>>8 );
				UInt8 b2 = (UInt8)(Value>>16);
				UInt8 b3 = (UInt8)(Value>>24);

				pvUInt8 pMem = (pvUInt8)(gHD.MemoryAddress+Offset);
				do
				{	*pMem = b0; 
					pMem += 2;
					*pMem = b1;
					pMem += 2;
					*pMem = b2;
					pMem += 2;
					*pMem = b3;
					pMem += 2;
				} while( --Count );
			}
		}
	}
	else
	{
		if( Count )
		{
			if( HalInfo.dwFlags&fINDIRECT_INTERFACE )
				halpIndWriteDisplay32( (UInt16)Offset, Value, Count );
			else
			{
				UInt8 b0 = (UInt8) Value;
				UInt8 b1 = (UInt8)(Value>>8 );
				UInt8 b2 = (UInt8)(Value>>16);
				UInt8 b3 = (UInt8)(Value>>24);

				pvUInt8 pMem = (pvUInt8)(gHD.MemoryAddress+Offset);
				do
				{	*pMem++ = b0;
					*pMem++ = b1;
					*pMem++ = b2;
					*pMem++ = b3;
				} while( --Count );
			}
		}
	}
}



//===========================================================================
//                             Register Access
//===========================================================================

//	*** NOTE ***
//
//	The register access routines do not perform any error checking. This means:
//	 1) NEVER call these routines if halAcquireController() did not succeed.
//	 2) No checks are performed on the Offset to ensure it is a valid register
//		address. It is possible to request a read or write to a non-register
//		offset.

//-----------------------------------------------------------------------------
//  FUNCTION:		halReadReg()
//
//  DESCRIPTION:
//		These routines read the S1D13700 control registers in the width
//		indicated in the function name.
//
//  PARAMETERS:
//		Index - Offset to the register to read. The index value is zero
//				based from the beginning of register address space.
//
//  RETURNS:
//		The value read from the register.
//
//		Be very cautious in determining the index and interpretting the values
//		returned from halReadReg() ensure the correct
//		meaning is given to the values. Differing endians will move relative
//		 register offsets.
//
//	MODIFIES:	No S1D13700 register are changed.
//-----------------------------------------------------------------------------
UInt8 halReadReg8( UInt16 Index )
{
	if ( HalInfo.dwFlags & fPCCARD_INTERFACE )
	{
		if( HalInfo.dwFlags&fINDIRECT_INTERFACE )
		{
			if( Index==REG001E_CSRR_P1||Index==REG001F_CSRR_P2 )
				halIndRegWrite8( Index, 0 );
			return (UInt8)HalInfo.Regs[Index].Value;
		}
		else
		{
			if( HalInfo.dwFlags&fDEBUG_USECACHED&&(Index<REG001E_CSRR_P1||Index>REG001F_CSRR_P2) )
				return (UInt8)HalInfo.Regs[Index].Value;
			else
				return *((pvUInt8)((UInt32)gHD.RegisterAddress + Index*2));
		}
	}
	else
	{
		if( HalInfo.dwFlags&fINDIRECT_INTERFACE )
		{
			if( Index==REG001E_CSRR_P1||Index==REG001F_CSRR_P2 )
				halIndRegWrite8( Index, 0 );
			return (UInt8)HalInfo.Regs[Index].Value;
		}
		else
		{
			if( HalInfo.dwFlags&fDEBUG_USECACHED&&(Index<REG001E_CSRR_P1||Index>REG001F_CSRR_P2) )
				return (UInt8)HalInfo.Regs[Index].Value;
			else
				return *((pvUInt8)((UInt32)gHD.RegisterAddress + Index));
		}
	}
}


UInt16 halReadReg16( UInt16 Index )
{
	UInt16  wRetVal;

	if ( HalInfo.dwFlags & fPCCARD_INTERFACE )
	{
		if( HalInfo.dwFlags&fINDIRECT_INTERFACE )
		{
			if( Index==REG001E_CSRR_P1||Index==REG001F_CSRR_P2 )
				halIndRegWrite16( Index, 0 );

			wRetVal  = (UInt16) HalInfo.Regs[Index].Value;
			wRetVal |= (UInt16)(HalInfo.Regs[Index+1].Value<<8);
		}
		else
		{
			if( HalInfo.dwFlags&fDEBUG_USECACHED&&(Index<REG001E_CSRR_P1||Index>REG001F_CSRR_P2) )
			{
				wRetVal  = (UInt8) HalInfo.Regs[Index].Value;
				if( (Index+1)==REG001E_CSRR_P1)
					wRetVal |= (UInt16)(*((pvUInt8)((UInt32)gHD.RegisterAddress + (Index+1)*2))<<8);
				else
					wRetVal |= (UInt16)(HalInfo.Regs[Index+1].Value<<8);
			}
			else
			{
				wRetVal  = (UInt8) (*((pvUInt8)((UInt32)gHD.RegisterAddress + Index*2)));
				wRetVal |= (UInt16)(*((pvUInt8)((UInt32)gHD.RegisterAddress + (Index+1)*2))<<8);
			}
		}
	}
	else
	{
		if( HalInfo.dwFlags&fINDIRECT_INTERFACE )
		{
			if( Index==REG001E_CSRR_P1||Index==REG001F_CSRR_P2 )
				halIndRegWrite16( Index, 0 );

			wRetVal  = (UInt16) HalInfo.Regs[Index].Value;
			wRetVal |= (UInt16)(HalInfo.Regs[Index+1].Value<<8);
		}
		else
		{
			if( HalInfo.dwFlags&fDEBUG_USECACHED&&(Index<REG001E_CSRR_P1||Index>REG001F_CSRR_P2) )
			{
				wRetVal  = (UInt8) HalInfo.Regs[Index].Value;
				if( (Index+1)==REG001E_CSRR_P1)
					wRetVal |= (UInt16)(*((pvUInt8)((UInt32)gHD.RegisterAddress + Index+1))<<8);
				else
					wRetVal |= (UInt16)(HalInfo.Regs[Index+1].Value<<8);
			}
			else
			{
				wRetVal  = (UInt8)(*((pvUInt8)((UInt32)gHD.RegisterAddress + Index)));
				wRetVal |= (UInt16)(*((pvUInt8)((UInt32)gHD.RegisterAddress + Index+1))<<8);
			}
		}
    }
	return wRetVal;
}


UInt32 halReadReg32( UInt16 Index )
{
	UInt32  dwRetVal;

	if ( HalInfo.dwFlags & fPCCARD_INTERFACE )
	{
		if( HalInfo.dwFlags&fINDIRECT_INTERFACE )
		{
			if( Index==REG001E_CSRR_P1||Index==REG001F_CSRR_P2 )
				halIndRegWrite32( Index, 0 );

			dwRetVal  = (UInt8 ) HalInfo.Regs[Index].Value;
			dwRetVal |= (UInt32)(HalInfo.Regs[Index+1].Value<<8 );
			dwRetVal |= (UInt32)(HalInfo.Regs[Index+2].Value<<16);
			dwRetVal |= (UInt32)(HalInfo.Regs[Index+3].Value<<24);
		}
		else
		{
			if( HalInfo.dwFlags&fDEBUG_USECACHED&&(Index<REG001E_CSRR_P1||Index>REG001F_CSRR_P2) )
			{
				dwRetVal  = (UInt8) HalInfo.Regs[Index].Value;
				if( (Index+1)==REG001E_CSRR_P1 )
					dwRetVal |= (*((pvUInt8)((UInt32)gHD.RegisterAddress + (Index + 1)*2))<<8 );
				else	dwRetVal |= (UInt32)(HalInfo.Regs[Index+1].Value<<8 );
				if( ((Index+2)==REG001E_CSRR_P1)||((Index+2)==REG001F_CSRR_P2) )
					dwRetVal |= (*((pvUInt8)((UInt32)gHD.RegisterAddress + (Index + 2)*2))<<16);
				else	dwRetVal |= (UInt32)(HalInfo.Regs[Index+2].Value<<16);
				if( ((Index+3)==REG001E_CSRR_P1)||((Index+2)==REG001F_CSRR_P2) )
					dwRetVal |= (*((pvUInt8)((UInt32)gHD.RegisterAddress + (Index + 3)*2))<<24);
				else
					dwRetVal |= (UInt32)(HalInfo.Regs[Index+3].Value<<24);
			}
			else
			{
				dwRetVal  = (*((pvUInt8)((UInt32)gHD.RegisterAddress + Index*2)));
				dwRetVal |= (*((pvUInt8)((UInt32)gHD.RegisterAddress + (Index + 1)*2))<<8 );
				dwRetVal |= (*((pvUInt8)((UInt32)gHD.RegisterAddress + (Index + 2)*2))<<16);
				dwRetVal |= (*((pvUInt8)((UInt32)gHD.RegisterAddress + (Index + 3)*2))<<24);
			}
		}
	}
	else
	{
		if( HalInfo.dwFlags&fINDIRECT_INTERFACE )
		{
			if( Index==REG001E_CSRR_P1||Index==REG001F_CSRR_P2 )
				halIndRegWrite32( Index, 0 );

			dwRetVal  = (UInt8 ) HalInfo.Regs[Index].Value;
			dwRetVal |= (UInt32)(HalInfo.Regs[Index+1].Value<<8 );
			dwRetVal |= (UInt32)(HalInfo.Regs[Index+2].Value<<16);
			dwRetVal |= (UInt32)(HalInfo.Regs[Index+3].Value<<24);
		}
		else
		{
			if( HalInfo.dwFlags&fDEBUG_USECACHED&&(Index<REG001E_CSRR_P1||Index>REG001F_CSRR_P2) )
			{
				dwRetVal  = (UInt8) HalInfo.Regs[Index].Value;
				if( (Index+1)==REG001E_CSRR_P1 )
					dwRetVal |= (*((pvUInt8)((UInt32)gHD.RegisterAddress + Index + 1))<<8 );
				else	dwRetVal |= (UInt32)(HalInfo.Regs[Index+1].Value<<8 );
				if( ((Index+2)==REG001E_CSRR_P1)||((Index+2)==REG001F_CSRR_P2) )
					dwRetVal |= (*((pvUInt8)((UInt32)gHD.RegisterAddress + Index + 2))<<16);
				else	dwRetVal |= (UInt32)(HalInfo.Regs[Index+2].Value<<16);
				if( ((Index+3)==REG001E_CSRR_P1)||((Index+2)==REG001F_CSRR_P2) )
					dwRetVal |= (*((pvUInt8)((UInt32)gHD.RegisterAddress + Index + 3))<<24);
				else
					dwRetVal |= (UInt32)(HalInfo.Regs[Index+3].Value<<24);
			}
			else
			{
				dwRetVal  = (*((pvUInt8)((UInt32)gHD.RegisterAddress + Index)));
				dwRetVal |= (*((pvUInt8)((UInt32)gHD.RegisterAddress + Index + 1))<<8 );
				dwRetVal |= (*((pvUInt8)((UInt32)gHD.RegisterAddress + Index + 2))<<16);
				dwRetVal |= (*((pvUInt8)((UInt32)gHD.RegisterAddress + Index + 3))<<24);
			}
		}
	}

	return dwRetVal;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品免费av| 欧美xfplay| 99久久99久久精品免费看蜜桃| 韩国毛片一区二区三区| 国内精品久久久久影院一蜜桃| 精品一区二区三区的国产在线播放 | 国产91精品一区二区麻豆网站| 激情欧美一区二区| 国产成人综合网| 99久久国产综合色|国产精品| caoporen国产精品视频| 在线观看日韩高清av| 91精品国产综合久久小美女| 日韩一级黄色大片| 久久美女高清视频| 1000部国产精品成人观看| 亚洲精品国产无天堂网2021| 亚洲成a人片在线不卡一二三区| 日韩av电影天堂| 国产剧情av麻豆香蕉精品| 播五月开心婷婷综合| 色偷偷久久一区二区三区| 制服丝袜亚洲色图| 国产人久久人人人人爽| 一区二区三区高清| 精品一区二区三区免费观看| 99这里都是精品| 777午夜精品视频在线播放| 久久九九久久九九| 亚洲一二三四在线| 国产一区啦啦啦在线观看| 91福利在线看| 2022国产精品视频| 亚欧色一区w666天堂| 风间由美一区二区av101| 欧美日韩视频专区在线播放| 国产日韩精品一区二区三区在线| 午夜欧美一区二区三区在线播放| 国产精品一级片在线观看| 欧美日韩一区 二区 三区 久久精品| 亚洲综合在线电影| 丁香另类激情小说| 一区二区三区日韩精品| 久久精品国产999大香线蕉| 99在线精品一区二区三区| 538prom精品视频线放| 一色屋精品亚洲香蕉网站| 久久99国产精品麻豆| 蜜桃视频一区二区三区在线观看| 欧美在线观看一区二区| 五月婷婷色综合| 久久久久久久电影| 日本精品视频一区二区| 天堂在线亚洲视频| 国产亚洲一区二区三区四区| 99re热这里只有精品视频| 亚洲成av人片在线观看| 精品人在线二区三区| 99精品黄色片免费大全| 午夜av一区二区| 久久精品夜色噜噜亚洲a∨| 99久久国产综合精品色伊| 亚洲一区二区三区小说| 精品福利av导航| 97超碰欧美中文字幕| 美女视频黄久久| 中文字幕在线免费不卡| 91精品国产麻豆| 91在线精品一区二区三区| 日本网站在线观看一区二区三区 | 美女脱光内衣内裤视频久久网站| 26uuu成人网一区二区三区| 91偷拍与自偷拍精品| 日本在线不卡视频| 最新高清无码专区| 精品久久久久久久人人人人传媒| 色婷婷av一区二区三区gif| 韩国女主播一区二区三区| 亚洲高清视频在线| 久久蜜桃av一区精品变态类天堂| 欧美色男人天堂| 国产1区2区3区精品美女| 蜜桃av一区二区在线观看| 中文字幕欧美一| 国产亚洲一区字幕| 日韩一区二区三区电影在线观看 | 制服丝袜av成人在线看| av中文一区二区三区| 国产在线播精品第三| 丝袜亚洲另类丝袜在线| 亚洲美女在线国产| 国产精品女主播av| 久久影院视频免费| 日韩精品一区在线| 91精品国产手机| 欧美日韩一区二区三区在线看 | 婷婷成人激情在线网| 最近日韩中文字幕| 国产日韩精品一区二区三区| 久久综合网色—综合色88| 欧美男男青年gay1069videost| 99精品热视频| 91视视频在线直接观看在线看网页在线看| 精品中文av资源站在线观看| 日韩中文字幕区一区有砖一区| 一区二区三区视频在线看| 亚洲欧美日韩久久| 亚洲日本在线看| 亚洲精品免费一二三区| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲激情成人在线| 亚洲视频一区二区在线| 中文字幕亚洲不卡| 成人欧美一区二区三区在线播放| 日本一区二区高清| 欧美国产成人在线| 亚洲免费观看在线视频| 樱桃视频在线观看一区| 亚洲乱码中文字幕| 亚洲一区在线观看免费观看电影高清| 综合自拍亚洲综合图不卡区| 一级特黄大欧美久久久| 亚洲妇女屁股眼交7| 午夜精品久久久久久| 石原莉奈在线亚洲二区| 久久国产三级精品| 国产99久久久国产精品| 不卡的看片网站| 欧美羞羞免费网站| 91精品国产综合久久国产大片| 日韩一级片网站| 欧美韩日一区二区三区四区| 亚洲欧美日韩国产另类专区| 婷婷久久综合九色综合伊人色| 久久精品国内一区二区三区| 风流少妇一区二区| 欧美图片一区二区三区| 欧美mv日韩mv国产| 亚洲免费观看在线视频| 蜜乳av一区二区| 国产成人av自拍| 欧美性色黄大片| 亚洲精品一区二区三区精华液| 国产精品天干天干在观线| 亚洲一区中文在线| 国产一区二区看久久| 色婷婷精品大在线视频| 精品福利一区二区三区| 亚洲美女免费视频| 国产一区视频在线看| 在线观看一区不卡| 国产日韩三级在线| 日韩—二三区免费观看av| 国产成人精品免费看| 7777精品伊人久久久大香线蕉| 亚洲国产精品精华液ab| 亚洲成人动漫一区| 懂色av一区二区夜夜嗨| 欧美一区二区三区视频在线| 亚洲人成网站色在线观看| 国模冰冰炮一区二区| 欧美日韩精品一区二区三区| 日本一区二区三区高清不卡 | 99v久久综合狠狠综合久久| 欧美精品99久久久**| 国产精品美女一区二区| 蜜桃av一区二区| 欧美亚男人的天堂| 亚洲色图另类专区| 国产精品一区三区| 欧美一区二区三区四区久久| 亚洲精品伦理在线| 北条麻妃国产九九精品视频| 日韩午夜电影在线观看| 亚洲一区二区欧美激情| 成人爱爱电影网址| 欧美—级在线免费片| 国产一区二区三区视频在线播放| 欧美日韩一卡二卡| 亚洲午夜免费福利视频| 日本精品视频一区二区| 亚洲欧洲日韩一区二区三区| 国产中文字幕精品| 精品免费国产二区三区| 毛片av一区二区三区| 欧美精品三级日韩久久| 亚洲一区二区三区美女| 欧美三级中文字幕在线观看| 亚洲狠狠丁香婷婷综合久久久| 成人国产免费视频| 中文字幕乱码亚洲精品一区| 国产老肥熟一区二区三区| 精品国产露脸精彩对白| 韩国一区二区视频| 久久女同精品一区二区| 国产一区二区三区精品视频| 2024国产精品| 懂色av一区二区三区免费看| 中文字幕av一区 二区| 成人免费视频一区二区|