亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
單片機+DS18B20的初始化的問題?
[打印本頁]
作者:
SXP210624
時間:
2020-2-28 16:24
標題:
單片機+DS18B20的初始化的問題?
關于DS18B20的初始化,這么寫就能初始化成功(其他函數的時序都沒毛病,芯片:STC89C52)!
bit Initialization(void) //函數初始
{
uint test1=0;
DQ = 0;
test1=103;while(test1>0)test1--;
DQ = 1;
for(test1=0;test1<4;test1++); //等待15-60us
for(test1=0;test1<12;test1++); //信號拉低60-240us
if(DQ) return 1; //DS18B20準備好
else return 0; //DS18B20沒有準備好
}
但是我為了節省空間,把“uint test1=0;”改成“uchar test1=0;”的話,初始化就失敗了。
我想知道為什么uchar test1=0;就不行。
作者:
SXP210624
時間:
2020-2-28 16:38
補充一下:上邊的初始化程序是用11.0592MHz晶振
作者:
hahayachan
時間:
2020-2-28 17:16
uint 是16位元
uchar 是8位元
所以程式執行時間不同, uchar 執行時間會短一些, 應該要將delay count 加長
建議程式更改如下,
bit Initialization(void) //函數初始
{
uint test1=0;
DQ = 0;
test1=103;while(test1>0)test1--;
DQ = 1;
for(test1=0;test1<12;test1++); //等待15-60us
for(test1=0;test1<36;test1++); //信號拉低60-240us
if(DQ) return 1; //DS18B20準備好
else return 0; //DS18B20沒有準備好
}
作者:
wulin
時間:
2020-2-28 17:38
CPU處理不同數據類型的數據所耗時間不同,樓主在這里把uint test1=0;改成uchar test1=0;,那么for循環延時時間只有原來時間的1/4,時序就錯亂套了。
作者:
hantu
時間:
2020-2-29 00:48
用循環來延時,循環變量是8位還是16位的數據變量,所耗的時間是不一樣的!
作者:
SXP210624
時間:
2020-2-29 16:03
好的,謝謝明白了
作者:
sunyuanxin
時間:
2020-2-29 17:26
一個整型數據,一個是字符型數據,字符型的A是數字是65,兩者的處理時間不一樣
作者:
ccczzz
時間:
2020-2-29 18:02
uchar是無符號字符整數,8比特,最大到十位數字的255;uint是無符號整數,16比特,最大到65535。
一般數字比較小的就用uchar,節省空間。
作者:
lyl44
時間:
2020-2-29 18:08
加長延時就好了
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1