久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2111|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

可否幫小白解讀一下這個(gè)單片機(jī)程序,明天上課要講解

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:426409 發(fā)表于 2018-11-14 20:42 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include <reg52.h>
#include <intrins.h>

sbit IO_18B20 = P3^2;  //DS18B20通信引腳

/* 軟件延時(shí)函數(shù),延時(shí)時(shí)間(t*10)us */
void DelayX10us(unsigned char t)
{
    do {
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
    } while (--t);
}
/* 復(fù)位總線(xiàn),獲取存在脈沖,以啟動(dòng)一次讀寫(xiě)操作 */
bit Get18B20Ack()
{
    bit ack;

    EA = 0;   //禁止總中斷
    IO_18B20 = 0;     //產(chǎn)生500us復(fù)位脈沖
    DelayX10us(50);
    IO_18B20 = 1;
    DelayX10us(6);    //延時(shí)60us
    ack = IO_18B20;   //讀取存在脈沖
    while(!IO_18B20); //等待存在脈沖結(jié)束
    EA = 1;   //重新使能總中斷

    return ack;
}
/* 向DS18B20寫(xiě)入一個(gè)字節(jié),dat-待寫(xiě)入字節(jié) */
void Write18B20(unsigned char dat)
{
    unsigned char mask;

    EA = 0;   //禁止總中斷
    for (mask=0x01; mask!=0; mask<<=1)  //低位在先,依次移出8個(gè)bit
    {
        IO_18B20 = 0;         //產(chǎn)生2us低電平脈沖
        _nop_();
        _nop_();
        if ((mask&dat) == 0)  //輸出該bit值
            IO_18B20 = 0;
        else
            IO_18B20 = 1;
        DelayX10us(6);        //延時(shí)60us
        IO_18B20 = 1;         //拉高通信引腳
    }
    EA = 1;   //重新使能總中斷
}
/* 從DS18B20讀取一個(gè)字節(jié),返回值-讀到的字節(jié) */
unsigned char Read18B20()
{
    unsigned char dat;
    unsigned char mask;

    EA = 0;   //禁止總中斷
    for (mask=0x01; mask!=0; mask<<=1)  //低位在先,依次采集8個(gè)bit
    {
        IO_18B20 = 0;         //產(chǎn)生2us低電平脈沖
        _nop_();
        _nop_();
        IO_18B20 = 1;         //結(jié)束低電平脈沖,等待18B20輸出數(shù)據(jù)
        _nop_();              //延時(shí)2us
        _nop_();
        if (!IO_18B20)        //讀取通信引腳上的值
            dat &= ~mask;
        else
            dat |= mask;
        DelayX10us(6);        //再延時(shí)60us
    }
    EA = 1;   //重新使能總中斷

    return dat;
}
/* 啟動(dòng)一次18B20溫度轉(zhuǎn)換,返回值-表示是否啟動(dòng)成功 */
bit Start18B20()
{
    bit ack;

    ack = Get18B20Ack();   //執(zhí)行總線(xiàn)復(fù)位,并獲取18B20應(yīng)答
    if (ack == 0)          //如18B20正確應(yīng)答,則啟動(dòng)一次轉(zhuǎn)換
    {
        Write18B20(0xCC);  //跳過(guò)ROM操作
        Write18B20(0x44);  //啟動(dòng)一次溫度轉(zhuǎn)換
    }
    return ~ack;   //ack==0表示操作成功,所以返回值對(duì)其取反
}
/* 讀取DS18B20轉(zhuǎn)換的溫度值,返回值-表示是否讀取成功 */
bit Get18B20Temp(int *temp)
{
    bit ack;
    unsigned char LSB, MSB; //16bit溫度值的低字節(jié)和高字節(jié)

    ack = Get18B20Ack();    //執(zhí)行總線(xiàn)復(fù)位,并獲取18B20應(yīng)答
    if (ack == 0)           //如18B20正確應(yīng)答,則讀取溫度值
    {
        Write18B20(0xCC);   //跳過(guò)ROM操作
        Write18B20(0xBE);   //發(fā)送讀命令
        LSB = Read18B20();  //讀溫度值的低字節(jié)
        MSB = Read18B20();  //讀溫度值的高字節(jié)
        *temp = ((int)MSB << 8) + LSB;  //合成為16bit整型數(shù)
    }
    return ~ack;  //ack==0表示操作應(yīng)答,所以返回值為其取反值
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:111634 發(fā)表于 2018-11-15 08:24 | 只看該作者
一看do那么多nop,就知道這是一段很差的程序。
回復(fù)

使用道具 舉報(bào)

板凳
ID:94031 發(fā)表于 2018-11-15 10:36 | 只看該作者
就幾個(gè)子程序,連mian函數(shù)都沒(méi)有,不知道要解讀什么。
回復(fù)

使用道具 舉報(bào)

地板
ID:425222 發(fā)表于 2018-11-15 11:13 | 只看該作者
這就18B20的初始配置,上網(wǎng)搜一下18B20的數(shù)據(jù)手冊(cè)不就能看的懂了么?
回復(fù)

使用道具 舉報(bào)

5#
ID:427162 發(fā)表于 2018-11-15 16:38 | 只看該作者
ack = Get18B20Ack();   //執(zhí)行總線(xiàn)復(fù)位,并獲取18B20應(yīng)答     if (ack == 0)          //如18B20正確應(yīng)答,則啟動(dòng)一次轉(zhuǎn)換     {         Write18B20(0xCC);  //跳過(guò)ROM操作         Write18B20(0x44);  //啟動(dòng)一次溫度轉(zhuǎn)換
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 动漫www.被爆羞羞av44 | 亚洲三区视频 | 午夜男人的天堂 | 精品久久久久久久久久久久久久 | 久久精品久久久 | 国产十日韩十欧美 | 亚洲精品成人 | 91亚洲精品在线 | 99精品国产一区二区青青牛奶 | 久久99蜜桃综合影院免费观看 | 福利视频网站 | 亚洲国产成人久久久 | a爱视频 | 美女天天干| 在线视频h| 极品的亚洲 | 一区二区三区在线播放视频 | 午夜视频在线免费观看 | 成人在线免费观看 | 91传媒在线观看 | 国产资源一区二区三区 | 亚洲精品福利在线 | 国产欧美一区二区三区在线看 | 韩日免费视频 | 中文字幕精品一区 | 久久国产高清视频 | 美女天天操 | 日韩aⅴ在线观看 | av福利网站| 精品国产91| 国产精品无码久久久久 | 中文字幕一区在线观看视频 | 超碰激情 | 九九热精品在线视频 | 国产精品毛片久久久久久 | 亚洲色图婷婷 | 国产不卡一区 | 欧美精品一区三区 | av在线天堂| 成人国产免费视频 | 亚洲免费在线播放 |