亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛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