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

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

?? ds2401a.c

?? DS2401增強型硅序列號是一款低成本的電子注冊碼
?? C
字號:
#include "Global.h"

BYTE 	cMachineType;			//
DWORD	dwTimeLimit;			//
BYTE	cLimitTime[10];			//
BYTE	CheckResult;			//
void Delayus( WORD wTimeLong )
{		
	WORD	i,j;
	
	for( i=0; i<wTimeLong; i++ )
		for( j=0; j<10; j++ );	
	
}//Delayus

//*******************ReadOneBit**************************
//從2401讀1bit,2401的數據在通信線的上升沿輸出
BYTE ReadOneBit(void)
{
	BYTE bResult;
				
	OutputEN();//輸出使能
	Delayus(1);
	
	//產生上升沿
	Clr2401();
	Delayus(5);
	Set2401();
	InputEN();//讀使能
	Delayus(10);
	
	bResult = Read2401();
	Delayus(50);
	
	return( bResult );
}//ReadOneBit
//*******************ReadOneBit**************************

//*******************ReadSN2401**************************
//從2401讀出串行碼:先發復位信號,再發寫命令0x33,然后讀,在整個過程關閉中斷
void ReadSN2401( BYTE *cpDst )
{
	WORD i,j,bOptBit;

	DisableInt();
	
	OutputEN();//輸出使能
	Delayus(1);	
	
	//發復位信號
	Clr2401();
	Delayus(500);
	Set2401();
	InputEN();//讀使能,放棄總線占有權
			  //這一句必須有,否則讀不到結果
	Delayus(450);

	//發寫命令0x33
	OutputEN();//輸出使能	
	i = 0x33;	 
	bOptBit = 1;
	for( j=0; j<8; j++ )
	{
		if( i & bOptBit )
		{
			Clr2401();
			Delayus(8);
			Set2401();
			Delayus(70);
		}
		else
		{
			Clr2401();
			Delayus(65);
			Set2401();
			Delayus(12);
		}
		
		bOptBit <<= 1;
	}

	for( i=0; i<8; i++ )				//共8個字節
	{
		bOptBit = 1;
		for( j=0; j<8; j++ )			//讀1個字節
		{
			if( ReadOneBit() )
				*(cpDst+i) |= bOptBit;
			else
				*(cpDst+i) &= ~bOptBit;
			bOptBit <<= 1;
		}	
	}
	
	OutputEN();//輸出使能
	Set2401();			//讀完之后把通信線拉高
	
	EnableInt();	
}//ReadSN2401
//*******************ReadSN2401**************************

//*******************WriteSN2401**************************
//SN2401的數據存放在0x00007100開始的地址空間上
BYTE WriteSN2401(void)
{
	DWORD *add;
	DWORD data32[3];
	BYTE data8[8];//存放從DS2401讀出的8字節數據
	
	//rWDMOD = 0;//禁止WDT
	
	//先把狀態讀出來
	add = (DWORD *)0x00007000;
	data32[0] = *add;
	
	//讀DS2401
	ReadSN2401(data8);
	//CRC校驗讀出的數據
	if(CheckDS2401CRC(data8)==FALSE)
		return CRC_ERROR;//不正確則退出函數
	else
	{
		
		//加密2401數據
		EncryptSN(data8);	
		//把數據轉存進雙字變量
		data32[1] = 0;
		data32[2] = 0;
		data32[1] = ((DWORD)data8[3]<<24) | ((DWORD)data8[2]<<16) | ((DWORD)data8[1]<<8) | data8[0];
		data32[2] = ((DWORD)data8[7]<<24) | ((DWORD)data8[6]<<16) | ((DWORD)data8[5]<<8) | data8[4];		
		//向FLASH寫入數據(狀態字和2401處理后的數據)	
		DisableInt();
		SelSector(7,7);
		EraseSector(7,7);
		SelSector(7,7);
		RamToFlash(0x00007000, (DWORD)data32, 256);
		EnableInt();
		return TRUE;
	}		
	
	//InitWDT();//啟動WDT
	
}//void WriteSN2401(void)
//*******************WriteSN2401**************************

//*******************CRC**************************
//CRC校驗,最后的結果在B中
void CRC( BYTE A, BYTE *B )
{
	BYTE C,i,tempA = A;
	
	for( i=0; i<8; i++ )
	{
		A ^= *B;
		C = A & 0x01;
		A = *B;
		if( C ==1 )
			A ^= 0x18;
		A /= 2;
		A += (C<<7);
		*B = A;
		tempA /= 2;
		A = tempA;
	}
}//CRC
//*******************CRC**************************

