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

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

?? ds1820.c

?? ds1820驅動,基于KEIL 可以直接用的好東西
?? C
字號:
//**********************************************************************
//功能		: 實時時鐘DS1820操作模塊
//作者		: lihj
//創建日期	: 2004-07-10
//版本		: V1.0
//修改記錄	: 
//***********************************************************************
#include <reg51.h>
#include <std.h>
#include <ds1820.h>

sbit TMDAT = P3^4;			//根據實實際情況設定

//函數功能:延時(12MHz晶振)
//輸入參數:<count>延時時間長度,單位1ms
void Delay_ms (U16 count)	 					
{									
	U16 i;		       						
	while (count)							
	{								
		i = 123;						
		while (i>0) i--;					
		count--;						
    }									
}									

//函數功能:復位芯片(至少480us長的低電平信號)
void ResetChip (void)							
{		                  		 			
	U16 i;	
							
	TMDAT = 0;				//480us~960us長低電平:復位
	i = 150;							
	while (i--);         	//延時約900 uS(12Mhz時)	
	TMDAT = 1;							
	i = 5;								
	while (i--);		   	//DS1820檢測到上升沿后,過15~60us后輸出“存在”信號
}

//函數功能:	判斷DS1820是否存在
//返回參數:	TRUE:芯片存在
//	    	FALSE:芯片不存在
U8 ChipPresenceCheck(void)				
{                     						
	U16 i;							
	
	ResetChip();
	
	//等待70us,應該檢測到低電平
	i = 11;
	while(i--);
	if(TMDAT)
	{
		return FALSE;
	}
	
	//等待400us,應檢測到高電平,低電平信號保持60~240us
	i = 65; 
	while (i--);
	if(TMDAT)
	{
		return TRUE;		
	}
	else
	{
		return FALSE;
	}	
}									

//函數功能:從總線上讀取1位信號
bit RdBit (void)							
{                   							  
	U16 i;							
	bit b0;							
	TMDAT = 0; i++;				//下降沿之后,保持低電平至少1us						//
	TMDAT = 1; i++; i++;		//微量延時(既作輸入又作輸出的I/O腳,讀數據時,先拉高電平)
	
	b0 = TMDAT;							
	i = 9; 
	while (i--);				//延時60us		
	return (b0);							
}									

//函數功能:從總線上讀取1個字節信號
U8 RdByte (void) 			 			
{         								
	U8 i,j,byRdData=0;						
	
	for (i=0;i<8;i++)						
	{								
		j = RdBit ();
		byRdData >>= 1;						
		byRdData = (j << 7) | byRdData;				
	}								
	return (byRdData);							
}									

//函數功能:向總線上寫一位數據	
void WrBit(bit b0)
{
	U8 i;
	
	if (b0)						
	{							
		TMDAT = 0;              		//產生一個下降沿,低電平至少保持1us	//
		i++; i++;               		             		
		TMDAT = 1;				//輸出1				
		i = 9; while (i--); 			//高電平保持60us             		//
	}							
	else							
	{							
		TMDAT = 0;                           	// 寫0 	
		i = 9; while (i--);  			//低電平保持60us           		//
		TMDAT = 1;					
		i++; i++;                            		
	}	
}

//向總線上寫一個字節
void WrByte (U8 dat)					
{                						
	U8 i;						
	bit testb;							
	for (i=0;i<8;i++)						
	{								
		testb = dat & 0x01;					
		dat = dat >> 1;						
		WrBit(testb);						
	}								
}									

//函數功能	:寫1-Wire協議頭操作(復位芯片、選擇芯片、寫命令碼)
//輸入參數	:<pSN>芯片序號
//	  	: <byCommand>命令碼
void SendHeaderData(U8 *pSN, U8 byCommand)
{
	U8 i;
	
	ResetChip();			//復位				
	Delay_ms(1);			//延時				

//***********************
//如果總線上只有一個設備,不需要選擇芯片操作	
#if	(CHIP_NUM_IN_WIRE == 1)
	WrByte(0xcc);			//總線上只有一個設備,跳過芯片匹配步驟
#else	
	WrByte(0x55); 			//發送ROM匹配命令		
	for(i=0;i<8;i++)					
	{							
		WrByte(*pSN++);		//發送64位序列號	
	}
#endif							

	WrByte(byCommand);		//發送讀取中間寄存器命令
}

