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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? 復(fù)件 jtag.cpp

?? c8051.rar
?? CPP
字號(hào):
// jtag.cpp : implementation file
//

#include "stdafx.h"
#include "C8051JTAG.h"
#include "jtag.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// jtag

jtag::jtag()
{
	m_iCcabletype = ALTERABLASTER;
	m_nPort = (WORD)0x378;
	m_ucWriteValue = 0x20;
	SetPortVal(m_nPort, m_ucWriteValue, 1);				//SET TMS,TCK,TDI to low
	
}

jtag::~jtag()
{
}


BEGIN_MESSAGE_MAP(jtag, CButton)
	//{{AFX_MSG_MAP(jtag)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// jtag message handlers
//TCK函數(shù)
void jtag::TCK(bool bValue)
{
	unsigned char ucTemp;
	ucTemp = 0;
	ucTemp = 1<<m_woTCKPin;
	if(bValue)
	{
		m_ucWriteValue |= ucTemp; 
	}
	else
	{
		ucTemp = ~ucTemp;
		m_ucWriteValue &= ucTemp; 
	}
	SetPortVal(m_nPort, m_ucWriteValue, 1);
}

void jtag::TMS(bool bValue)
{
	unsigned char ucTemp;
	ucTemp = 0;
	ucTemp = 1<<m_woTMSPin;
	if(bValue)
	{
		m_ucWriteValue |= ucTemp; 
		
	}
	else
	{
		ucTemp = ~ucTemp;
		m_ucWriteValue &= ucTemp; 
	}
	SetPortVal(m_nPort, m_ucWriteValue, 1);

}

void jtag::TDI(bool bValue)
{
	unsigned char ucTemp;
	ucTemp = 0;
	ucTemp = 1<<m_woTDIPin;
	if(bValue)
	{
		m_ucWriteValue |= ucTemp; 
	}
	else
	{
		ucTemp = ~ucTemp;
		m_ucWriteValue &= ucTemp; 
	}
	SetPortVal(m_nPort, m_ucWriteValue, 1);
}

bool jtag::TDO()
{
	//獲得控制端口的值,保持高位值不變,將要輸出的值從低4位輸出,且使連接器上的電位狀態(tài)與想輸出的值一致
	DWORD temp_dwPortVal;
	unsigned int temp_aa,uiTempPin;
	GetPortVal(m_nPort+m_iTDOAddP, &temp_dwPortVal, 1); //reads a BYTE value from an I/O port
	temp_aa = (unsigned int)temp_dwPortVal;
	uiTempPin = 1<<m_wiTDOPin;
	if(uiTempPin & temp_aa)
		return 0;
	else
		return 1;
	return 0;
}

void jtag::JTAG_StrobeTCK()
{
	TCK(1);
	TCK(0);
}

void jtag::JTAG_Reset()
{
	TMS (1);
	JTAG_StrobeTCK ();								// move to Test Logic Reset state
	JTAG_StrobeTCK ();
	JTAG_StrobeTCK ();
	JTAG_StrobeTCK ();
	JTAG_StrobeTCK ();
	TMS (0);
	JTAG_StrobeTCK ();								// move to Run_Test/Idle state
}

unsigned int jtag::JTAG_IR_Scan(unsigned int instruction, int num_bits)
{
	unsigned int retval;							// JTAG instruction read
	int i;											// JTAG IR bit counter
	retval = 0x0;
	TMS(1);
	JTAG_StrobeTCK ();								// move to SelectDR
	TMS(1);
	JTAG_StrobeTCK ();								// move to SelectIR
	TMS(0);
	JTAG_StrobeTCK ();								// move to Capture_IR
	TMS(0);
	JTAG_StrobeTCK ();								// move to Shift_IR state
	for (i=0; i < num_bits; i++) 
	{
		TDI(instruction & 0x01);					// shift IR, LSB-first
		instruction = instruction >> 1;
		retval = retval >> 1;
		if (TDO()) 
		{
			retval |= (0x01 << (num_bits - 1));
		}
		if (i == (num_bits - 1))
		{
			TMS(1);								// move to Exit1_IR state
		}
		JTAG_StrobeTCK();
	}
	TMS(1);
	JTAG_StrobeTCK ();								// move to Update_IR
	TMS(0);
	JTAG_StrobeTCK ();								// move to RTI state
	return retval;
}