//*******************CheckDS2401CRC*********************
//校驗讀到的串行碼是否正確
//從2401讀到的串行碼第一字節是廠商碼,所有2401都相同
//然后是6字節的串行碼,最后一個是CRC校驗碼
//前面7個字節做CRC校驗之后應該等于第8個字節
BYTE CheckDS2401CRC( BYTE *cpSrc )
{
	BYTE i,B=0;
	for( i=0; i<7; i++ )
		CRC( *(cpSrc+i) , &B );
	if( *(cpSrc+7) == B )
		return TRUE;
	else
		return FALSE;
}//CheckDS2401CRC
//*******************CheckDS2401CRC*********************


//*******************MUL*********************
//6字節×6字節,按字符串的形式相乘
void MUL( BYTE *cpSrc )
{
	BYTE i,j;
	DWORD Mul[] = { 0xA7, 0x5B, 0xC9, 0x26, 0x0D, 0xA5 };
	DWORD c,Temp,Result[12];

	//結果緩沖區清零 
	for( i=0; i<12; i++ )
		Result[i] = 0;

	for( j=0; j<6; j++ )					//考察乘數的每一個字節
	{
		c=0;								//進位清零
		for( i=0; i<6; i++ )				//對于乘數的每一個字節,都掃描一遍被乘數
		{
			Temp = *(cpSrc+i) * Mul[j] + c;	//乘數和被乘數各自一個字節相乘,再加上進位
			Result[i+j] += (Temp % 256);	//上面的結果MOD256,再加進結果的相應字節
			c = Temp / 256;					//求進位
		}
	}

	//對結果進行調整,只取8個字節,故多出的字節沒必要調整
	for( i=0; i<8; i++ )
	{
		*(cpSrc+i) = Result[i] % 256;		
		c = Result[i] / 256;
		Result[i+1] += c;
    }
}//MUL
//*******************MUL*********************


//*******************Exchange****************
//把字節順序倒亂
void Exchange( BYTE *pcSrc )
{
	BYTE i,cTemp[8];
	
	cTemp[0] = *(pcSrc+3);
	cTemp[1] = *(pcSrc+5);
	cTemp[2] = *(pcSrc+0);
	cTemp[3] = *(pcSrc+7);
	cTemp[4] = *(pcSrc+2);
	cTemp[5] = *(pcSrc+6);
	cTemp[6] = *(pcSrc+1);
	cTemp[7] = *(pcSrc+4);
	
	for( i=0; i<8; i++ )
		*(pcSrc+i) = cTemp[i];
}//Exchange
//*******************Exchange****************

//*******************RLC*********************
//把輸入的字節 cSrc 左循環移 cBits 位
BYTE RLC( BYTE cSrc , BYTE cBits )
{
	WORD	wTemp;
	BYTE	i,cTemp;
	
	wTemp = cSrc;
	for( i=0; i<cBits; i++ )
		wTemp *=2;
	cTemp = (wTemp>>8)&0x00FF;
	wTemp += cTemp;
	wTemp &= 0x00FF;
	
	return( (BYTE)wTemp ); 		
}//RLC
//*******************RLC*********************

//*******************RRC*********************
//把輸入的字節 cSrc 右循環移 cBits 位
BYTE RRC( BYTE cSrc , BYTE cBits )
{
	WORD	wTemp;
	BYTE	i,cTemp;
	
	wTemp = cSrc<<8;
	for( i=0; i<cBits; i++ )
		wTemp /=2;
	cTemp = (wTemp>>8)&0x00FF;
	wTemp += cTemp;
	wTemp &= 0x00FF;
	
	return( (BYTE)wTemp ); 		
}//RRC
//*******************RRC*********************

//*******************EncryptSN*********************
//對讀到的2401SN碼進行加密
void EncryptSN( BYTE *cpSrc )
{
	BYTE i;
	
	//只取SN碼中間6個字節
	for( i=0; i<6; i++ )
		*(cpSrc+i) = *(cpSrc+i+1);
		
	//其它字節清零 	
	for( i=6; i<8; i++ )	
		*(cpSrc+i) = 0;
		
	//乘上一個6字節的常數	
	MUL( cpSrc );	
	
	//倒亂結果的字節位置		
	Exchange( cpSrc );
	
	//對不同的字節分別進行不同的循環左移或者循環右移
	for( i=0; i<8; i++ )
		if( i%2 == 0 )
		{
			*(cpSrc+i) = RLC( *(cpSrc+i), ((i/2+6)%4)+1 );	//偶字節進行不同的循環左移
			*(cpSrc+i) ^= 0xB4;								//結果再異或 0xB4 
		}
		else
		{
			*(cpSrc+i) = RRC( *(cpSrc+i), (i%3)+1 );		//奇字節進行不同的循環右移
			*(cpSrc+i) ^= 0x69;								//結果再異或 0x69 
		}
		
	//對第四個字節進行特殊處理	
	for( i=0; i<8; i++ )
		*(cpSrc+3) += *(cpSrc+i);
	*(cpSrc+3) %= 256; 	
	
	//對第六個字節進行特殊處理	
	for( i=2; i<7; i++ )
		*(cpSrc+5) += *(cpSrc+i);
	*(cpSrc+5) %= 256; 		
	
}//EncryptSN
//*******************EncryptSN*********************


