1. 程式人生 > >把學微控制器過程中遇到的問題與大家分享

把學微控制器過程中遇到的問題與大家分享

一.微控制器有4位、8位、16位、32位以及64位現在,請問的是在8位,16位,32位等等是什麼意思?

答:

CPU內部匯流排的位數就是微控制器的位數。這裡的位也就是指微控制器中CPU處理的資料的位數(一次處理資訊的長度)。比如:51單機  屬於8位機,就是CPU處理的資料是8位的。位數的高低體現了CPU處理能力的強弱。微控制器匯流排位數越高,CPU一次能處理的資料量也就越大、處理速度也就越快。同樣的主頻下(即主頻率),8位機只能處理8位資訊長度,而16位機則可處理16為資訊長度,處理能力當然更強速度更快了。


二.CPU經常掛在嘴邊,但是cpu到底是什麼?有什麼部件組成?

答:

CPU是微控制器的核心部件,由運算器、控制器和布林處理器等組成。其功能是產生控制訊號,把資料從儲存器或輸入口傳送CPU或反向傳送,還可以對輸入資料進行算術、邏輯運算以及位操作處理。其中,運算器由算術邏輯單元ALU

Arithmetic Logic Unit)、累加器ACC(Accumalator)、暫存暫存器、程式狀態字儲存器PSW(Program Status Word)、布林處理器和BCD碼運算調整電路等電路構成。控制器包括定時控制邏輯(時鐘電路、復位電路)、指令暫存器、指令譯碼器、程式計數器PC、堆疊指標SP、資料指標暫存器DPTR以及資訊傳送控制部件等。

三.微控制器的指令把我搞的稀裡糊塗,能不能用一個例子告訴我微控制器執行指令的過程?

答:

指令都可分為三個階段進行。即取指令-----分析指令-----執行指令。

取指令的任務是:根據程式計數器PC中的值從程式儲存器讀出現行指令,送到指令暫存器。

分析指令階段的任務是:將指令暫存器中的指令操作碼取出後進行譯碼,分析其指令性質。如指令要求操

作數,則尋找運算元地址。

計算機執行程式的過程實際上就是逐條指令地重複上述操作過程,直至遇到停機指令可迴圈等待指令。

一般計算機進行工作時,首先要通過外部裝置把程式和資料通過輸入介面電路和資料匯流排送入到儲存器,

然後逐條取出執行。但微控制器中的程式一般事先我們都已通過寫入器固化在片內或片外程式儲存器中。因

而一開機即可執行指令。

下面我們將舉個例項來說明指令的執行過程:

開機時,程式計算器PC變為0000H。然後微控制器在時序電路作用下自動進入執行程式過程。執行過程實際

上就是取出指令(取出儲存器中事先存放的指令階段)和執行指令(分析和執行指令)的迴圈過程。

例如執行指令:MOV A,#0E0H,其機器碼為“74H E0H”,該指令的功能是把運算元E0H送入累加器,

0000H單元中已存放74H,0001H單元中已存放E0H。當微控制器開始執行時,首先是進入取指階段,其次序是



1 程式計數器的內容(這時是0000H)送到地址暫存器;

2 程式計數器的內容自動加1(變為0001H);

3 地址暫存器的內容(0000H)通過內部地址匯流排送到儲存器,以儲存器中地址譯碼電跟,使地址為0000H

的單元被選中;

4 CPU使讀控制線有效;

5 在讀命令控制下被選中儲存器單元的內容(此時應為74H)送到內部資料匯流排上,因為是取指階段,所

以該內容通過資料匯流排被送到指令暫存器。至此,取指階段完成,進入譯碼分析和執行指令階段。

    由於本次進入指令暫存器中的內容是74H(操作碼),以譯碼器譯碼後微控制器就會知道該指令是要將一

個數送到A累加器,而該數是在這個程式碼的下一個儲存單元。所以,執行該指令還必須把資料(E0H)從存

儲器中取出送到CPU,即還要在儲存器中取第二個位元組。其過程與取指階段很相似,只是此時PC已為0001H

。指令譯碼器結合時序部件,產生74H操作碼的微操作系列,使數字E0H從0001H單元取出。因為指令是要

求把取得的數送到A累加器,所以取出的數字經內部資料匯流排進入A累加器,而不是進入指令暫存器。至此

,一條指令的執行完畢。微控制器中PC="0002H",PC在CPU每次向儲存器取指或取數時自動加1,微控制器又進

入下一取指階段。這一過程一直重複下去,直至收到暫停指令或迴圈等待指令暫停。CPU就是這樣一條一

條地執行指令,完成所有規定的功能。

希望對你有啟發。

四.什麼是偽指令?

答:偽指令不是真正的指令,無對應的機器碼,在彙編時不產生目標程式(機器碼),它只是用來對彙編過程進行某種控制。標準的MCS—5l彙編程式(如Intel的ASM51)定義的偽指令常用的有以下幾條:(1)  ORG
    彙編起始命令    格式:      ORG     16位地址
      其功能是規定該偽指令後面程式的彙編地址,即彙編後生成目標程式存放的起始地址,
    例如:             ORG  2000H   
          START:  MOV  A,#64H
    既規定了標號START的地址是2000H,又規定了彙編後的第一條指令碼從2000H開始存放。
    ORG可以多次出現在程式的任何地方,當它出現時,下一條指令的地址就由此重新定位。

(2)  END  ——彙編結束命令   
    END命令通知彙編程式結束彙編。在END之後所有的組合語言指令均不予以處理。 
(3)  EQU  賦值命令   
   格式:    字元名稱    EQU    項(數或彙編符號)    EQU命令是把“項”賦給“字元名稱”,注意這裡的字元名稱不等於標號(其後沒有冒號),其中的項,可以是數也可以是彙編符號。
    用EQU賦過值的符號名可以用作資料地址、程式碼地址、位地址或是一個立即數。因此,它可以是8位的、也可以是16位的。如:
   AA    EQU  R1    ;AA就代表了工作暫存器Rl
  MOV  A,  AA  ;
(4)  DATA  資料地址賦值命令
     格式:    字元名稱  DATA  表示式
(5)  DB    定義位元組命令   
     格式:    DB〔項或項表]
(6)  DW  定義字命令 
  格式:    DW  16位資料項或項表
(7)  DS  定義儲存空間命令   
  格式:  DS表示式
(8)  BIT  位地址符號命令   
  格式:  字元名  BIT  位地址

五.什麼是定址?又什麼是定址方式?
答:定址就是尋找指令中運算元或運算元所在地址。
定址方式就是如何找到存放運算元的地址
   也就是把運算元提取出來的方法,要十分熟悉,牢固掌握。 

六.通過TCON可以選擇中斷觸發方式,那麼低電平觸發和跳變觸發有什麼不同呢?

解釋一:電平觸發即51微控制器每執行完一個指令都將INT0/INT1的訊號讀入IE0/IE1。因此IE0/IE1的中斷請求訊號隨著INT0/INT1變化。如果送入INT0/INT1的中斷請求訊號時,51微控制器未能及時檢查到,而INT0/INT1的訊號也隨著變化,IE0/IE1的訊號也發生變化,這樣就會漏掉INT0/INT1的中斷要求。

解釋二:下降沿觸發只要檢測到送至INT0/INT1上的訊號由高電平變為低電平時,中斷請求標誌位IE0/IE1就被設定為1,並且一直維持著1,直到此中斷請求被接收為止,且必須用軟體來清除IE0/IE1。

所以一般設定為跳變觸發,除非有特殊需要。