unsigned long jtag::JTAG_DR_Scan(unsigned long dat, int num_bits)
{
	unsigned long retval; // JTAG return value
	int i; // JTAG DR bit counter

	retval = 0x0L;
	TMS(1);
	JTAG_StrobeTCK (); // move to SelectDR
	TMS(0);
	JTAG_StrobeTCK (); // move to Capture_DR
	TMS(0);
	JTAG_StrobeTCK (); // move to Shift_DR state
	for (i=0; i < num_bits; i++)
	{
		TDI(dat & 0x01); // shift DR, LSB-first
		dat = dat >> 1;
		retval = retval >> 1;
		if(TDO()) 
		{
			retval |= (0x01L << (num_bits - 1));
		}
		if ( i == (num_bits - 1))
		{
			TMS(1); // move to Exit1_DR state
		}
		JTAG_StrobeTCK();
	}
	TMS(1);
	JTAG_StrobeTCK (); // move to Update_DR
	TMS(0);
	JTAG_StrobeTCK (); // move to RTI state
	return retval;
}

void jtag::JTAG_IWrite(unsigned int ireg, unsigned long dat, int num_bits)
{
	int done;							// TRUE = write complete; FALSE otherwise
	JTAG_IR_Scan (ireg, INST_LENGTH);	// load IR with <ireg>
	dat |= (0x03L << num_bits);			// append ‘WRITE’ opcode to data
										// load DR with <dat>
	JTAG_DR_Scan (dat, num_bits + 2);	// initiate the JTAG write
	
	// load DR with ‘0’, and check for BUSY bit to go to ‘0’.
	do
	{
		done = !(JTAG_DR_Scan (0x0L, 1)); // poll for JTAG_BUSY bit
	} while (!done);
}

unsigned long jtag::JTAG_IRead(unsigned int ireg, int num_bits)
{
	unsigned long retval;						// value returned from READ operation
	int done;									// TRUE = write complete; FALSE otherwise
	JTAG_IR_Scan (ireg, INST_LENGTH);			// load IR with <ireg>
	// load DR with read opcode (0x02)
	JTAG_DR_Scan (0x02L, 2);					// initiate the JTAG read
	do 
	{
		done = !(JTAG_DR_Scan (0x0L, 1));		// poll for JTAG_BUSY bit
	} while (!done);
	retval = JTAG_DR_Scan (0x0L, num_bits + 1); // allow poll operation to
	// read remainder of the bits
	retval = retval >> 1;						// shift JTAG_BUSY bit off the end
	return retval;
}

int jtag::FLASH_ByteWrite(unsigned int addr, unsigned char dat)
{
	unsigned long testval;						// holds result of FLASHDAT read
	int done;									// TRUE/FALSE flag
	int retval;									// TRUE if operation successful
	JTAG_IWrite (FLASHSCL, 0x86L, FLSC_LEN);	// set FLASHSCL based on SYSCLK
	// frequency (2MHz = 0x86)
	// set FLASHADR to address to write to
	JTAG_IWrite (FLASHADR, (unsigned long) addr, FLA_LEN);
	JTAG_IWrite (FLASHCON, 0x10L, FLCN_LEN);	// set FLASHCON for FLASH Write
	// operation (0x10)
	// initiate the write operation
	JTAG_IWrite (FLASHDAT, (unsigned long) dat, FLD_WRLEN);
	JTAG_IWrite (FLASHCON, 0x0L, FLCN_LEN);		// set FLASHCON for ‘poll’ operation
	do 
	{
		done = !(JTAG_IRead (FLASHDAT, 1));		// poll for FLBusy to de-assert
	} while (!done);
	testval = JTAG_IRead (FLASHDAT, 2);			// read FLBusy and FLFail
	retval = (testval & 0x02) ? FALSE:TRUE;		// FLFail is next to LSB
	return retval;								// return FLASH Pass/Fail
}

int jtag::FLASH_PageErase(unsigned int addr)
{
	unsigned long testval;						// holds result of FLASHDAT read
	int done;									// TRUE/FALSE flag
	int retval;									// TRUE if operation successful
	JTAG_IWrite (FLASHSCL, 0x86L, FLSC_LEN);	// set FLASHSCL based on SYSCLK
	// frequency (2MHz = 0x86)
	// set FLASHADR to address within page to erase
	JTAG_IWrite (FLASHADR, (unsigned long) addr, FLA_LEN);
	JTAG_IWrite (FLASHCON, 0x20L, FLCN_LEN);	// set FLASHCON for FLASH Erase
	// operation (0x20)
	JTAG_IWrite (FLASHDAT, 0xa5L, FLD_WRLEN);	// set FLASHDAT to 0xa5 to initiate
	// erase procedure
	JTAG_IWrite (FLASHCON, 0x0L, FLCN_LEN);		// set FLASHCON for ‘poll’ operation
	do 
	{
		done = !(JTAG_IRead (FLASHDAT, 1));		// poll for FLBusy to de-assert
	} while (!done);
	testval = JTAG_IRead (FLASHDAT, 2);			// read FLBusy and FLFail
	retval = (testval & 0x02) ? FALSE: TRUE;	// FLFail is next to LSB
	// set return value based on FLFail bit
	return retval;								// return FLASH Pass/Fail
}

