單片機應用編程技巧解析
1.C 語(yǔ)言和匯編語(yǔ)言在開(kāi)發(fā)單片機時(shí)各有哪些優(yōu)缺點(diǎn)?
本文引用地址:http://dyxdggzs.com/article/201808/386830.htm答:匯編語(yǔ)言是一種用文字助記符來(lái)表示機器指令的符號語(yǔ)言,是最接近機器碼 的一種語(yǔ)言。其主要優(yōu)點(diǎn)是占用資源少、程序執行效率高。但是不同的 CPU, 其匯編語(yǔ)言可能有所差異,所以不易移植。
C 語(yǔ)言是一種結構化的高級語(yǔ)言。其優(yōu)點(diǎn)是可讀性好,移植容易,是普遍使 用的一種計算機語(yǔ)言。缺點(diǎn)是占用資源較多,執行效率沒(méi)有匯編高。
對于目前普遍使用的 RISC 架構的 8bit MCU 來(lái)說(shuō),其內部 ROM、RAM、 STACK 等資源都有限,如果使用 C 語(yǔ)言編寫(xiě),一條 C 語(yǔ)言指令編譯后,會(huì )變成 很多條機器碼,很容易出現 ROM 空間不夠、堆棧溢出等問(wèn)題。而且一些單片機 廠(chǎng)家也不一定能提供 C 編譯器。而匯編語(yǔ)言,一條指令就對應一個(gè)機器碼,每 一步執行什幺動(dòng)作都很清楚,并且程序大小和堆棧調用情況都容易控制,調試起 來(lái)也比較方便。所以在單片機開(kāi)發(fā)中,我們還是建議采用匯編語(yǔ)言比較好。
2.C 或匯編語(yǔ)言可以用于單片機,C++能嗎?
答:在單片機開(kāi)發(fā)中,主要是匯編和 C,沒(méi)有用 C++的。
3.搞單片機開(kāi)發(fā),一定要會(huì ) C 嗎?
答:匯編語(yǔ)言是一種用文字助記符來(lái)表示機器指令的符號語(yǔ)言,是最接近機器碼 的一種語(yǔ)言。其主要優(yōu)點(diǎn)是占用資源少、程序執行效率高。但是不同的 CPU, 其匯編語(yǔ)言可能有所差異,所以不易移植。
對于目前普遍使用的 RISC 架構的 8bit MCU 來(lái)說(shuō),其內部 ROM、RAM、 STACK 等資源都有限,如果使用 C 語(yǔ)言編寫(xiě),一條 C 語(yǔ)言指令編譯后,會(huì )變成 很多條機器碼,很容易出現 ROM 空間不夠、堆棧溢出等問(wèn)題。而且一些單片機 廠(chǎng)家也不一定能提供 C 編譯器。而匯編語(yǔ)言,一條指令就對應一個(gè)機器碼,每 一步執行什么動(dòng)作都很清楚,并且程序大小和堆棧調用情況都容易控制,調試起 來(lái)也比較方便。所以在資源較少單片機開(kāi)發(fā)中,我們還是建議采用匯編語(yǔ)言比較 好。而 C 語(yǔ)言是一種編譯型程序設計語(yǔ)言,它兼顧了多種高級語(yǔ)言的特點(diǎn),并 具備匯編語(yǔ)言的功能。C 語(yǔ)言有功能豐富的庫函數、運算速度快、編譯效率高、 有良好的可移植性,而且可以直接實(shí)現對系統硬件的控制。C 語(yǔ)言是一種結構化 程序設計語(yǔ)言,它支持當前程序設計中廣泛采用的由頂向下結構化程序設計技 術(shù)。此外,C 語(yǔ)言程序具有完善的模塊程序結構,從而為軟件開(kāi)發(fā)中采用模塊化 程序設計方法提供了有力的保障。因此,使用 C 語(yǔ)言進(jìn)行程序設計已成為軟件 開(kāi)發(fā)的一個(gè)主流。用 C 語(yǔ)言來(lái)編寫(xiě)目標系統軟件,會(huì )大大縮短開(kāi)發(fā)周期,且明顯地增加軟件的可讀性,便于改進(jìn)和擴充,從而研制出規模更大、性能更完備的 系統。
綜上所述,用 C 語(yǔ)言進(jìn)行單片機程序設計是單片機開(kāi)發(fā)與應用的必然趨勢。 所以作為一個(gè)技術(shù)全面并涉足較大規模的軟件系統開(kāi)發(fā)的單片機開(kāi)發(fā)人員最好 能夠掌握基本的 C 語(yǔ)言編程。
4.當開(kāi)發(fā)一個(gè)較復雜而又開(kāi)發(fā)時(shí)間短的項目時(shí),用 C 還是用匯編開(kāi)發(fā)好?
答:對于復雜而開(kāi)發(fā)時(shí)間緊的項目時(shí),可以采用 C 語(yǔ)言,但前提是要求對該 MCU 系統的 C 語(yǔ)言和 C 編譯器非常熟悉,特別要注意該 C 編譯系統所能支持的數據 類(lèi)型和算法。雖然 C 語(yǔ)言是最普遍的一種高級語(yǔ)言,但不同的 MCU 廠(chǎng)家其 C 語(yǔ)言編譯系統是有所差別的,特別是在一些特殊功能模塊的操作上。如果對這些 特性不了解,那調試起來(lái)就有的煩了,到頭來(lái)可能還不如用匯編來(lái)的快。
5.在教學(xué)中要用到 8088 和 196 芯片單片機教材,請問(wèn)那里可以找到關(guān)于這方面 的書(shū)或資料?
答:有關(guān)這方面的教材,大學(xué)里常用的一本是《IBM-PC 匯編語(yǔ)言程序設計》清 華大學(xué)出版社出版的,在網(wǎng)上以及書(shū)店都是可以找到的,另外網(wǎng)上還可以搜索到 很多其他的教材如:《微機原理及匯編語(yǔ)言教程》(楊延雙 張曉冬 等編著(zhù) )和《16/32 位微機原理、匯編語(yǔ)言及接口技術(shù)》(作者: 鐘曉捷 陳濤 ,機械工業(yè) 出版社 出版)等,可以在較大型的科技書(shū)店里查找或者直接從網(wǎng)上訂購。
6.初學(xué)者到底是應該先學(xué) C 還是匯編?
答:對于單片機的初學(xué)者來(lái)說(shuō),應該從匯編學(xué)起。因為匯編語(yǔ)言是最接近機器碼 的一種語(yǔ)言,可以加深初學(xué)者對單片機各個(gè)功能模塊的了解,從而打好扎實(shí)的基 礎。
7. 汽車(chē)電子用的單片機是 8 位多,還是 32 位?如何看待單片機在汽車(chē)電子 市場(chǎng)中的前景?
答:現今汽車(chē)制造也是一個(gè)進(jìn)步很快的工業(yè),特別是電子應用于汽車(chē)上,令多種 新功能得以實(shí)現。
總的來(lái)說(shuō),汽車(chē)電子應用分三部份。
- 汽車(chē)發(fā)動(dòng)機控制:限速控制,渦輪增壓,燃料噴注控制……
- 汽車(chē)舒適裝置:遙控防盜系統,自動(dòng)空調系統,影音播放系統,衛星導航 系統……。
- 汽車(chē)操控和制動(dòng):剎車(chē)防抱死系統(ABS),循跡系統(TCS),防滑系統(ASR), 電子穩定系統(ESP)……
汽車(chē)上的各系統繁多,且日新月異,故利用何種單片機是依各系統規格,要 求不一,但有一樣可肯定是該單片機要符工業(yè)規格,才能忍受汽車(chē)應用的惡劣環(huán) 境,高溫,電源干擾,可靠度要求。不同檔次的汽車(chē)其功能配置相對亦有差別, 故 8 位單片機在較低階的系統如機械控制,遙控防盜等應該還有空間,但高階的 系統如影音,導航……將來(lái)的無(wú)人駕駛!,就非一般單片機能實(shí)現。
因汽車(chē)工業(yè)現階段由歐美日數個(gè)大集團所把持,相關(guān)的汽車(chē)電子配件各集團 會(huì )挑選單片機大廠(chǎng)合作, 故汽車(chē)內置的電子系統亦由單片機大廠(chǎng)把持,市場(chǎng)只 剩外置系統如遙控防盜,影音導航供小廠(chǎng)開(kāi)發(fā)。
8. 在使用三星的 s3c72n4 時(shí),覺(jué)得它的 time/counter 不夠用?,F在要同時(shí)用 到 3 個(gè) counter,該怎么辦?
答:您是需要三個(gè)外部 counter 還是需要三個(gè)定時(shí)器?如果是三個(gè)定時(shí)器標志的 話(huà),可以取這三個(gè)定時(shí)最基本的時(shí)基作為 timer 的基礎計數,然后以這個(gè)時(shí)基來(lái) 計算這三個(gè)需要的計數標志的 flag,在程序中只需要查詢(xún) flag 是否到,再采取動(dòng) 作。
如果要 3 個(gè)外部脈沖計數的話(huà),這個(gè)有一定的難度,如果外部脈沖不是很頻 繁,可以考慮通過(guò)外部中斷進(jìn)行,但是這個(gè)方法必須是外部脈沖的頻率與 mcu 執行速度有一定的數量級差,否則 mcu 可能無(wú)法處理其它程序,一直在處理外 部中斷。
9. 在芯片集成技術(shù)日益進(jìn)步的今天,單片機的集成技術(shù)發(fā)展也很迅速,在 傳統的 40 引腳的基礎上,飛利浦公司推出 20 引腳的單片機系列,使很多的 引腳可以復用,這種復用技術(shù)的使用在實(shí)際應用中會(huì )不會(huì )影響其功能的執行?
答:現在有很多品牌的單片機都有引腳復用功能,不止飛利浦一家,應該說(shuō)這個(gè) 方式前幾年就已經(jīng)有了。在實(shí)際應用中不會(huì )影響其功能的執行,但是要注意的是, 有的 MCU 如果采用復用引腳的話(huà),該引腳會(huì )有一些應用上的限制,這在相應的 datasheet 里面都會(huì )有描述,所以在系統規劃的時(shí)候都要予以注意。
10. Delta-Sigma 軟件測量方式,是什么概念?
答:Delta-Sigma 原理一般應用在 ADC 應用中。具體來(lái)說(shuō),Delta-Sigma ADC 的 工作原理是由差動(dòng)器、積分器和比較器構成調制器,它們一起構成一個(gè)反饋環(huán)路。 調制器以大大高于模擬輸入信號帶寬的速率運行,以便提供過(guò)采樣。模擬輸入與 反饋信號(誤差信號)進(jìn)行差動(dòng) (delta)比較。該比較產(chǎn)生的差動(dòng)輸出饋送到積 分器(sigma)中。然后將積分器的輸出饋送到比較器中。比較器的輸出同時(shí)將反饋 信號(誤差信號)傳送到差動(dòng)器,而自身被饋送到數字濾波器中。這種反饋環(huán)路 的目的是使反饋信號(誤差信號)趨于零。比較器輸出的結果就是 1/0 流。該流 如果 1 密度較高,則意味著(zhù)模擬輸入電壓較高;反之,0 密度較高,則意味著(zhù)模 擬輸入電壓較低。接著(zhù)將 1/0 流饋送到數字濾波器中,該濾波器通過(guò)過(guò)采樣與抽 樣,將 1/0 流從高速率、低精度位流轉換成低速率、高精度數字輸出。
簡(jiǎn)而言之,Delta 就是差動(dòng),Sigma 就是積分的意思。Delta-Sigma 軟件測試, 我的理解應該是通過(guò)軟件模擬差動(dòng)積分的過(guò)程。具體來(lái)說(shuō),就是偵測外部輸入的 電壓(或者電流)信號變化,然后通過(guò)軟件積分運算,得出外部信號隨時(shí)間變化的基本狀況。
評論