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

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

?? ib.c

?? DALLAS可代替DS1994卡的DS1904卡基于AVR代碼
?? C
字號:
/*
*********************************************************************************************************
*Copyright(c)2005,廣東必達保安系統(tǒng)有限公司電子開發(fā)部
*All rights rerserved
*
*文件名稱:ib.c
*文件標(biāo)識:
*摘    要:Dallas iB的IAR V3.20A 底層協(xié)議包
*
*當(dāng)前版本:1.0
*作    者:錢少群
*完成日期:2006年06月20日
*
*取代版本:
*作    者:
*完成日期:
*
*********************************************************************************************************
*/


#include "includes.h"


///////////////////////////////////////////////////
//		1-WIRE 操作
///////////////////////////////////////////////////

/*
*****************************************************
*描述:	讀 DS19XX ID
*
*入口:	idBuf		ID數(shù)據(jù)區(qū)指針
*	
*出口:	返回值 = 1	數(shù)據(jù)有效
*	返回值 = 0	數(shù)據(jù)無效
*
*原創(chuàng): 錢少群
*時間: 2005年3月21日
*修改:
*時間:
******************************************************
*/
#if	TMROM
unsigned char Tm_Rom(unsigned char *idBuf)
{
	unsigned char right = 0;
        unsigned char n = 8;
        unsigned char *tBuf;

	tBuf = idBuf;
	if (Tm_Rst() == 1)			//reset TM
	{
		Tm_Txd(IBREADROM);		//33H read rom command
		do{
			*tBuf++ = Tm_Rxd();	//read data
		}while (--n);		

		--tBuf;
		if (Crc_8n(idBuf, 7) == *tBuf)	//crc 校驗
		{
			right = 1;
		}
		
		if (*idBuf == 0) right = 0;
		if (*idBuf == 0xFF) right = 0;
	}
	
	return right;
}
#endif

/*
*****************************************************
*描述:	讀 DS1991 subkey
*
*入口:	adr		subkey地址
*	idBuf		ID數(shù)據(jù)區(qū)指針
*	passwordBuf	subkey密碼區(qū)指針
*	dataBuf		subkey數(shù)據(jù)區(qū)指針
*	n		字節(jié)數(shù)
*出口:	idBuf		ID數(shù)據(jù)區(qū)指針
*	dataBuf		subkey數(shù)據(jù)區(qū)指針
*	返回值 = 1	數(shù)據(jù)有效
*	返回值 = 0	數(shù)據(jù)無效
*
*原創(chuàng): 錢少群
*時間: 2005年3月21日
*修改:
*時間:
******************************************************
*/
#if	TMRDS
unsigned char Tm_Rds(unsigned char adr, 
			unsigned char *idBuf, 
			unsigned char *passwordBuf, 
			unsigned char *dataBuf, 
			unsigned char n)
{
	unsigned char right = 0;
	
	if (Tm_Rst() == 1)		//reset TM
	{
		Tm_Txd(IBSKIPROM);	//skip rom
		Tm_Txd(IBREADSUBKEY);	//read subkey
		Tm_Txd(adr);		//send low of address
		adr = ~adr;
		Tm_Txd(adr);
		
		adr = 8;		//read identifier(ID)
		do{
			*idBuf++ = Tm_Rxd();
		}while (--adr);
			
		adr = 8;		//write password
		do{
			Tm_Txd(*passwordBuf++);
		}while (--adr);
		
		do{			//read data
			*dataBuf++ = Tm_Rxd();
		}while (--n);

		right = Tm_Rst();	//reset TM
	}
	
	return right;
}
#endif

/*
*****************************************************
*描述:	寫 DS1991 subkey
*
*入口:	adr		subkey地址
*	idBuf		ID數(shù)據(jù)區(qū)指針
*	passwordBuf	subkey密碼區(qū)指針
*	dataBuf		subkey數(shù)據(jù)區(qū)指針
*	n		字節(jié)數(shù)
*出口:	idBuf		ID數(shù)據(jù)區(qū)指針
*	返回值 = 1	數(shù)據(jù)寫正確
*	返回值 = 0	數(shù)據(jù)寫錯
*
*原創(chuàng): 錢少群
*時間: 2005年3月21日
*修改:
*時間:
******************************************************
*/
#if	TMWRS
unsigned char Tm_Wrs(unsigned char adr, 
			unsigned char *idBuf, 
			unsigned char *passwordBuf, 
			unsigned char *dataBuf, 
			unsigned char n)
{
	unsigned char right = 0;
	
	if (Tm_Rst() == 1)		//reset TM
	{
		Tm_Txd(IBSKIPROM);	//skip rom
		Tm_Txd(IBWRITESUBKEY);		//write subkey
		Tm_Txd(adr);		//send address
		adr = ~adr;
		Tm_Txd(adr);
		
		adr = 8;		//read identifier(ID)
		do{
			*idBuf++ = Tm_Rxd();
		}while (--adr);

		adr = 8;		//write password
		do{
			Tm_Txd(*passwordBuf++);
		}while (--adr);
		
		do{			//write data
			Tm_Txd(*dataBuf++);
		}while (--n);
		
		right = Tm_Rst();	//reset TM
	}
	
	return right;
}
#endif