int jtag::FLASH_ByteRead(unsigned int addr, unsigned char *pdat)
{
	unsigned long testval;								// holds result of FLASHDAT read
	int done;											// TRUE/FALSE flag
	int retval;											// TRUE if operation successful
	JTAG_IWrite (FLASHSCL, 0x86L, FLSC_LEN);			// set FLASHSCL based on SYSCLK
	// frequency (2MHz = 0x86)
	// set FLASHADR to address to read from
	JTAG_IWrite (FLASHADR, (unsigned long) addr, FLA_LEN);
	JTAG_IWrite (FLASHCON, 0x02L, FLCN_LEN);			// set FLASHCON for FLASH Read
	// operation (0x02)
	JTAG_IRead (FLASHDAT, FLD_RDLEN);					// initiate the read operation
	JTAG_IWrite (FLASHCON, 0x0L, FLCN_LEN);				// set FLASHCON for ‘poll’ operation
	do 
	{

		done = !(JTAG_IRead (FLASHDAT, 1));				// poll for FLBUSY to de-assert

	} while (!done);
	testval = JTAG_IRead (FLASHDAT, FLD_RDLEN);			// read the resulting data
	retval = (testval & 0x02) ? FALSE: TRUE;			// FLFail is next to LSB
	testval = testval >> 2;								// shift data.0 into LSB position
	*pdat = (unsigned char) testval;					// place data in return location
	return retval;										// return FLASH Pass/Fail
}

