智慧型車培訓階段一第二部分內容摘要

2021-10-12 05:13:22 字數 3475 閱讀 7674

程式經過編譯器編譯後變成二進位制資料,存入rom中,對rom的讀取只能分位元組讀取,相當於劃分乙個個房間,每個位元組的資料都有相應的位址,相當於門牌號。

1、 取指令。根據程式計數器(pc)中的值,從程式儲存器(rom)中讀出每一行指令,送入指令暫存器。

2、 分析指令階段。

3、 執行指令階段。

pc指標,存放當前要執行的**的位址,引導系統從rom讀取指令,具有自動加一的功能,表現為程式的順序執行,每次程式的跳轉,中斷等,都相當於直接給pc暫存器賦值,讓他跳轉到別的語句執行。

以上可以看出,51微控制器是單核單執行緒工作。

1、 cpu在處理某一事件a時,發生了另一事件b請求cpu去處理(中斷發生)

2、 cpu暫時中斷當前的工作,轉去處理b(中斷響應和中斷服務)

3、 cpu處理完事件b後,再回到原來的事件a被中斷的地方繼續處理事件a(中斷返回)。

中斷源:引起cpu產生中斷的根源。

斷點:被中斷打斷的地方;執行完中斷程式返回的地方。

(切記,從**被中斷打斷的,響應結束後就返回**,而不是從頭開始)

優先順序:搶占優先順序,響應優先順序。

中斷請求。

中斷響應。

中斷服務程式。

中斷的意義:

1、 實時性:

以按鍵處理為例:

如果不使用中斷,則需要在主迴圈中反覆掃瞄按鍵電平狀態,不僅占用了主迴圈執行效率,而且按下按鍵的瞬間如果程式沒執行到掃瞄按鍵的語句則不會立刻觸發,存在一定的滯後性。

延伸到工業上的緊急跳閘裝置,如果主迴圈很複雜,可能幾百毫秒才會掃瞄一次跳閘裝置狀態,發生意外時會嚴重影響保護裝置的效能。

2、 分時操作:

雖然我們常用的單品機是單核單執行緒工作,但正因有了中斷系統,諸如按鍵檢測,通訊等待接收,定時器定時處理某函式等功能可以不占用主程式的執行,等待有需求時,中斷到來,再打斷主程式,進而實現一定意義上的多執行緒操作。

為了處理兩個中斷請求同時發生的時候怎麼處理的問題。一種情況是pc指標指向主迴圈時,一種情況是pc指標指向某一中斷函式時。乙個正常的程式應該是pc不是指向主迴圈就是指向中斷函式。

1、主迴圈優先順序最低,所有中斷都可以打斷。

2、優先順序分為搶占式優先順序和響應式優先順序。

當兩個中斷源的搶占式優先順序相同時,這兩個中斷將沒有巢狀關係,當乙個中斷到來後,如果正在處理另乙個中斷,這個後到來的中斷就要等到前乙個中斷處理完之後才能被處理。如果這兩個中斷同時到達,則中斷控制器根據他們的響應優先順序高低來決定先處理哪乙個;如果他們的搶占式優先順序和響應優先順序都相等,則根據他們在中斷表中的排位順序決定先處理哪乙個。

3、 51微控制器不區分搶占式優先順序和響應式優先順序概念,有5個中斷源,每個中斷源有2個優先順序(配置成0或者1),如果中斷源優先順序配置成一樣,則以中斷源預設排序進行優先順序劃分(如下圖)。可以實現二級中斷巢狀(巢狀的意思就是正在執行某個中斷的時候另乙個中斷發出請求了,怎麼處理的問題,下面有例子)

但以後智慧型車上用到的微控制器每個中斷都得配置好搶占式優先順序和響應式優先順序,而且每種優先順序還可以配置成0,1,2,3,4等等,以後再說。

假設上述例子事件a和事件b是中斷請求a和中斷請求b的響應函式。正在執行事件a時,如果中斷b的搶占式優先順序低於中斷a,則執行完事件a之後才會跳轉到事件b執行(如何跳轉涉及程式位址的問題);如果中斷b的搶占式優先順序高於中斷a,則無論事件a執行到**,都會馬上跳轉到事件b執行,執行完事件b之後才會返回到事件a繼續執行。(由於主迴圈優先順序最低,所以事件a和b都執行完才會返回主迴圈)