//函數功能	: 讀溫度芯片中間寄存器(從偏移地址0開始)
//輸入參數	: <pSN>溫度芯片的序號(ROM碼)
//		:  <pRdData> 存放讀取出的數據
//		:  <byLen>需讀取的數據的長度
void RdScratchpad(U8 *pSN, U8 *pRdData, U8 byLen)
{
	U8 i;
	
	//輸入參數檢查
	if(byLen > 9)
	{
		byLen = 9;
	}
	
	SendHeaderData(pSN, 0xbe);
	
	//讀出數據
	for(i=0;i<byLen;i++)
	{
		*pRdData++ = RdByte();
	}
	
	ResetChip();			//復位芯片,結束讀操作
	Delay_ms(1);			//延時	
}


//函數功能	: 寫溫度芯片中間寄存器(從偏移地址2開始)
//輸入參數	: <pSN>溫度芯片的序號(ROM碼)
//		:  <pWrData> 寫到中間寄存器的源數據
//		:  <byLen>寫入數據的長度	
void WrScratchpad(U8 *pSN, U8 *pWrData, U8 byLen) 
{
	U8 i;
	
	//輸入參數檢查
	if(byLen > 2)
	{
		byLen = 2;
	}
	
	SendHeaderData(pSN, 0x4e);		//發送協議頭			
	
	//寫入數據
	for(i=0;i<byLen;i++)
	{
		WrByte(*pWrData++);
	}
	
	ResetChip();				//復位芯片,結束寫操作
	Delay_ms(1);				//延時	
}

//函數功能:啟動溫度轉換過程
//輸入參數:<pSN>芯片序號
void StartConvertTmpt (U8 *pSN)							//
{       
	U8 byBusyFlag=0;
	 
	SendHeaderData(pSN, 0x44); 		//發送協議頭           				
	
	while(1)				//某些情況下,這里可能出現死循環
	{
		byBusyFlag = RdByte();
		if(byBusyFlag == 0xff)
		{
			break;
		}
	}
	
	ResetChip ();				//復位,保持低電平480-960us					//
	Delay_ms(1);
}									

//函數功能	:讀取溫度
//輸入參數	: <pSN>芯片序號
//輸出參數	: 溫度值,放大10倍的整數
S16 RdTemperture (U8 *pSN)								//
{                   							
	U8 byRdData[8];
	U8 byTEMP_READ;
	U8 byCOUNT_PER_C;
	U8 byCOUNT_REMAIN;
	S16 t;							
	float ft;
	
	
	RdScratchpad(pSN, byRdData, 8);		//讀取數據,沒有讀CRC校驗碼

	//0.5攝氏度精度的計算方法
//	t = byRdData[0]+(byRdData[1]<<8);	//1表示0.5攝氏度
//	return t;
	
	t = byRdData[0]+(byRdData[1]<<8);
	byTEMP_READ = t>>1;
	byCOUNT_REMAIN = byRdData[6];
	byCOUNT_PER_C = byRdData[7];
					
	ft = (float)byTEMP_READ - 0.25 + (float)(byCOUNT_PER_C - byCOUNT_REMAIN)/(float)byCOUNT_PER_C;
	t = ft*10;
	
	return t;				//1表示0.1攝氏度							
}									

//函數功能	:讀取芯片序號(只能在總線只有一個器件時調用)
//輸入參數	: <pSN>返回的芯片序號存放地址
void ReadROM(U8 *pSN)									//
{									
	U8 i;
	
	ResetChip ();			//復位					
	Delay_ms (1);			//延時					
	WrByte(0x33);			//發送讀序列號子程序			
	
	for(i=0;i<8;i++)
	{
		*pSN ++ = RdByte();	//讀取第一個序列號,應為10H;		//
	}							
}									

