欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
1T單片機的DS18B20源程序(c語言和匯編語言的都有)
[打印本頁]
作者:
blacksr
時間:
2018-5-10 02:51
標(biāo)題:
1T單片機的DS18B20源程序(c語言和匯編語言的都有)
1T單片機驅(qū)動ds18b20和傳統(tǒng)的12t在延時方面有些區(qū)別
1T單片機源程序如下:
/**************************************
溫度傳感器DS18B20測試程序
主芯片 : STC12C5A60S2 (1T)
工作頻率: 12.000MHz
**************************************/
#include "REG51.H"
#include "INTRINS.H"
typedef unsigned char BYTE;
sbit DQ = P3^3; //DS18B20的數(shù)據(jù)口位P3.3
BYTE TPH; //存放溫度值的高字節(jié)
BYTE TPL; //存放溫度值的低字節(jié)
void DelayXus(BYTE n);
void DS18B20_Reset();
void DS18B20_WriteByte(BYTE dat);
BYTE DS18B20_ReadByte();
void main()
{
DS18B20_Reset(); //設(shè)備復(fù)位
DS18B20_WriteByte(0xCC); //跳過ROM命令
DS18B20_WriteByte(0x44); //開始轉(zhuǎn)換命令
while (!DQ); //等待轉(zhuǎn)換完成
DS18B20_Reset(); //設(shè)備復(fù)位
DS18B20_WriteByte(0xCC); //跳過ROM命令
DS18B20_WriteByte(0xBE); //讀暫存存儲器命令
TPL = DS18B20_ReadByte(); //讀溫度低字節(jié)
TPH = DS18B20_ReadByte(); //讀溫度高字節(jié)
while (1);
}
/**************************************
延時X微秒(STC12C5A60S2@12M)
不同的工作環(huán)境,需要調(diào)整此函數(shù)
此延時函數(shù)是使用1T的指令周期進(jìn)行計算,與傳統(tǒng)的12T的MCU不同
**************************************/
void DelayXus(BYTE n)
{
while (n--)
{
_nop_();
_nop_();
}
}
/**************************************
復(fù)位DS18B20,并檢測設(shè)備是否存在
**************************************/
void DS18B20_Reset()
{
CY = 1;
while (CY)
{
DQ = 0; //送出低電平復(fù)位信號
DelayXus(240); //延時至少480us
DelayXus(240);
DQ = 1; //釋放數(shù)據(jù)線
DelayXus(60); //等待60us
CY = DQ; //檢測存在脈沖
DelayXus(240); //等待設(shè)備釋放數(shù)據(jù)線
DelayXus(180);
}
}
/**************************************
從DS18B20讀1字節(jié)數(shù)據(jù)
**************************************/
BYTE DS18B20_ReadByte()
{
BYTE i;
BYTE dat = 0;
for (i=0; i<8; i++) //8位計數(shù)器
{
dat >>= 1;
DQ = 0; //開始時間片
DelayXus(1); //延時等待
DQ = 1; //準(zhǔn)備接收
DelayXus(1); //接收延時
if (DQ) dat |= 0x80; //讀取數(shù)據(jù)
DelayXus(60); //等待時間片結(jié)束
}
return dat;
}
/**************************************
向DS18B20寫1字節(jié)數(shù)據(jù)
**************************************/
void DS18B20_WriteByte(BYTE dat)
{
char i;
for (i=0; i<8; i++) //8位計數(shù)器
{
DQ = 0; //開始時間片
DelayXus(1); //延時等待
dat >>= 1; //送出數(shù)據(jù)
DQ = CY;
DelayXus(60); //等待時間片結(jié)束
DQ = 1; //恢復(fù)數(shù)據(jù)線
DelayXus(1); //恢復(fù)延時
}
}
復(fù)制代碼
所有資料51hei提供下載:
http://www.raoushi.com/bbs/dpj-116703-1.html
作者:
xiaoyuxinke
時間:
2022-3-31 08:04
說好的C與匯編的都有呢,匯編在哪我沒看到....
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1