unsigned char jtag::CableSetup()
{
	DWORD DWTemp;
	switch(m_iCcabletype)
	{
	case ALTERABLASTER:
		{
			m_wiTDOPin = 7;
			m_iTDOAddP = 1;
			m_woTCKPin = 0;
			m_woTMSPin = 1;
			m_woTDIPin = 6;
			SetPortVal(m_nPort+2, 0x0f, 1);				//244使能 OE = 0,
			SetPortVal(m_nPort, 0x20, 1);				//設(shè)置DB25-5為高
			GetPortVal(m_nPort+1,&DWTemp,1);			//讀取
			DWTemp = DWTemp & 0x10;
			if (DWTemp)									//DB25-13為高,連接OK
			{
				OutputDebugString("DB25-13連接OK");
			}
			else
			{
				OutputDebugString("DB25-13與VCC連接失敗!");
				return 1;						
			}

			//判斷DB25 7-10腳是否相連
			GetPortVal(m_nPort+1,&DWTemp,1);			//讀取
			DWTemp = DWTemp & 0x40;						//DB25-10為高,連接OK
			if (DWTemp)									
			{
				OutputDebugString("DB25-7 -- 10 連接OK");
			}
			else
			{
				OutputDebugString("DB25-7 -- 10 連接失敗");
				return 2;						
			}
			JTAG_Reset ();							// Reset the JTAG state machine on DUT
		}break;
	}
	return 0;

}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高清久久久久久| 91精品国产福利在线观看| 国产精品色婷婷久久58| 国产精品初高中害羞小美女文| 亚洲久本草在线中文字幕| 亚洲午夜精品17c| 久久精品99久久久| 成人av在线电影| 欧美日韩国产综合草草| 精品国产1区二区| 中文字幕一区二区三区色视频| 一区二区三区久久久| 久久狠狠亚洲综合| 99久久精品国产网站| 69堂亚洲精品首页| 国产无遮挡一区二区三区毛片日本| 亚洲日本成人在线观看| 日本不卡中文字幕| eeuss影院一区二区三区| 欧美一级久久久久久久大片| 国产精品久久久久久久久快鸭| 日韩精品电影在线| 白白色 亚洲乱淫| 精品久久国产老人久久综合| 亚洲青青青在线视频| 激情图区综合网| 在线视频国内自拍亚洲视频| 久久久久久久久久看片| 五月天欧美精品| 波多野结衣精品在线| 精品三级在线看| 亚洲成人在线网站| yourporn久久国产精品| 精品福利在线导航| 亚洲一区二区三区三| 国产高清不卡一区| 欧美一级高清大全免费观看| 一本色道久久综合亚洲aⅴ蜜桃| 精品人在线二区三区| 亚洲国产日日夜夜| 99re亚洲国产精品| 久久精品视频免费观看| 蜜臀久久99精品久久久画质超高清| 色综合久久久久久久| 亚洲国产成人午夜在线一区| 蜜桃精品视频在线| 欧美高清视频在线高清观看mv色露露十八 | 亚洲国产综合91精品麻豆| 国产成人综合在线| 精品久久免费看| 另类专区欧美蜜桃臀第一页| 精品视频在线免费看| 亚洲美腿欧美偷拍| 粉嫩绯色av一区二区在线观看| 精品福利av导航| 青青草国产精品亚洲专区无| 欧美日韩在线不卡| 一区二区三区丝袜| 91视频免费观看| 中文字幕亚洲区| proumb性欧美在线观看| 欧美国产成人精品| 国产成人在线看| 国产色综合一区| 国产高清无密码一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 日本系列欧美系列| 欧美一区二区三区在线观看 | 欧美在线免费观看视频| 亚洲品质自拍视频网站| 一本久道久久综合中文字幕| 亚洲欧洲另类国产综合| 不卡视频免费播放| 自拍偷拍亚洲激情| 91免费看`日韩一区二区| 亚洲婷婷在线视频| 色天使色偷偷av一区二区| 亚洲女女做受ⅹxx高潮| 色哟哟日韩精品| 亚洲乱码精品一二三四区日韩在线| 91视频精品在这里| 亚洲一区在线观看网站| 欧美日韩日日骚| 男人的j进女人的j一区| 免费av网站大全久久| 日韩午夜精品视频| 国产精品综合网| 国产精品私人影院| 色哟哟国产精品| 亚洲国产精品影院| 欧美一级欧美三级| 国产一区二区三区精品欧美日韩一区二区三区| 精品理论电影在线观看 | 国产精品美女www爽爽爽| 99精品视频在线免费观看| 亚洲免费资源在线播放| 欧美日韩国产不卡| 久久91精品国产91久久小草| 久久久精品人体av艺术| 91欧美一区二区| 午夜激情综合网| 久久在线观看免费| 99re视频精品| 日韩精品成人一区二区在线| 久久久午夜精品理论片中文字幕| 成人美女在线观看| 亚洲国产精品久久久久秋霞影院 | 久久精品国产色蜜蜜麻豆| 久久日韩粉嫩一区二区三区| 成人福利视频网站| 亚洲伦理在线精品| 日韩精品一区二| 91网站在线播放| 蜜桃视频在线观看一区| 国产精品嫩草影院av蜜臀| 色婷婷av一区| 久久国产福利国产秒拍| 国产精品久久久久aaaa樱花| 欧美日韩国产精品成人| 国产成人综合亚洲网站| 亚洲成av人片在线观看| 久久久久久免费网| 欧美亚日韩国产aⅴ精品中极品| 麻豆国产欧美一区二区三区| 国产精品电影一区二区三区| 欧美精品v日韩精品v韩国精品v| 丁香桃色午夜亚洲一区二区三区| 亚洲成人av一区二区| 日本一区二区三区视频视频| 欧美日韩一级二级| 成人开心网精品视频| 丝袜美腿高跟呻吟高潮一区| 国产精品福利电影一区二区三区四区| 欧美网站一区二区| 国产成人亚洲综合a∨婷婷图片| 一二三四区精品视频| 国产欧美一区二区在线| 欧美一级片在线| 91黄视频在线观看| 国产91在线|亚洲| 欧美aaaaa成人免费观看视频| 亚洲裸体在线观看| 久久久久久亚洲综合影院红桃| 欧美人妖巨大在线| 91片在线免费观看| 丰满亚洲少妇av| 久久国产人妖系列| 亚洲午夜久久久| 一区在线观看视频| 久久久不卡网国产精品二区| 91精品国产综合久久精品app| 91片在线免费观看| 成人一级视频在线观看| 麻豆精品蜜桃视频网站| 亚洲成人在线观看视频| 亚洲天天做日日做天天谢日日欢| 国产日韩欧美在线一区| 日韩亚洲欧美综合| 欧美日本国产一区| 欧美日韩中字一区| 在线免费视频一区二区| 色综合中文字幕国产| 国产自产视频一区二区三区| 日本女人一区二区三区| 婷婷综合五月天| 亚洲国产成人av| 夜夜嗨av一区二区三区四季av| 亚洲欧美怡红院| 中文无字幕一区二区三区 | 国产成人免费视频网站| 久久精品99国产精品日本| 日本伊人午夜精品| 日韩电影在线免费看| 亚洲第一成年网| 亚洲成人动漫一区| 天堂午夜影视日韩欧美一区二区| 亚洲国产综合在线| 亚洲成人福利片| 日韩综合在线视频| 婷婷亚洲久悠悠色悠在线播放 | 日韩一区二区在线看片| 欧美一二区视频| 欧美电视剧免费全集观看| 欧美成人午夜电影| 久久影视一区二区| 国产视频一区不卡| 国产精品短视频| 亚洲蜜臀av乱码久久精品| 一区二区三区自拍| 亚洲一本大道在线| 肉色丝袜一区二区| 日韩激情中文字幕| 美腿丝袜亚洲一区| 国产精品一区二区免费不卡| 国产一本一道久久香蕉| 大陆成人av片| 99久久亚洲一区二区三区青草| 99re66热这里只有精品3直播| 色综合中文字幕国产| 欧美日韩视频在线观看一区二区三区|