以外部中斷為例:外部中斷就是gpio口輸入訊號觸發的中斷,可以配置成下降沿產生中斷請求,或者低電平產生中斷請求(看int頭頂有沒有橫槓)。外部中斷有兩個中斷源,分別為int0和int1,對應p3.2和p3.3引腳。

配置暫存器:

1、tcon(1位元組,8位):中斷配置暫存器。

外部中斷相關的暫存器位為:ie1,it1,ie0,it0

0和1代表兩個外部中斷源。

ien:中斷標誌位。系統自動賦值,當相應引腳檢測到有效電平的時候ien=1表示中斷源向系統發出中斷請求(不管中斷開關打沒開啟,不管系統響應不響應,標誌位都會顯示中斷狀態)

itn:中斷觸發型別。賦值1則配置成下降沿觸發,0則低電平觸發。

2、ie(1位元組,8位):中斷開關配置器

賦值1則開啟對應外部中斷源,0則關閉。

外部中斷相關的暫存器位:ea,ex0,ex1

0和1代表兩個外部中斷源。

ea:中斷總開關。賦值1時使能中斷功能,賦值0時所有中斷都遮蔽。

exn:對應外部中斷源的開關。賦值1時允許響應外部中斷請求,0時遮蔽外部中斷請求。

3、ip(1位元組,8位):優先順序配置器

外部中斷相關的暫存器位:px0,px1

pxn:賦值1則將相應外部中斷配置為高優先順序,0則低優先順序。

當兩中斷源配置為相同的優先順序時,則預設按中斷源固定排序進行優先順序劃分(上圖從上到下優先順序從高到低)

不同中斷源有固定的響應程式入口,類似於對應的門牌號,中斷請求發生,如果系統響應的話,程式位址指標會指向相應的位址,表現為執行相應的服務函式。

注意事項:

1、 cpu同時接收到幾個中斷時,首先響應優先級別最高的中斷請求。

2、 正在進行的中斷過程不能被新的同級或低優先順序的中斷請求所打斷。

3、 正在進行的低優先順序中斷服務,能被高優先順序中斷請求所打斷。

4、 中斷響應條件:1)中斷源發出請求2)此中斷源中斷允許位為1。3)cpu開啟了總中斷開關。

// a code block

#include

sbit led=p0

^0;sbit led2=p0

^1;void

main()

void

ex0_isr

(void

) interrupt 0

void

ex1_isr

(void

) interrupt 2

從**效果可以看出低電平觸發和下降沿觸發的區別。低電平模式可能會觸發很多次,下降沿模式比較穩定。

CS 系統框架二 部分內容更新

這邊文章裡面只是將大致的輪廓組織了一下,現在慢慢來將其完善,本次更新了2點內容,第一就是將許可權細化到每乙個按鈕,因為當時設計的時候每乙個窗體上面的選單都是統一的,所以比較容易控制,開發文件 以下 比較重要,記錄了一些全域性的東西 1 public sealed class allensinglet...

C 階段總結第二部分

目錄 第二部分 c 核心程式設計一 1,記憶體分割槽模型 1.1程式執行前 1.2程式執行後 1.2new操作符 2.引用 2.1引用的基本使用 2.2注意事項 2.3引用做函式引數 2.4引用做函式返回值 2.5引用的本質 2.6常量引用 3,函式的提高 3.1函式的預設引數 3.2函式佔位引數 ...

個人文件第一版第二部分

3.24 10 40 emmmm 拖延來拖延去總算開始了 先看看群裡的問題 突然發現了單元測試 我真不知道是啥來的 趕快看看吧 哦我的天哪 我感覺單元測試是乙個很強大的東西 我一定得用起來 但是我現在還沒有自己用過 我得趕快開始寫了 10 52 看到了鄧老師的作業部落格 終於知道乙個單詞是啥玩意了,...