新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 使用單片機會出現哪些問題呢

        使用單片機會出現哪些問題呢

        作者: 時間:2016-11-26 來源:網絡 收藏
        剛接觸到單片機的人往往會有個疑惑:既然人們已經有能力制造功能強大的計算機,為何還要生產些功能不強的計算機?其實,功能強弱并不是決定是否生產的決定因素,市場需要才是關鍵。比如,用來控制一臺電箱的計算機顯然沒必要使用“奔騰”芯片的強大運算能力,只要進行非常簡單的計算,作個比較,看一看溫度是否在所控制區間之內,然后再做出相應的控制就行了。

        單片機在人們的生活中、工農業生產設備中處處有應用,例如各定時裝置、自動控制裝置等。愛好者學習單片機應該注意觀察事物,找到自己周圍能夠使用單片機的場合,從而將學到的知識應用到實際中去。例如,使用單片機技術改造傳統的機電設備、在特定的場合使用單片機替代PLC等就有著廣闊的應用前景;又如,使用單片機控制電扇、抽油煙機、空調等,從而制作出具有更強功能、能夠通用的控制器,也是可以嘗試的。

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

        2.單片機是如何工作的?

        單片機的工作過程就是一個不斷“取指令-分析指令-執行指令”的過程。單片機的程序以一條一條指令的形式存放在程序存儲器中,單片機開始工作后,就從程序存儲器的特定位置開始取指令,然后由單片機內部的控制器對指令進行分析,根據指令要求,進行“取數、送數、算術運算、邏輯運算、跳轉”等基本操作中的一種或幾種,這些操作都在一個規定的周期中完成,執行完了以后,到下一個存儲器單元中取指令,重復剛才的操作(當然,這些要執行的操作具體內容可能跟上一次不一樣了),如此不斷重復,直到斷電為止。這里所說的“存儲器特定位置”、“規定的周期”等與單片機的型號有關,下面以51系列單片機為例來說明。

        在51系列單片機中有一個名為PC的寄存器(就是用來存數的一個容器),在單片機復位后,這個寄存器中的內容被置為0000H,單片機內部的控制器總是根據PC寄存器中的值去相應的程序存儲器單元取指令,因此,開機后,將從0000H單元取第一條指令,分析執行,同時,PC值將作相應的調整,指向將要執行的下一條指令的位置,下一條指令的位置在哪里呢?對于51單片機來說,一條指令可能占用一個字節、二個字節或三個字節,如果第一條指令是單字節指令,取完第一條指令以后,PC的值就會變為0001H,因此,第一條指令執行完畢以后,將從0001H單元中取出第二條指令來執行,以此類推。如果程序是順序執行的,PC的值將始終不斷增加,如果程序中有跳轉指令,該指令將影響PC中的值,使PC中的值指向將要執行的下一條指令所在地址單元。這種跳轉既可能是正向的,例如由0000H跳轉到0030H,也可能是反向的,即往回跳轉,如由200H跳轉到100H。正是由于指令可以影響到PC中的值,才使得程序可以實現“分支”、“循環”等各種功能。那么,執行一條指令的時間又是多少呢?對于51單片機來說,指令執行時間有三種可能,單周期、雙周期和四周期,不管一條指令需要做多少工作,都必然在規定的時間內完成。

        3.單片機程序的作用是什么?如何編寫?如何寫入單片機?

        單片機程序的用途是讓單片機“聽話”,按人們所預定的設計完成一系列動作,最終實現一個特定的功能。

        例如使用單片機控制流水燈,接通電源后,第一次燈亮,然后延時一段時間,第二次燈亮,然后延時一段時間,第三次燈亮……,延時一段時間后又回到第一次燈亮,如此循環不已。這里就有這樣的一些問題:第一次亮幾盞燈、延時多少時間、一個循環中設置多少次不同的燈亮的情況……,這些決定了流水燈的花樣,流動的速度,而這些,單片機顯然沒有自我判斷能力,必須依靠人們給它“布置”任務,而它則是按人們的設計依次執行。

        要讓單片機“聽話”,就要用單片機能夠聽懂的語言發布命令,單片機能夠聽懂的語言稱之為“指令”。任何一種型號單片機能夠接受的指令都是有限的,51單片機的指令條數為111條,而PIC單片機的指令僅有35條。每一條指令完成一個最基本的動作,人們為了要完成一個特定的功能,就要將這些指令排列組合,成為一個指令序列,這就是程序。

        指令的表示形式有兩種:機器語言和匯編語言。以51為例,如果要讓P1.0引腳變為低電平,用機器語言來表示就是 C2H 90H,將這兩個數放進單片機的程序存儲器中,單片機執行后,就可以讓P1.0引腳變為低電平了;而要讓P1.0引腳變為高電平,用機器語言來表示就是D2H,90H。至于為什么是這兩個數字,大家沒必要追究,這是設計這塊芯片的設計工程師規定的,我們不能更改,只能學習。

        C2H,90H就是一條指令,顯然這樣的指令形式是很難記憶的,編程也非常困難,于是人們使用了“助記符”來代替這些數字。例如C2H,90H的助記符是CLR P1.0,而D2H,90H的助記符是SETB P1.0,由于助記符采用了英語字母的縮寫,有一定含義,因此比數字形式的指令易記、易用。使用助記符形式的指令來編寫程序就稱之為“匯編語言源程序”。但是匯編語言源程序是沒有辦法直接送到單片機內部去的,使用助記符形式的指令編寫的程序最終還是要變成為諸如:C2H,90H,D2H,90H,這種形式的指令才能被送入單片機的程序存儲器。將助記符形式的指令變為數字形式的指令的過程稱之“匯編”。匯編有兩種方法,一種是“手工匯編”,即人們通過查表的形式找到所寫匯編指令的數字形式然后寫下來;另一種是“機器匯編”,即編寫好匯編語言源程序以后,使用一個計算機軟件對這些源程序進行處理,從而得到數字形式的指令序列,這個指令序列通常被稱為“機器碼”,即可以直接被機器所執行的代碼。

        機器匯編后得到的數字形式的指令序列以一個文件的形式保存在磁盤上,這個文件的擴展名一般是HEX,即人們常說的HEX文件。得到了HEX文件后,就可以將其寫入程序存儲器中了。要將程序寫入芯片,通常需要一個稱之為“編程器”的專用設備,在計算機上運行與之配套的編程軟件,然后在這個軟件中打開HEX文件,即可將其寫入芯片中。隨著技術的發展,編程方式越來越多,但總的概念是這樣的,具體的細節,將在另一個問題“單片機編程器是什么”中回答。

        4. 8位、16位、32位單片機中的“XX位”指什么?

        8位、16位、32位是指單片機的“字長”,也就是一次運算中參與運算的數據長度,這個位是指二進制位。以8位為例,8位二進制的表達范圍是0000,0000~1111,1111即十進制的0~255,即每次參與運算的數據最大不能超過255。而16位機的字長是16位,其數據表達范圍是0~65535,即每次參與運算的數據最大不能超過65535;32位單片機的字長是32位,其數據表達范圍是0~4294967295,即每次參與運算的數據最大不能超過4294967295。

        8位、16位、32位與單片機的性能密切相關,通常32位機的性能要高于16位機,而16位機的性能又要高于8位機。為什么會這樣呢?這要從2個方面來分析。第一,位數不同,運算效率不同。對于8位機而言,由于在一次運算中的每一個數都不能超過8位,因此即便如100+200=300這樣的運算,它也不能一次完成,因為300已超過了8位所能表達的最大范圍(255),因此,要對這樣的一個式子進行運算,就要編寫一段程序,將運算分步完成,最后合成起來得到一個正確的結果。而如果采用16位單片機來運算的話,那么一次運算就夠了,顯然分步完成所需要的時間要遠遠大于單步完成所需要的時間。同樣道理,當某個運算的結果或者中間值大于65535時,16位機也不能一次運算,要分步實現它,而32位機則可以一次運算完成。第二,商業因素。通常運算能力越高,表示這個單片機性能越強,當然,價格高一些人們也可以接受,有了價格空間,生產商通常都會在這些芯片中提供更多的其他的功能,使得芯片的整體性能得到更大的提升。

        典型的單片機中,80C51系列,PIC系列,AVR系列都是8位單片機;80C196、MSP430系列是16位機;而目前非常熱門的ARM系列則是32位機。

        5. 單片機編程器、仿真器、燒寫器、下載線各是什么?有什么用處?

        單片機編程器是用來將程序代碼寫入存儲器芯片或者單片機內部的工具,如圖5-1所示是一個典型的編程的外形。圖中黑色的集成電路插座,通過拔動手柄可以將置于其中的集成電路芯片鎖緊或松開。編程時鎖緊以保證接觸良好,編程完畢松開,可以更換下一片芯片。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 尼勒克县| 双鸭山市| 攀枝花市| 郸城县| 永平县| 灵宝市| 梅州市| 高阳县| 宣恩县| 涞水县| 南昌县| 延长县| 行唐县| 沁水县| 泗阳县| 颍上县| 铜鼓县| 仙游县| 涡阳县| 乐东| 绥德县| 达孜县| 洛宁县| 闸北区| 社会| 古蔺县| 长汀县| 本溪| 遂溪县| 乾安县| 长宁县| 集贤县| 揭阳市| 峨边| 固始县| 康定县| 松潘县| 蒲城县| 托克逊县| 新邵县| 色达县|