/*
*****************************************************
*描述:	讀 DS1994 時鐘
*
*入口:	timeBuf		時間區(qū)指針
*	
*出口:	返回值 = 1	讀時鐘對
*	返回值 = 0	讀時鐘錯
*
*原創(chuàng): 錢少群
*時間: 2005年3月21日
*修改:
*時間:
******************************************************
*/
#if	TM1994
unsigned char Tm_1994(unsigned char *timeBuf)
{
	return Tm_Rdp(02, 02, timeBuf, 5);
}
#endif

/*
*****************************************************
*描述:	讀 DS1904 時鐘
*
*入口:	dataBuf		數(shù)據(jù)區(qū)指針
*	
*	
*	
*出口:	返回dataBuf數(shù)據(jù)區(qū)數(shù)據(jù)
*	返回值 = 1	讀數(shù)據(jù)對
*	返回值 = 0	讀數(shù)據(jù)錯
*
*原創(chuàng): 楊富添
*時間: 2008年10月13日
*修改:
*時間:
******************************************************
*/
#if	TMRDP1904
unsigned char Tm_Rdp1904(unsigned char *dataBuf)
{
	unsigned char right = 0;
	unsigned char n = 5;
	
	if (Tm_Rst() == 1)		//reset TM
	{
		Tm_Txd(IBSKIPROM);	//skip rom
		Tm_Txd(IBREADSUBKEY);	//66H read clock
		
		do{
			*dataBuf++ = Tm_Rxd();//receive data (1個控制字節(jié) + 4字節(jié)數(shù)據(jù))
		}while (--n);
		
		right = Tm_Rst();	//reset TM
	}
	
	return right;
}
#endif

/*
*****************************************************
*描述:	寫 DS1904
*
*入口:	
*	
*	dataBuf		數(shù)據(jù)區(qū)指針
*	n		字節(jié)數(shù)
*出口:	返回值 = 1	寫數(shù)據(jù)對
*	返回值 = 0	寫數(shù)據(jù)錯
*
*原創(chuàng): 錢少群
*時間: 2005年3月21日
*修改:
*時間:
******************************************************
*/
#if	TMWRP1904
unsigned char Tm_Wrp1904(unsigned char *dataBuf)
{
	unsigned char right = 0;
	unsigned char n = 5;

	if (Tm_Rst() == 1)		//reset TM
	{
		Tm_Txd(IBSKIPROM);	//skip rom
		Tm_Txd(IBWRITESUBKEY);//write scratchpad
		
		do{
			Tm_Txd(*dataBuf++);//send data
		}while (--n);

		right = Tm_Rst();	//reset TM
	}
	
	return right;
}
#endif

/*
*****************************************************
*描述:	讀 DS1996 頁
*
*入口:	adrHigh		數(shù)據(jù)高地址
*	adrLow		數(shù)據(jù)低地址
*	dataBuf		數(shù)據(jù)區(qū)指針
*	n		字節(jié)數(shù)
*出口:	返回dataBuf數(shù)據(jù)區(qū)數(shù)據(jù)
*	返回值 = 1	讀數(shù)據(jù)對
*	返回值 = 0	讀數(shù)據(jù)錯
*
*原創(chuàng): 錢少群
*時間: 2005年3月21日
*修改:
*時間:
******************************************************
*/
#if	TMRDP
unsigned char Tm_Rdp(unsigned char adrHigh, 
			unsigned char adrLow, 
			unsigned char *dataBuf, 
			unsigned char n)
{
	unsigned char right = 0;
	
	if (Tm_Rst() == 1)		//reset TM
	{
		Tm_Txd(IBSKIPROM);	//skip rom
		Tm_Txd(IBREADMEMORY);	//read memory
		Tm_Txd(adrLow);		//send low of address
		Tm_Txd(adrHigh);	//send high of address
		
		do{
			*dataBuf++ = Tm_Rxd();//receive data
		}while (--n);
		
		right = Tm_Rst();	//reset TM
	}
	
	return right;
}
#endif