//*******************CheckSN*********************
//判斷從2401讀出并加密后的SN碼跟從FLASH中讀出的SN碼是否一致
BYTE CheckSN(void)
{
	BYTE data8[8];
	DWORD data32[2];
	DWORD *add;
	DWORD temp0,temp1;
	
	//先讀出DS2401的數據并處理好
	//讀DS2401
	ReadSN2401(data8);
	//CRC校驗讀出的數據
	if(!CheckDS2401CRC(data8))
		return CRC_ERROR;//不正確則退出函數
	else
	{
		//加密2401數據
		EncryptSN(data8);	
		//把數據轉存進雙字變量
		data32[0] = 0;
		data32[1] = 0;
		data32[0] = ((DWORD)data8[3]<<24) | ((DWORD)data8[2]<<16) | ((DWORD)data8[1]<<8) | data8[0];
		data32[1] = ((DWORD)data8[7]<<24) | ((DWORD)data8[6]<<16) | ((DWORD)data8[5]<<8) | data8[4];
		
		//讀出FLASH中的DS2401數據
		add = (DWORD *)0x00007004;
		temp0 = *add;
		add = (DWORD *)0x00007008;
		temp1 = *add;
		
		//比較
		if((temp0==data32[0])&&(temp1==data32[1]))
			return( SN_OK );
		else
			return( SN_ERROR );
	}
	
}//CheckSN
//*******************CheckSN*********************

//*******************Noise2401*********************
//平時不讀取2401時不斷向它發干擾脈沖
void Noise2401( void )
{
	BYTE i,j,bOptBit;
	BYTE cTime;							//脈沖波之間的隨機延時時間
	BYTE cWave;							//隨機產生的脈沖波形
	
	cWave = ((DWORD)LedTimeCount*19)%251 + 3;		//產生隨機脈沖波形
	
	bOptBit = 1;						
	for( i=0; i<8; i++ )
	{
		if( cWave & bOptBit )			//輸出cWave中相應于bOptBit的位
			Set2401();
		else
			Clr2401();
		
		cTime = ((DWORD)LedTimeCount*13)%191 + 57;	//產生隨機的延時時間
		for( j=0; j<cTime; j++ );		//延時	
		
		bOptBit <<= 1;					//移向下一位
	}
	
	Set2401();							//最后都對2401保持高電平,避免2401不必要的復位
}//Noise2401
//*******************Noise2401*********************

