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

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

?? iic.c

?? 臺灣聯詠NT68663 LCD MONITOR 控制程序(完整版)
?? C
字號:
#include "stdio.h"
#include "8051.H"
#include "RAM.H"
#include "IIC.H"
#include "MCU.H"
#include "ROM_MAP.H"
#include "MyDef.H"
#include "F63XREG.H"
#include "F63XDEF.H"
#include "INTRINS.H"
void DDC2(void)
{
	ISCL = 0;
	ISCL = 1;
}

void IIC_Start(void)
{
	ISDA = 0;
	ISCL = 0;
}

void IIC_Stop(void)
{
	ISDA = 0;
	ISCL = 1;
	ISDA = 1;
}

void CheckIIC(void)
{
	ISCL = 1;
	ISDA = 1;
	while(!ISDA || !ISCL)	//waiting for IIC released
		{
		ISCL = 0;
		IIC_Stop();
		}
}

Byte IIC_Tx(Byte Data)
{	//subroutine total time 630us
	Byte AckLoop,Ack;

#if SOFTWAREIIC_220K == 0
	Byte i;
	for(i=0;i<8;i++)
		{
	    ISCL = 0;
		ISDA = (Data & 0x80);
		_nop_();
		_nop_();
		ISCL = 1;
		_nop_();
		_nop_();
		Data <<= 1;
		}
#else
	ISCL = 0;
	ISDA = (Data & 0x80);
	ISCL = 1;
    ISCL = 0;
	ISDA = (Data & 0x40);
	ISCL = 1;
    ISCL = 0;
	ISDA = (Data & 0x20);
	ISCL = 1;
    ISCL = 0;
	ISDA = (Data & 0x10);
	ISCL = 1;
    ISCL = 0;
	ISDA = (Data & 0x08);
	ISCL = 1;
    ISCL = 0;
	ISDA = (Data & 0x04);
	ISCL = 1;
    ISCL = 0;
	ISDA = (Data & 0x02);
	ISCL = 1;
    ISCL = 0;
	ISDA = (Data & 0x01);
	ISCL = 1;
#endif
	//
	ISCL = 0;
	ISDA = 1;
	ISCL = 1;
	Ack = NACK;
	for(AckLoop=0;AckLoop<20;AckLoop++) //260us
		{
		if(!ISDA)
			{
			Ack = ACK;
			break;
			}
		}
	ISCL = 0;
	return Ack;			//return success=0 / failure=1
}
/*
Byte IIC_TxV(Byte Data)
{	//subroutine total time 630us
	Byte AckLoop,Ack;
	Byte i;
	for(i=0;i<8;i++)
		{
	    ISCL = 0;
		if(i == 7)
			WaitVblank();
		ISDA = (Data & 0x80);
		ISCL = 1;
		Data <<= 1;
		}
	ISCL = 0;
	ISDA = 1;
	ISCL = 1;
	Ack = NACK;
	for(AckLoop=0;AckLoop<20;AckLoop++) //260us
		{
		if(!ISDA)
			{
			Ack = ACK;
			break;
			}
		}
	ISCL = 0;
	return Ack;			//return success=0 / failure=1
}
*/
Byte IIC_Rx(Bit Ack)
{
	Byte Data;
	Byte i;
	Data = 0;
	for(i=0;i<8;i++)
		{
		Data <<= 1;
		ISCL = 0;
		ISDA = 1;
		ISCL = 1;
		if(ISDA)
			Data |= 1;
		else
			Data &= 0xfe;
		}
	ISCL = 0;
	ISDA = Ack;
	ISCL = 1;
	ISCL = 0;
	return Data;
}

void WaitEEprom(void)
{
	Byte i,ack;
	for(i=0;i<100;i++)  //10ms 
		{
		IIC_Start();
		ack = IIC_Tx(0xa0);	//polling ACKnowledge
		IIC_Stop();
		if(ack == ACK)
			break;
		CLRWDT = 0x55;
		}
}

void WriteIIC(Byte device,Byte addr,Byte ch)
{
	IIC_Start();
	IIC_Tx(device);
	IIC_Tx(addr);
	IIC_Tx(ch);
	IIC_Stop();
}
/*
void WriteWordIIC(unsigned char device,unsigned char addr,unsigned short value)
{
	IIC_Start();
	IIC_Tx(device);
	IIC_Tx(addr);
	IIC_Tx((Byte)value);
	IIC_Tx((Byte)(value>>8));
	IIC_Stop();
}
*/
void WriteIIC563(unsigned short addr,unsigned char ch)
{
	CheckRegPage(addr);
	IIC_Start();
	IIC_Tx(SCALER_ADDR);
	IIC_Tx(addr);
	IIC_Tx(ch);
	IIC_Stop();
}