/*
*****************************************************
*描述:	寫 DS1996 頁
*
*入口:	adrHigh		數(shù)據(jù)高地址
*	adrLow		數(shù)據(jù)低地址
*	dataBuf		數(shù)據(jù)區(qū)指針
*	n		字節(jié)數(shù)
*出口:	返回值 = 1	寫數(shù)據(jù)對
*	返回值 = 0	寫數(shù)據(jù)錯
*
*原創(chuàng): 錢少群
*時間: 2005年3月21日
*修改:
*時間:
******************************************************
*/
#if	TMWRP
unsigned char Tm_Wrp(unsigned char adrHigh, 
			unsigned char adrLow, 
			unsigned char *dataBuf, 
			unsigned char n)
{
	unsigned char right = 0;
	unsigned char ta1;
	unsigned char ta2;
	unsigned char ta3;
	//unsigned char ta4;

	//ta4 = n;
	if (Tm_Rst() == 1)		//reset TM
	{
		Tm_Txd(IBSKIPROM);	//skip rom
		Tm_Txd(IBWRITESCRATCHPAD);//write scratchpad
		Tm_Txd(adrLow);		//send low of address
		Tm_Txd(adrHigh);	//send high of address
		do{
			Tm_Txd(*dataBuf++);//send data
		}while (--n);

		Tm_Rst();
		Tm_Txd(IBSKIPROM);	//skip rom
		Tm_Txd(IBREADSCRATCHPAD);//read scratchpad
		ta1 = Tm_Rxd();
		ta2 = Tm_Rxd();
		ta3 = Tm_Rxd();

		Tm_Rst();
		Tm_Txd(IBSKIPROM);	//skip rom	
		Tm_Txd(IBCOPYSCRATCHPAD);//copy scratchpad
		Tm_Txd(ta1);
		Tm_Txd(ta2);
		Tm_Txd(ta3);
		
		right = Tm_Rst();	//reset TM
	}
	
	return right;
}
#endif

/*
*****************************************************
*描述:	讀 DS1971 頁
*
*入口:	adr		數(shù)據(jù)地址
*	dataBuf		數(shù)據(jù)區(qū)指針
*	n		字節(jié)數(shù)
*出口:	返回值 = 1	讀數(shù)據(jù)對
*	返回值 = 0	讀數(shù)據(jù)錯
*
*原創(chuàng): 錢少群
*時間: 2005年3月21日
*修改:
*時間:
******************************************************
*/
#if	TMRD71
unsigned char Tm_Rd71(unsigned char adr, 
			unsigned char *dataBuf, 
			unsigned char n)
{
	unsigned char right = 0;
	
	if (Tm_Rst() == 1)		//reset TM
	{
		Tm_Txd(IBSKIPROM);	//skip rom
		Tm_Txd(IBREADMEMORY);	//read memory
		Tm_Txd(adr);		//send low of address
		
		do{
			*dataBuf++ = Tm_Rxd();//receive data
		}while (--n);
		
		right = Tm_Rst();	//reset TM
	}
	
	return right;
}
#endif



//////////////////////////////////////////////////////
////		DS19XX 操作時序
//////////////////////////////////////////////////////


/*
*****************************************************
*描述:	DS19XX 復(fù)位時序
*
*入口:	
*
*出口:	返回值 = 1	復(fù)位正確
*	返回值 = 0	復(fù)位錯誤
*
*原創(chuàng): 錢少群 
*時間: 2005年3月21日
*修改: 馮純枝
*時間: 2005年12月12日
******************************************************
*/
unsigned char Tm_Rst(void)
{
	unsigned char rst = 0;
	
	if (Tm_Wdrst() == 1)	rst = 1;
	Delay_10Us(41); 	//delay 410us
	
	return rst;
}

/*
*****************************************************
*描述:	DS19XX 發(fā)送字節(jié)時序
*
*入口:	valTx	發(fā)送數(shù)據(jù)
*
*出口:	
*
*
*原創(chuàng): 錢少群
*時間: 2005年3月21日
*修改:
*時間:
******************************************************
*/
void Tm_Txd(unsigned char valTx)
{
	unsigned char n = 8;
	
	s(DDRTM, TM);			//Set output
	do{
		c(PORTTM, TM);		//clr TM
		Delay_5Us();		//delay 8us
		
		if (b(valTx,0))
		{
			s(PORTTM, TM);	//SET TM
		}
		Delay_10Us(9);		//Delay 90us
		
		s(PORTTM, TM);		//set TM
		Delay_5Us();		//delay 8us
		
		valTx = valTx >> 1;
	}while (--n);
}

