關(guān) 閉

        新聞中心

        EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > DSl8820 ROM編碼的一種搜索算法

        DSl8820 ROM編碼的一種搜索算法

        作者: 時(shí)間:2009-09-21 來(lái)源:網(wǎng)絡(luò) 收藏

        首先作如下幾個(gè)定義:對(duì)“兩讀”數(shù)據(jù)為00的位,之后“一寫”操作要寫的數(shù)據(jù)定義為“00寫位”;所有00寫位的集合定義為“00寫位組”。那么所要解決的問(wèn)題就是:確立一個(gè)00寫位組,確保命令能夠到一個(gè)唯一的,并在完成一次搜索后對(duì)00寫位組做出更新,以確保下次的搜索命令能夠搜索到一個(gè)唯一的并且不會(huì)搜索到已經(jīng)搜索到的ROM編碼,直到完成總線上所有器件的ROM編碼搜索。
        在給出搜索規(guī)則前再作如下幾個(gè)定義:00寫位組中最高ROM編碼位對(duì)應(yīng)的00寫位定義為“最高00寫位”;00寫位組中鄰近最高00寫位的00寫位定義位“次高00寫位”;如果更新后的00寫位組不足以搜索到一個(gè)唯一的ROM編碼,則添加新的00寫位,這個(gè)新的00寫位定義為“新00寫位”。
        DS18820 ROM編碼的搜索規(guī)則:
        ①第一次搜索確立一個(gè)00寫位組,其中所有00寫位全部為0。
        ②每次搜索后更新00寫位組并從最高00寫位開(kāi)始更新。
        ③00寫位組更新規(guī)則:如果最高00寫位為0,則改最高00寫位為1,更新完成;如果最高00寫位為1,則棄去最高00寫位并把次高00寫位作為新的最高00寫位。
        ④如果出現(xiàn)新00寫位,新00寫位一律為0并作為新的最高00寫位。
        ⑤如果0寫位組全為1,則搜索所有器件的ROM編碼,搜索結(jié)束。

        本文引用地址:http://www.104case.com/article/163566.htm

        3 算法的C51實(shí)現(xiàn)
        對(duì)一條“單線總線”上多片DS18820的ROM編碼搜索與識(shí)別,具體由C51編寫的函數(shù)uchar SearchRomID(uchar RomID[n][8])來(lái)實(shí)現(xiàn)。函數(shù)的返回值是總線上查找到的器件個(gè)數(shù),總線上所有器件的ROM編碼存入二維數(shù)組RomID[n][8]。其中n為總線上允許掛器件的最大值,這里取16。
        首先對(duì)程序中的幾個(gè)重要變量做一些說(shuō)明:
        _00wbit:一維數(shù)組,用來(lái)存儲(chǔ)00寫位組全部?jī)?nèi)容。它的長(zhǎng)度由總線上允許掛接器件的最大值決定。每寫一個(gè)00寫位都可以“排除”至少一個(gè)總線上的器件,當(dāng)總線上器件數(shù)為n時(shí),_00wbit數(shù)組的長(zhǎng)度應(yīng)為n-1。當(dāng)然這是最壞情況下的取值,很多情況下_00wbit數(shù)組的長(zhǎng)度小于這個(gè)值,這時(shí)不用的 _00wbit數(shù)組位用2來(lái)填充。
        Rom:一維數(shù)組,臨時(shí)存儲(chǔ)64位ROM編碼。
        b:搜索結(jié)束標(biāo)志位。
        R1、R2:“兩讀”數(shù)據(jù)位。
        編者注:程序略。

        結(jié) 語(yǔ)
        本文提出了一種對(duì)掛接在同一條“單線總線”上的多片DS18B20 ROM編碼的搜索算法,并給出了具體的C51實(shí)現(xiàn)方法,經(jīng)驗(yàn)證完全可行。由于該算法可自動(dòng)識(shí)別總線上的器件個(gè)數(shù),因此實(shí)際運(yùn)用中,在總線上添加和刪除器件都十分靈活,這為多點(diǎn)測(cè)溫帶來(lái)了很大的方便。該算法也適用于其他“單線總線”器件。


        上一頁(yè) 1 2 3 下一頁(yè)

        關(guān)鍵詞: 算法 搜索 編碼 ROM DSl8820

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 宝鸡市| 舞阳县| 苏州市| 大同市| 中江县| 安龙县| 湛江市| 保靖县| 青州市| 鄂托克旗| 桂林市| 凭祥市| 德阳市| 亳州市| 深水埗区| 增城市| 科技| 兴海县| 牡丹江市| 乌鲁木齐市| 临高县| 宣化县| 岳阳县| 隆尧县| 上饶县| 府谷县| 平阳县| 木里| 阿巴嘎旗| 湖南省| 左贡县| 永年县| 陵川县| 穆棱市| 贵溪市| 樟树市| 山东省| 南投县| 广河县| 孟州市| 资溪县|