//功能	:寫溫度報警上下限
//輸入參數	: <pSN>溫度芯片序號
//		:  <nHighAlarmLim> 溫度報警上限
//		:  <nLowAlarmLim> 溫度報警下限
U8 WrTmptAlarmLim(U8 *pSN, S16 nHighAlarmLim, S16 nLowAlarmLim)
{
	U8 byWrData[2];
	U8 byRdData[4];
	
	byWrData[0] = nHighAlarmLim;
	byWrData[1] = nLowAlarmLim;
	
	WrScratchpad(pSN, byWrData, 2);		//寫入數據
	
	RdScratchpad(pSN, byRdData, 4);		//讀出數據進行校驗
	if((byRdData[2] != nHighAlarmLim) || (byRdData[3] != nLowAlarmLim))
	{
		return FALSE;
	}
	
	//將中間寄存器數據拷貝到E2RAM(存放報警限數據)
	SendHeaderData(pSN, 0x48);
	Delay_ms (6);				//延時6ms	
	ResetChip();				//復位芯片,結束本次操作
}
	
		
									

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩视频在线永久播放| 人人狠狠综合久久亚洲| 美女视频黄免费的久久| 欧美日本在线视频| 视频一区视频二区中文字幕| 欧美日韩一区三区| 亚洲女女做受ⅹxx高潮| 色婷婷综合激情| 亚洲蜜臀av乱码久久精品| 99久久精品一区二区| 亚洲免费在线观看视频| 欧美亚洲高清一区二区三区不卡| 一区二区三区中文字幕精品精品| 色噜噜狠狠色综合欧洲selulu| 亚洲电影一区二区| 精品国产不卡一区二区三区| 国产91在线观看丝袜| 亚洲精品高清在线观看| 欧美日韩在线观看一区二区| 久久99精品国产.久久久久久| 国产欧美精品国产国产专区| 91免费国产在线观看| 美女视频黄频大全不卡视频在线播放 | 99免费精品视频| 久久疯狂做爰流白浆xx| 国产精品毛片a∨一区二区三区| 色欧美片视频在线观看在线视频| 麻豆精品在线观看| 亚洲精品美腿丝袜| 久久精品视频在线免费观看| 欧美日韩视频第一区| 成人精品亚洲人成在线| 免费看欧美美女黄的网站| 综合久久久久久久| 久久九九久久九九| 91精品国产乱| 欧美中文字幕久久| 色综合天天性综合| 国产成人精品免费视频网站| 久久精工是国产品牌吗| 亚洲一区欧美一区| 亚洲免费在线观看视频| 成人免费一区二区三区视频| 国产欧美日韩另类一区| 精品乱人伦小说| 精品美女在线播放| 国产清纯在线一区二区www| 日韩女优av电影在线观看| 日韩欧美国产成人一区二区| 欧美一区二区三区在线电影| 欧美精品一级二级| 欧美变态tickling挠脚心| 亚洲精品在线免费观看视频| 久久一区二区三区国产精品| 国产视频不卡一区| 一区在线中文字幕| 亚洲一区二区精品3399| 奇米一区二区三区| 成人激情午夜影院| 91一区一区三区| 7777精品久久久大香线蕉 | 粉嫩av一区二区三区粉嫩| 99久久亚洲一区二区三区青草| 一本色道久久综合亚洲aⅴ蜜桃| 欧美图区在线视频| 欧美mv日韩mv| 亚洲永久免费视频| 国产精品乡下勾搭老头1| 日本福利一区二区| 精品免费99久久| 亚洲r级在线视频| 国产成人精品www牛牛影视| 在线一区二区视频| 日本一区二区在线不卡| 男人的j进女人的j一区| 99re热这里只有精品免费视频| 欧美日韩免费一区二区三区 | 欧美亚洲国产怡红院影院| 精品国产1区二区| 亚洲综合免费观看高清在线观看| 国产精品一级二级三级| 欧美日产在线观看| 亚洲精品中文字幕乱码三区| 国产成人在线影院| 日韩一区二区高清| 日韩精品乱码免费| 欧美在线三级电影| 亚洲激情男女视频| 91香蕉视频在线| 国产精品女主播在线观看| 国产综合久久久久久鬼色 | 日韩精品三区四区| 欧美日韩性生活| 亚洲va国产天堂va久久en| 91视频精品在这里| 国产精品高潮久久久久无| 国产高清亚洲一区| 中文字幕欧美日韩一区| 白白色亚洲国产精品| 亚洲国产精品传媒在线观看| 高清视频一区二区| 国产精品日韩成人| 色哟哟一区二区在线观看| 一区二区三区视频在线观看| 欧美日韩极品在线观看一区| 日本不卡123| 国产精品国产三级国产aⅴ原创| kk眼镜猥琐国模调教系列一区二区 | 丰满亚洲少妇av| 一区二区免费在线| 欧美精品777| 成人晚上爱看视频| 亚洲国产日韩a在线播放性色| 欧美喷水一区二区| 国产一区二区免费视频| 亚洲麻豆国产自偷在线| 日韩视频一区在线观看| 国产成人免费视频| 亚洲超碰精品一区二区| 国产精品午夜在线观看| 欧美日本一道本在线视频| 国产一区久久久| 亚洲国产日日夜夜| 中文字幕中文乱码欧美一区二区 | 亚洲色图欧洲色图| 精品日韩av一区二区| 欧美三级电影网| www.色综合.com| 国产乱子轮精品视频| 五月婷婷激情综合| 亚洲毛片av在线| 亚洲你懂的在线视频| 久久综合色婷婷| 日韩一区二区视频| 777午夜精品免费视频| 欧美性做爰猛烈叫床潮| 97精品电影院| 色综合色综合色综合 | 日韩精品电影在线观看| 一区二区三区视频在线看| 国产精品毛片高清在线完整版| 久久免费美女视频| 日本一区二区三区免费乱视频| 欧美大片在线观看一区二区| 欧美一级黄色录像| 日韩一区二区三区四区五区六区| 精品视频1区2区3区| 欧美人狂配大交3d怪物一区| 成人av免费在线观看| 一区二区三区中文字幕精品精品 | 99久久国产免费看| 91精品国产一区二区三区蜜臀| 欧美精品一区二区三区久久久| 欧美激情艳妇裸体舞| 日韩电影在线观看一区| 理论片日本一区| 成人综合婷婷国产精品久久| 色国产综合视频| 欧美一区二区福利在线| 国产午夜亚洲精品理论片色戒| 国产精品卡一卡二| 婷婷开心久久网| 91丨porny丨最新| 欧美一区二区视频免费观看| 中文字幕高清不卡| 丝袜美腿亚洲综合| 99精品视频在线播放观看| 日韩一区二区免费高清| 亚洲精品免费视频| 国产成人午夜高潮毛片| 欧美天堂一区二区三区| 久久免费看少妇高潮| 日韩中文字幕亚洲一区二区va在线| 国产高清不卡一区| 久久综合久久99| 蜜桃av噜噜一区二区三区小说| 97超碰欧美中文字幕| 国产午夜精品久久| 日本午夜精品视频在线观看| 色综合天天综合狠狠| 亚洲精品视频自拍| 91免费视频大全| 亚洲超碰精品一区二区| 欧美日韩免费高清一区色橹橹| 亚洲成人在线网站| 日韩一区二区电影在线| 精品写真视频在线观看| 国产精品萝li| 欧洲国内综合视频| 久久国产精品露脸对白| 久久久天堂av| 色综合av在线| 日本成人超碰在线观看| 欧美精品一区二区三区很污很色的| 国产一区啦啦啦在线观看| 国产欧美日本一区二区三区| 97精品久久久午夜一区二区三区| 日韩在线一二三区| 久久精品视频一区| 精品视频在线免费|