新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)編程技巧整理

        51單片機(jī)編程技巧整理

        作者: 時(shí)間:2013-02-05 來源:網(wǎng)絡(luò) 收藏

        1.定義的不要太多。低128位為用戶定義的存放區(qū)域(默認(rèn)時(shí)),也可以把放在高128位,但容易出錯(cuò),盡量少放,最好不放。通過*.M51可以查看內(nèi)存變量的存放,最好不要超過110個(gè)字節(jié),否則程序無法運(yùn)行或出錯(cuò)。

        2.如一個(gè)變量多處使用可定義為全局變量。例如循環(huán)變量i、j,盡量減少參數(shù)傳遞。

        3.靜態(tài)變量最好放在程序存儲(chǔ)區(qū),用code定義。

        4.變量應(yīng)定義為無符號數(shù),像標(biāo)志位等僅占一位的變量應(yīng)定義為bit。

        5.子程序在main()主程序之后的應(yīng)事先聲明,放在前面的不用聲明。

        6.變量、子程序定義但沒使用,系統(tǒng)給出警告。

        7.雖然局部變量和全局變量不同名,但運(yùn)行時(shí)可能被全局變量改變。

        8.程序在編譯后,有可能產(chǎn)生非常大的文件。比如原來5k,編譯后變成10k,這是C匯編時(shí)程序空間分配太隨意造成的。可首先屏蔽一部分程序編譯,然后再去屏蔽再編譯,可恢復(fù),或一部分一部分復(fù)制到另一個(gè)文件中編譯。

        9.如產(chǎn)生脈沖信號用到定時(shí)器,要去掉脈沖信號時(shí),應(yīng)先關(guān)定時(shí)器,再按要求把電平置為高電平或低電平。

        10.可使用軟件實(shí)現(xiàn)“看門狗”功能。比如:一個(gè)程序運(yùn)行一個(gè)循環(huán)需要50ms,則定時(shí)器可定位100ms,當(dāng)超過100ms時(shí),程序?qū)?fù)位,在程序循環(huán)最下面都重裝定時(shí)器或重置定時(shí)器參數(shù)。

        11.為了提高所求值的精度,可多次測量,然后排序,去掉最大值和最小值,求平均值,或直接求平均值。

        12.可使用一個(gè)定時(shí)器進(jìn)行多個(gè)定時(shí)。一般來說,兩個(gè)定時(shí)器對大一點(diǎn)的程序就不夠用了,假如幾個(gè)定時(shí)時(shí)間分別為10ms、200us、50ms,則定時(shí)值可定位200us,另設(shè)兩個(gè)變量即可。在需要多個(gè)定時(shí)時(shí),找到他們的最小公約數(shù)定時(shí)即可。

        13.我們往單片機(jī)中寫程序時(shí),寫的是*.hex,不要被它的大小所迷惑,對于8k的單片機(jī),小于20k的程序都可寫進(jìn)去。



        關(guān)鍵詞: 51單片機(jī) 編程技巧 變量

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 杨浦区| 同德县| 长子县| 疏勒县| 临城县| 无棣县| 濮阳市| 宜兰县| 望奎县| 濉溪县| 婺源县| 聊城市| 蕲春县| 镇江市| 惠安县| 阜新市| 囊谦县| 保山市| 迁西县| 承德县| 洪江市| 盖州市| 谷城县| 榆树市| 金堂县| 柳河县| 泰和县| 合水县| 淮安市| 揭东县| 陕西省| 泗阳县| 竹溪县| 天峨县| 理塘县| 凌云县| 汕头市| 万载县| 镶黄旗| 尼勒克县| 怀仁县|