void WriteWordIIC563(unsigned short addr,unsigned short value)
{
	CheckRegPage(addr);
	IIC_Start();
	IIC_Tx(SCALER_ADDR);
	IIC_Tx((Byte)addr);
	IIC_Tx((Byte)value);
	IIC_Tx((Byte)(value>>8));
	IIC_Stop();
}

Byte ReadIIC(Byte device,Byte addr)
{
	Byte value;
	IIC_Start();
	IIC_Tx(device);
	IIC_Tx(addr);
	ISDA = 1;	//repeat start
	ISCL = 1;
	ISDA = 0;
	ISCL = 0;
	IIC_Tx(device+1);
	value = IIC_Rx(NACK);	//nack
	IIC_Stop();
	return value;
}

unsigned char ReadIIC563(unsigned short addr)
{
	Byte value;
	CheckRegPage(addr);
	IIC_Start();
	IIC_Tx(SCALER_ADDR);
	IIC_Tx(addr);
	ISDA = 1;	//repeat start
	ISCL = 1;
	ISDA = 0;
	ISCL = 0;
	IIC_Tx(SCALER_ADDR+1);
	value = IIC_Rx(NACK);	//nack
	IIC_Stop();
	return value;
}

unsigned short ReadWordIIC563(unsigned short addr)
{
	Byte temp;
	Word value;
	CheckRegPage(addr);
	IIC_Start();
	IIC_Tx(SCALER_ADDR);
	IIC_Tx(addr);
	ISDA = 1;	//repeat start
	ISCL = 1;
	ISDA = 0;
	ISCL = 0;
	IIC_Tx(SCALER_ADDR+1);
	temp = IIC_Rx(ACK);
	value = IIC_Rx(NACK);	//nack
	value <<= 8;
	value += temp;
	IIC_Stop();
	return value;
}
unsigned char Read24C16(unsigned short addr16)
{
	Byte ch;
	Byte device,addr;
	addr = addr16 & 0x0ff;
	device = (addr16 >> 7) & 0x0e;
	device |= EEPROM;
	ch = ReadIIC(device,addr);
	return ch;
}

void CheckRegPage(unsigned short addr)
{
	Byte page;
	IIC_Start();
	IIC_Stop();
	page = (Byte)((addr/256) & 0x003);
	if(page != RegPage)
		{
		RegPage = page;
		WriteIIC(SCALER_ADDR,0xff,RegPage);
		}
}

void InitEEPROM(void)
{
	unsigned short addr;
	#if PRINT_MESSAGE
		printf("Initial EEPROM.\n");
	#endif
	LED_GrnOff();
	LED_RedOn();
	//Dsub EDID
	for(addr=0;addr<0x80;addr++)
		Write24C16(ep_DDC_Analog+addr,DsubEdidTab[addr]);
	//Dvi EDID
	for(addr=0;addr<0x80;addr++)
		Write24C16(ep_DDC_DVI+addr,DviEdidTab[addr]);
	//Geo
	LED_RedOff();
	for(addr=0;addr<0x45;addr++)
		Write24C16(0x200+addr,EEP_GeoMap[addr]);
	//Mode
	LED_RedOn();
	for(addr=0;addr<UserModeSt*4;addr++)
		Write24C16(0x300+addr,EEP_FreqMap[addr]);
	LED_RedOff();
	for(;addr<ModeNum*4;addr++)
		Write24C16(0x300+addr,0xff);
	//Sync
	LED_RedOn();
	for(addr=0;addr<UserModeSt*8;addr++)
		Write24C16(0x500+addr,EEP_SyncMap[addr]);
	LED_RedOff();
	for(;addr<ModeNum*8;addr++)
		Write24C16(0x500+addr,0xff);
	Write24C16(ep_FirmWare_Ver,Version);
	Write24C16(ep_FirmWare_Rev,Reversion);
	LED_GrnOn();
}