/*
*****************************************************
*描述:	DS19XX 接收字節(jié)時序
*
*入口:	
*
*出口:	返回數(shù)據(jù)
*
*
*原創(chuàng): 錢少群
*時間: 2005年3月21日
*修改:
*時間:
******************************************************
*/
unsigned char Tm_Rxd(void)
{
	unsigned char n = 8;
	unsigned char valRx = 0;

	do{
		s(DDRTM, TM);	//set output
		c(PORTTM, TM);	//clr TM
		Delay_5Us();	//delay 5us
		
		valRx = valRx >> 1;
		
		s(PORTTM, TM);
		c(DDRTM, TM);
		Delay_10Us(1);	//delay 10us
		
		if (b(PINTM, TM)) valRx |= 0x80;//test TM if TM=1 then set '1'
                Delay_10Us(10); 	//delay 100us
	}while (--n);
	
	return valRx;
}


/*
*****************************************************
*描述:	DS19XX 看門狗讀復(fù)位時序
*
*入口:	
*
*出口:	返回值 = 1	復(fù)位正確
*	返回值 = 0	復(fù)位錯誤
*
*原創(chuàng): 馮純枝
*時間: 2005年12月12日
*修改: 
*時間: 
******************************************************
*/
unsigned char Tm_Wdrst(void)
{
	unsigned char rst = 0;
	
	s(DDRTM, TM);		//Set output
	c(PORTTM, TM);		//clr TM
	Delay_10Us(50);		//delay 500us
	
	s(PORTTM, TM);		//PULL UP
	c(DDRTM, TM);		//Set input
	
	Delay_10Us(9);		//delay 90us
	if (b(PINTM, TM) == 0)	//test TM if TM=0 then OK=1
	  rst = 1;
				//OK為標(biāo)志OK=0=false OK=1=true
	
	return rst;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区动态图| 成人综合婷婷国产精品久久蜜臀| 欧洲一区二区av| 亚洲已满18点击进入久久| 在线看日韩精品电影| 一区二区三区免费看视频| 欧美日韩在线观看一区二区 | 中文字幕在线一区二区三区| 成人免费av网站| 一区二区视频免费在线观看| 欧美人与z0zoxxxx视频| 久久69国产一区二区蜜臀| 久久精品亚洲乱码伦伦中文| 一本色道久久综合精品竹菊| 日韩电影在线观看电影| 国产日韩精品一区二区三区| 在线精品亚洲一区二区不卡| 天天综合色天天| 国产欧美一二三区| 欧美午夜一区二区三区| 极品美女销魂一区二区三区免费| 欧美国产精品一区二区三区| 欧美性三三影院| 国产精品18久久久久久久网站| 亚洲色欲色欲www| 91精品国产乱| 色综合一个色综合| 美腿丝袜亚洲综合| 亚洲精品一卡二卡| 日韩欧美一级精品久久| 一本到三区不卡视频| 久久精品国产77777蜜臀| 中文字幕亚洲电影| 欧美一区二区美女| 99久久精品99国产精品| 久久66热re国产| 亚洲国产精品欧美一二99| 亚洲图片另类小说| 91麻豆精品国产91久久久资源速度| 成人精品电影在线观看| 蜜桃一区二区三区在线观看| 樱花影视一区二区| 久久精品视频在线免费观看| 欧美日韩综合不卡| 91蜜桃婷婷狠狠久久综合9色| 久久99热这里只有精品| 亚洲一级不卡视频| 自拍视频在线观看一区二区| 精品国产亚洲在线| 在线不卡中文字幕播放| 色综合久久九月婷婷色综合| 国产高清精品网站| 美国精品在线观看| 香蕉av福利精品导航| 亚洲日本护士毛茸茸| 欧美极品少妇xxxxⅹ高跟鞋| 欧美r级电影在线观看| 欧美精品v国产精品v日韩精品| 色偷偷成人一区二区三区91| 高清不卡一区二区在线| 国产成人免费高清| 国产精品91一区二区| 久久国产精品99久久久久久老狼| 五月婷婷综合在线| 亚洲地区一二三色| 亚洲制服丝袜在线| 亚洲最新视频在线观看| 亚洲女同一区二区| 亚洲色图视频网站| 亚洲欧美乱综合| 亚洲人成在线播放网站岛国| 亚洲欧美在线视频观看| 亚洲欧美在线视频| 免费观看久久久4p| 麻豆久久久久久| 国产精品自在在线| 高清国产午夜精品久久久久久| 国产精品77777| 成人一级黄色片| 成年人午夜久久久| 91论坛在线播放| 在线观看国产一区二区| 欧美日韩国产成人在线91| 欧美精品日日鲁夜夜添| 5858s免费视频成人| 欧美一级理论片| 精品久久五月天| 国产精品久久久久国产精品日日| 自拍偷拍亚洲激情| 亚洲一区二三区| 老司机免费视频一区二区三区| 国模大尺度一区二区三区| 国产精品一卡二卡在线观看| a亚洲天堂av| 欧美理论片在线| 精品国产污污免费网站入口 | 欧美人xxxx| 精品国产成人系列| 国产精品天美传媒| 亚洲欧美成人一区二区三区| 丝瓜av网站精品一区二区 | 午夜精品123| 久久99精品久久久久| 成人美女视频在线观看18| 一本一本大道香蕉久在线精品| 欧美三级在线播放| 欧美精品一区二| 亚洲精品日韩一| 久久精品国产一区二区三 | 奇米影视在线99精品| 国产丝袜欧美中文另类| 一区二区三区中文字幕| 美女精品一区二区| 成人禁用看黄a在线| 欧美肥妇毛茸茸| 国产精品成人在线观看| 日韩不卡在线观看日韩不卡视频| 国产成人在线视频网站| 欧美私人免费视频| 国产色婷婷亚洲99精品小说| 亚洲高清中文字幕| 成人的网站免费观看| 国产精品日产欧美久久久久| 五月综合激情婷婷六月色窝| 成人午夜免费电影| 欧美一区二区观看视频| 亚洲美女一区二区三区| 国产河南妇女毛片精品久久久| 91超碰这里只有精品国产| 国产精品嫩草影院av蜜臀| 久久精品国产亚洲一区二区三区| 在线一区二区观看| 国产欧美日韩亚州综合 | 久久在线观看免费| 亚洲成人免费电影| 99久久99久久久精品齐齐| 久久香蕉国产线看观看99| 日韩激情在线观看| 91国模大尺度私拍在线视频| 中文天堂在线一区| 国产一区在线精品| 日韩三级视频中文字幕| 亚洲国产日韩精品| 91视频在线观看| 国产精品毛片无遮挡高清| 国产美女在线精品| 精品人伦一区二区色婷婷| 婷婷久久综合九色综合伊人色| 色综合视频一区二区三区高清| 久久精品一区二区三区不卡| 麻豆91在线播放| 欧美精品久久久久久久多人混战| 一区二区不卡在线播放| 99re视频这里只有精品| 国产清纯白嫩初高生在线观看91 | 色偷偷88欧美精品久久久| 国产精品久久毛片av大全日韩| 美腿丝袜亚洲一区| 日韩一级黄色大片| 日韩二区三区四区| 欧美久久久久中文字幕| 亚洲图片欧美视频| 欧美三级三级三级| 亚洲h在线观看| 欧美剧情片在线观看| 香蕉影视欧美成人| 91精品国产综合久久福利软件| 亚洲成av人**亚洲成av**| 欧美欧美欧美欧美| 美国一区二区三区在线播放| 亚洲天堂福利av| 97久久超碰国产精品电影| 亚洲三级小视频| 91麻豆精品视频| 午夜视频一区二区| 欧美一区二区视频免费观看| 麻豆91小视频| 中文字幕不卡三区| 91免费观看国产| 天天影视色香欲综合网老头| 日韩免费视频线观看| 国产高清无密码一区二区三区| 国产精品久久久久影院老司| 97精品超碰一区二区三区| 亚洲一区在线观看视频| 日韩一区二区三区电影在线观看| 激情综合色综合久久| 国产日韩一级二级三级| 色视频一区二区| 日韩精品高清不卡| 国产亚洲精品久| 色综合激情五月| 人人精品人人爱| 国产精品美女久久久久久久久久久| 91亚洲国产成人精品一区二三| 亚洲午夜私人影院| 26uuu欧美日本| 欧美在线免费观看视频| 久久精品国产久精国产爱| 最新成人av在线|