//密碼錯誤執行的程序
void WrongPassword(void)
{
	DWORD i;
	ColorSelect = 2;
	AllOn();
	for(i=0;i<1500000;i++);
	ClrDisplay();
	for(i=0;i<1500000;i++);
}//void WrongPassword(void)



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99最新地址| 成人国产精品免费网站| 亚洲国产成人一区二区三区| 欧美中文一区二区三区| 国产精品一区二区久久精品爱涩| 亚洲国产日韩在线一区模特| 久久久久久一级片| 欧美一区二区三区在线观看 | 成人午夜免费av| 日韩电影在线观看电影| 亚洲欧美成人一区二区三区| 久久精品一区二区| 精品国精品国产| 51精品秘密在线观看| 91久久精品一区二区二区| 国产成人在线视频免费播放| 蜜桃视频一区二区三区在线观看| 亚洲中国最大av网站| 亚洲欧洲美洲综合色网| 精品国产一区久久| 精品日韩99亚洲| 91麻豆精品国产综合久久久久久| 久久午夜电影网| 欧美精品三级日韩久久| 在线欧美日韩精品| 91久久奴性调教| 91视视频在线观看入口直接观看www | 国产精品一区二区果冻传媒| 天天影视网天天综合色在线播放| 樱花草国产18久久久久| 中文字幕一区日韩精品欧美| 欧美国产精品久久| 欧美极品美女视频| 国产清纯白嫩初高生在线观看91| 精品国产一区二区在线观看| 日韩欧美一区二区三区在线| 7777精品伊人久久久大香线蕉 | 精品免费视频.| 日韩精品一区二区在线| 日韩亚洲欧美高清| 精品国精品国产| 国产无遮挡一区二区三区毛片日本| 欧美va在线播放| 久久一区二区三区国产精品| 久久免费电影网| 国产日韩欧美高清| 国产精品伦一区二区三级视频| 欧美激情综合五月色丁香| 中文一区二区在线观看| 最新久久zyz资源站| 亚洲精品国产精华液| 亚洲夂夂婷婷色拍ww47| 视频在线在亚洲| 国产一区中文字幕| 不卡区在线中文字幕| 色天使久久综合网天天| 欧美日韩一区二区三区在线| 亚洲国产成人午夜在线一区| 中文字幕一区二区三区蜜月 | 亚洲午夜电影在线观看| 日韩高清不卡一区二区三区| 久久精工是国产品牌吗| 大白屁股一区二区视频| 色欧美片视频在线观看在线视频| 欧美日韩在线播放三区| 精品国产自在久精品国产| 国产欧美日韩亚州综合| 亚洲激情第一区| 日本欧美一区二区三区乱码| 国产剧情在线观看一区二区| 91在线免费看| 欧美福利电影网| 亚洲国产激情av| 一区二区成人在线| 精品一区免费av| 99久久精品国产观看| 欧美精品 国产精品| 国产亚洲污的网站| 亚洲一区二区在线免费看| 麻豆成人在线观看| 91性感美女视频| 日韩欧美国产一区二区三区| 国产精品蜜臀av| 日韩一区精品字幕| 成人精品视频一区二区三区| 欧美福利视频一区| ...av二区三区久久精品| 麻豆成人久久精品二区三区红| 不卡av在线网| 精品久久久久久无| 亚洲一区二区三区四区的| 精品午夜久久福利影院| 欧美日韩中字一区| 国产精品久久久久久亚洲伦| 日本免费新一区视频| 91小视频在线观看| 国产日本欧美一区二区| 天使萌一区二区三区免费观看| 成人激情小说乱人伦| 日韩视频在线一区二区| 亚洲中国最大av网站| 成人免费视频caoporn| 欧美成人在线直播| 亚洲成人动漫在线免费观看| 99久久综合狠狠综合久久| 精品久久久三级丝袜| 五月激情综合色| 色av综合在线| 亚洲欧美综合网| 国产成人h网站| 26uuu色噜噜精品一区二区| 懂色av一区二区三区免费看| 91精品国产综合久久精品麻豆| 亚洲精品你懂的| av资源网一区| 欧美激情中文不卡| 国产在线播放一区三区四| 日韩免费看的电影| 日韩国产高清在线| 91麻豆精品91久久久久同性| 亚洲国产精品久久久男人的天堂 | 欧美成人综合网站| 视频在线观看一区| 欧美三级日韩三级国产三级| 亚洲乱码国产乱码精品精小说| www.亚洲精品| 国产精品久久久久久久久图文区| 国产69精品久久久久777| 2021中文字幕一区亚洲| 久久99在线观看| 亚洲精品在线观看视频| 精品一区二区日韩| 精品国产欧美一区二区| 久久成人久久爱| 久久久噜噜噜久噜久久综合| 国产主播一区二区| 国产视频一区二区在线| 成人精品gif动图一区| 国产精品三级电影| 97久久精品人人爽人人爽蜜臀 | 亚洲国产精品久久人人爱蜜臀| 在线观看av一区二区| 亚洲成人中文在线| 欧美精品v国产精品v日韩精品| 秋霞国产午夜精品免费视频| 日韩精品一区二区三区三区免费| 国模套图日韩精品一区二区| 国产女人aaa级久久久级| 粉嫩久久99精品久久久久久夜| 国产精品欧美一级免费| 一本色道久久综合精品竹菊| 亚洲一级二级三级在线免费观看| 欧美三级视频在线播放| 日本成人在线一区| 精品国产露脸精彩对白| 国产91精品免费| 亚洲精品高清在线| 91麻豆精品国产综合久久久久久| 国产自产v一区二区三区c| 日本一二三不卡| 欧美性受xxxx黑人xyx| 免费在线观看视频一区| 欧美国产日韩在线观看| 日本高清无吗v一区| 日本三级亚洲精品| 久久精品一区二区三区av| 色婷婷精品久久二区二区蜜臀av| 丝袜美腿一区二区三区| 国产亚洲欧美日韩在线一区| 色爱区综合激月婷婷| 麻豆一区二区三| 日本一区二区三区免费乱视频| 色婷婷激情综合| 久久99精品久久久| 成人免费在线播放视频| 欧美巨大另类极品videosbest | 国产亚洲视频系列| 一本色道久久加勒比精品| 麻豆国产精品一区二区三区| 日韩一区在线看| 日韩区在线观看| 91美女视频网站| 激情综合色综合久久| 亚洲欧美电影院| 国产校园另类小说区| 精品视频1区2区| 欧美日韩免费在线视频| 国产在线不卡一卡二卡三卡四卡| 亚洲男人天堂av| 久久九九国产精品| 欧美日韩精品电影| 波多野结衣一区二区三区| 麻豆一区二区三| 亚洲图片自拍偷拍| 国产精品不卡视频| 久久综合九色综合97_久久久| 欧美日本乱大交xxxxx| 99视频在线精品| 国产精品一区免费在线观看| 日韩精品欧美精品|