微控制器初學者幾個不易掌握的概念

2022-12-20 05:03:04 字數 2467 閱讀 8523

一、匯流排:我們知道,乙個電路總是由元器件通過電線連線而成的,在模擬電路中,連連線並不成為乙個問題,因為各器件間一般是序列關係,各器件之間的連線並不很多,但計算機電路卻不一樣,它是以微處理器為核心,各器件都要與微處理器相連,各器件之間的工作必須相互協調?所以就需要的連線就很多了,如果仍如同模擬電路一樣,在各微處理器和各器件間單獨連線線,則線的數量將多得驚人,所以在微處理機中引入了匯流排的概念,各個器件共同享用連線,所有器件的8根資料線全部接到8根公用的線上,即相當於各個器件併聯起來,但僅這樣還不行,如果有兩個器件同時送出資料,乙個為0,乙個為1,那麼,接收方接收到的究竟是什麼呢?

這種情況是是不允許的,所以要通過控制線進行控制,使器件分時工作,任何時候只能有乙個器件傳送資料(可以有多個器件同時接收)。器件的資料線也就被稱為資料匯流排,器件所有的控制線被稱控制匯流排。

在微控制器內部或者外部儲存器及其它器件中有儲存單元,這些儲存單元要被分配位址,才能用,分配位址當然也是以電訊號的形式給出的,由於儲存單元比較多,所以,用於位址分的線也較多,這些線被稱為位址匯流排。

二、資料、位址、指令:之所以將這三者放在一起,是因為這三者的本質都是一樣的─數字,或者說都是串『0』和『1』組成的序列。換言之,位址、指令也都是資料。

指令由微控制器晶元的設計者規定的一種數字,它與我們常用的指令助記符有著嚴格的一一對應關,不可以由微控制器的開發者更改。位址:是尋找微控制器內部、外部的儲存單元、輸入輸出口的依據,內單元的位址值已由晶元設計者規定好,不可更改,外部的單元可以由微控制器開發者自行決定,但有一些位址單元是一定要有的(詳見程式的執行過程)。

資料:這是由微處理機處理的物件,在各種不同的應用電路中各不相同,一般而言,被處理的資料可能有這麼幾種情況:

1位址(如mov dptr,#1000h),即位址1000h送入dptr。2方式字或控制字(如mov tmod,#3),3即是控制字。3常數(如mov th0,#10h)10h即定時常數。

4實際輸出值(如p1口接彩燈,要燈全亮,則執行指令:mov p1,#0ffh,要燈全暗,則執行指令:mov p1,#00h)這裡0ffh和00h都是實際輸出值。

又如用於led的字形碼,也是實際輸出的值。理解了位址、指令的本質,就不難理解程式執行過程中為什麼會跑飛,會把資料當成指令來執行了。

三、p0口、p2口和p3的第二功能用法初學時往往對p0口、p2口和p3口的第二功能用法迷惑不解,認為第二功能和原功能之間要有個切換的過程,或者說要有一條指令,事實上,各埠的第二功能完全是自動切換,不需要指令來轉換。如p3.6、p3.

7分別是wr、rd訊號,當微片理機外接ram或有外部i/o口時,它們會作第二功能,不能作為通用i/o口使用,只要一微處理機一執行到movx指令,就會有相應的訊號從p3.6或p3.7送出,不需要事先用

指令說明。事實上『不能作為通用i/o口使用』也並不是『不能,而是(使用者)『不會』將其作為通用i/o口使用。你完全可以在指令中安排一條setbp3.

7的指令,並且當微控制器執行到這條指令時,也會使p3.7變為高電平,但使用者不會這麼做,因為這通常這會導致系統崩潰(即宕機)。

四、程式的執行過程微控制器在通電復位後8051內的程式計數器(pc)中的值為『0000』,所以程式總是從『0000』單元開始執行,也就是說:在系統的rom中一定要存在『0000』個單元,並且在『0000』單元中存放的一定是一條指令。

五、堆疊堆疊是乙個區域,是用來存放資料的,這個區域本身沒有任何特殊之處,就是內部ram的一部份,特殊的是它存放和取用資料的方式,即所謂的『先進後出,後進先出』,並且堆疊有特的資料傳輸指令,即『push』和『pop』,有乙個特殊的專為其服務的單元,即堆疊指標sp。每當執一次push指令時,sp就(在原來值的基礎上)自動加1,每當執行一次pop指令,sp就(在原來值基礎上)自動減1。由於sp中的值可以用指令加以改變,所以只要在程式開始階段更改了sp值,就可以把堆疊設定在規定的記憶體單元中,如在程式開始時用一條movsp,#5fh指令,就時把堆疊設定在從記憶體單元60h開始的單元中。

一般程式的開頭總有這麼一條設定堆疊指標的指令,因為開機時,sp的初始值為07h,這樣就使堆疊從08h單元開始往後從8h到1fh這個區域正是8031的第

二、三、四工作暫存器區,經常要被使用,這會造成資料的混亂。不同作者編寫程式時,初始化堆疊指令也不完全相同,這是作者的習慣問題。當設定好堆疊區域,並不意味著該區域成為一種專用記憶體,它還是可以像普通記憶體區域一樣使用,只是一般情下程式設計者不會把它當成通記憶體用了。

六、微控制器的開發過程這裡所說的開發過程並不是一般書中所說的從任務分析開始,我們假設已設計並製作**件下面就是編寫軟體的工作。在編寫軟體之前,首先要確定一些常數和位址,事實上這些常數和位址在設計階段已被直接或間接地確定下來了。如當某器件的連線設計好後,其位址也就確定了,當器件的功能被確定下來後,其控制字也就被確定了。

然後用文字編緝器(如edit、cced等)寫軟體,編寫好後,用編譯器對源程式檔案編譯,查錯,直到沒有語法錯誤,除了極簡單的程式外,一般應用**機對軟體進行除錯,直到程式執行正確為止。執行正確後,就可以寫(將程式固化在eeprom中)。在源程式被編譯後,生成了擴充套件名為hex的目標檔案,一般程式設計器能夠識別種格式的檔案,只要將此檔案調入即可寫片。

nop ljmp loop;迴圈end;

致微控制器初學者的話

我經常想,什麼樣的51學習板才真正適合初學的朋友,是否如 大賣家所言,得有繼電器,得有ad da,得有彩屏 得有點陣 電機,外面最好還配個箱子。因為靠近大學城,我身邊有很多如現在正在看此文章的您一樣的朋友,你們需要的到底是一塊什麼樣的板子?我有個朋友是教師,每年都能接幾個專案做做,全是c 51為主控...

和初學者談談如何學好微控制器程式設計技術

當今時代,是乙個新技術層出不窮的時代。在電子領域,尤其是自動化智慧型控制領域,傳統的分立元件或數字邏輯電路構成的控制系統正以前所未見的速度被微控制器智慧型控制系統所取代。大部分的高等工科學校都已開設了微控制器課程。微控制器具有體積小 功能強 成本低 應用面廣等優點,可以說,智慧型控制與自動控制的核心...

從微控制器初學者到工程師的經驗之談

下面讓我們揭開模組化神秘面紗,一窺其真面目。c語言原始檔 c 提到c語言原始檔,大家都不會陌生。因為我們平常寫的程式 幾乎都在這個xx.c檔案裡面。編譯器也是以此檔案來進行編譯並生成相應的目標檔案。作為模組化程式設計的組成基礎,我們所要實現的所有功能的源 均在這個檔案裡。理想的模組化應該可以看成是乙...