void Write24C16(unsigned short k,unsigned char ch)
{
unsigned char device,addr;
	addr = (unsigned char)k;
	device = (unsigned char)((k>>7)&0x0e);
	device |= EEPROM;
	WriteIIC(device,addr,ch);
	WaitEEprom();
}
/*
void WritePage24C16(unsigned short addr1,unsigned short addr2,unsigned char *p)
{
unsigned char i,ch;
	IIC_Start();
	i = (unsigned char)((addr1 >>7 ) & 0x0e);
	i |= EEPROM;
	IIC_Tx(i);
	IIC_Tx((Byte)addr1);
	for(i=0; i<16; i++)
		{
		ch = p[addr2 + i];
		IIC_Tx(ch);
		}
	IIC_Stop();
	WaitEEprom();
}
*/
void LoadDDCData()
{
	Byte xdata *DDCptr;
	Byte i;
	DDC_CTL0 = 0;		//disable DDC
	DDC_CTL1 = 0;		//disable DDC
	DDCptr = 0xf800;  
	for(i=0;i<128;i++)
		{
		CLRWDT = 0x55;
		*DDCptr++ = Read24C16(ep_DDC_DVI+i);
		}
	DDCptr = 0xf900;  
	for(i=0;i<128;i++)
		{
		CLRWDT = 0x55;
		*DDCptr++ = Read24C16(ep_DDC_Analog+i);
		}
	DDC_CTL0 = (EN_DDC|CLR_UPD|CLR_PTR);	
	DDC_CTL1 = (EN_DDC|CLR_UPD|CLR_PTR);	
}

void SaveDDCData(Bit Channel)
{
	Byte xdata *DDCptr;
	Byte i,ptr;
	DDC_CTL0 = 0;		//disable DDC
	DDC_CTL1 = 0;		//disable DDC
	if(Channel == 0)
		{
		DDCptr = 0xf800;
		for(i=0;i<16;i++)
			{
			IIC_Start();
			IIC_Tx(0xa2);
			IIC_Tx(i*8);
			for(ptr=0;ptr<8;ptr++) //page write 8bytes(16bytes max)
				IIC_Tx(*DDCptr++);
			IIC_Stop();
			WaitEEprom();	//polling acknowledge
			CLRWDT = 0x55;
			}
		}
	else
		{
		DDCptr = 0xf900;
		for(i=0;i<16;i++)
			{
			IIC_Start();
			IIC_Tx(0xa0);
			IIC_Tx(i*8);
			for(ptr=0;ptr<8;ptr++) //page write 8bytes(16bytes max)
				IIC_Tx(*DDCptr++);
			IIC_Stop();
			WaitEEprom();	//polling acknowledge
			CLRWDT = 0x55;
			}
		}
	DDC_CTL0 = (EN_DDC|CLR_UPD|CLR_PTR);	
	DDC_CTL1 = (EN_DDC|CLR_UPD|CLR_PTR);	
	if(!Channel)
		SaveDDC0 = 0;
	else
		SaveDDC1 = 0;
}

void CheckVersion()
{
	Byte i,Ver1,Ver2;
	for(i=0;i<10;i++)
		{
		Ver1 = Read24C16(ep_FirmWare_Ver);
		Ver2 = Read24C16(ep_FirmWare_Rev);
		if(Ver1 == Version && Ver2 == Reversion)
			break;
		Sleep(10);
		}
	if(i==10)
		{
		#if PRINT_MESSAGE
			printf("Version error.\n");
		#endif
		InitEEPROM();
		}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人亚洲一区二区一| 国产69精品一区二区亚洲孕妇| 久久久久久电影| 精品国产一区二区三区不卡| 欧美精品在线一区二区| 欧美精品日日鲁夜夜添| 欧美女孩性生活视频| 3d成人h动漫网站入口| 日韩一区二区三区视频在线观看 | www亚洲一区| 久久久亚洲精品石原莉奈| 国产喷白浆一区二区三区| 国产精品入口麻豆原神| 亚洲欧美一区二区不卡| 午夜精品aaa| 国产精品中文欧美| 91捆绑美女网站| 欧美日韩精品欧美日韩精品| 精品国产伦一区二区三区观看方式| 久久久美女毛片 | 色老汉一区二区三区| 欧美色精品在线视频| 欧美一区二区三区四区高清| 精品av久久707| 亚洲欧洲日韩在线| 蜜臀va亚洲va欧美va天堂| 国产一区二区0| 一道本成人在线| 日韩欧美国产一区二区三区| 中文字幕制服丝袜成人av| 亚洲电影在线免费观看| 狠狠色狠狠色综合| 在线观看中文字幕不卡| 精品国产精品网麻豆系列| 最新日韩av在线| 免费成人结看片| 97精品久久久久中文字幕| 日韩一区二区三| 亚洲美女在线国产| 国产成人精品一区二区三区四区 | 91精品国产欧美一区二区 | 91麻豆精品一区二区三区| 91精品婷婷国产综合久久竹菊| 国产三级精品三级| 青青草国产精品亚洲专区无| 99精品视频在线播放观看| 精品成人在线观看| 午夜免费久久看| 99国产精品久久久久| 精品乱人伦小说| 亚洲午夜在线电影| 97久久超碰精品国产| 久久久久9999亚洲精品| 丝袜国产日韩另类美女| 欧美中文字幕亚洲一区二区va在线| 国产亚洲欧美激情| 精品一区二区三区香蕉蜜桃| 欧美人妖巨大在线| 亚洲女与黑人做爰| av电影在线不卡| 欧美经典一区二区三区| 久久99精品国产麻豆婷婷洗澡| 欧美日本一区二区三区| 亚洲综合丝袜美腿| 欧美在线啊v一区| 亚洲精品免费播放| 97精品国产露脸对白| 中文字幕佐山爱一区二区免费| 国产福利一区在线| 国产午夜亚洲精品羞羞网站| 精久久久久久久久久久| 欧美岛国在线观看| 精品午夜久久福利影院| 精品日韩欧美一区二区| 精品一区二区三区在线播放视频| 欧美成人激情免费网| 久草中文综合在线| 久久久久一区二区三区四区| 成人午夜私人影院| 国产精品乱人伦中文| www.日韩在线| 一二三区精品福利视频| 欧美日本视频在线| 老司机精品视频在线| 欧美成人精品福利| 国产99久久久国产精品潘金网站| 久久久无码精品亚洲日韩按摩| 国v精品久久久网| 亚洲精品免费电影| 欧美妇女性影城| 国产在线精品不卡| 1区2区3区国产精品| 精品视频1区2区3区| 久久国内精品自在自线400部| 国产亚洲一区字幕| 欧美在线免费播放| 麻豆成人免费电影| 欧美韩国一区二区| 欧美人成免费网站| 国产精品456| 亚洲一区欧美一区| 精品国产第一区二区三区观看体验| 丁香激情综合五月| 亚洲bt欧美bt精品777| 久久色在线观看| 在线亚洲人成电影网站色www| 蜜桃视频第一区免费观看| 欧美韩国日本一区| 91麻豆精品国产91| 99热99精品| 老司机精品视频一区二区三区| 成人欧美一区二区三区1314| 日韩欧美一二三区| 91免费观看在线| 精品在线播放免费| 亚洲综合免费观看高清在线观看| 精品国产乱码久久久久久1区2区| 在线一区二区三区| 成人综合婷婷国产精品久久| 日韩精品一级中文字幕精品视频免费观看 | 在线观看日产精品| 国产高清在线精品| 日本三级亚洲精品| 亚洲一区二区成人在线观看| 欧美国产成人精品| 久久丝袜美腿综合| 欧美大白屁股肥臀xxxxxx| 日本韩国欧美一区| 成人福利视频网站| 国产成人综合网站| 久久精品国内一区二区三区 | 在线播放欧美女士性生活| 国产成人综合精品三级| 视频一区二区三区中文字幕| 一区二区三区在线视频免费观看 | 亚洲午夜精品17c| 亚洲男人的天堂一区二区| 亚洲国产精品国自产拍av| 欧美精品一区二区三区蜜桃视频 | 在线一区二区观看| 色婷婷av一区二区三区之一色屋| av中文字幕在线不卡| 风间由美性色一区二区三区| 国产一区二区三区综合| 精品综合久久久久久8888| 激情综合色综合久久| 九九国产精品视频| 麻豆成人久久精品二区三区红| 日韩电影免费一区| 青青草97国产精品免费观看 | 97久久超碰精品国产| 久久99九九99精品| 日本欧美在线看| 日本va欧美va精品发布| 日韩激情在线观看| 日韩成人午夜电影| 伦理电影国产精品| 国产毛片一区二区| 成人精品免费视频| 91视频91自| 欧美久久高跟鞋激| 欧美精品一区二区三区视频| 国产日产欧产精品推荐色| 欧美激情中文不卡| 一区二区激情小说| 免费成人av在线播放| 国产一区二区毛片| 成人一级黄色片| 欧美写真视频网站| 欧美一区二区高清| 亚洲国产精品99久久久久久久久| 亚洲天堂2014| 天堂一区二区在线| 国产精品中文字幕一区二区三区| 91色.com| 在线不卡的av| 国产精品三级视频| 亚洲国产成人porn| 国产高清不卡一区二区| 日本道色综合久久| 久久亚洲免费视频| 一区二区高清视频在线观看| 五月开心婷婷久久| 成人免费毛片app| 欧美精品日韩一区| 国产精品激情偷乱一区二区∴| 亚洲国产日日夜夜| 丁香婷婷综合网| 欧美一区二区在线播放| 亚洲欧洲精品天堂一级 | 成人免费在线视频观看| 日本在线不卡视频| 91在线精品一区二区三区| 欧美一区二区三区视频在线| 国产精品久久久久天堂| 日av在线不卡| 欧美在线一二三四区| 欧美极品xxx| 韩国女主播一区| 欧美高清激情brazzers|