1樓:廣東人讀書好
、中斷的概念
cpu在處理某一事件a時,發生了另一事件b請求cpu迅速去處理(中斷髮生);
cpu暫時中斷當前的工作,轉去處理事件b(中斷響應和中斷服務);
待cpu將事件b處理完畢後,再回到原來事件a被中斷的地方繼續處理事件a(中斷返回),這一過程稱為中斷
二、中斷源
在51微控制器中有5箇中斷源
中斷號 優先順序 中斷源 中斷入口地址
0 1(最高) 外部中斷0 0003h
1 2 定時器0 000bh
2 3 外部中斷1 0013h
3 4 定時器1 0018h
4 5 串列埠總段 0023h
三、中斷暫存器
微控制器有10個暫存器主要與中斷程式的書寫控制有關
1.中斷允許控制暫存器ie
2.定時器控制暫存器tcon
3.串列埠控制暫存器scon
4.中斷優先控制暫存器ip
5.定時器工作方式控制暫存器tmod
6.定時器初值賦予暫存器(th0/th1,tl0/tl1)
暫存器詳細說明
四、暫存器功能與賦值說明
注:在用到中斷時,必須要開總中斷ea,即ea=1。 //開總中斷
1.中斷允許控制暫存器ie
ex0(ex1):外部中斷允許控制位
ex0=1 外部中斷0開關閉合 //開外部0中斷
ex0=0 外部中斷0開關斷開
et0(et1):定時中斷允許控制位
et0=1 定時器中斷0開關閉合 //開內部中斷0
et0=0 定時器中斷0開關斷開
es: 串列埠中斷允許控制位
es=1 串列埠中斷開關閉合 //開串列埠中斷
es=0 串列埠中斷開關斷開
2.定時器控制暫存器 tcon //控制外部中斷和定時器中斷
外部中斷:
ie0(ie1):外部中斷請求標誌位
當int0(int1)引腳出現有效的請求訊號,此位由微控制器自動置1,cpu開始響應,處理終端,而當入
中斷程式後由微控制器自動置0.
//外部中斷,即外部中斷相應的引腳接入低電平或下降沿訊號時,中斷開始響應。
it0(it1):外部中斷觸發方式控制位 //選擇有效訊號
it0(it1)=1:脈衝觸發方式,下降沿有效。
it0(it1)=0:電平觸發方式,低電平有效。
內部中斷:
tf0(tf1):內部定時器/計數器溢位中斷標誌位
當定時器、計數器計數溢位的時候,此位由微控制器自動置1,cup開始響應,處理中斷,而當進入中
斷程式後由微控制器自動置0.
//內部中斷實際上就是利用內部的計數器,只不過提供計數的脈衝來自微控制器自身。
tro(tr1):定時器/計數器啟動位 //啟動定時器
tro(tr1)=1; 啟動定時器/計數器0
tr0(tr1)=0; 關閉定時器/計數器0
3.串列埠控制暫存器scon
ti:序列口傳送中斷標誌位
當微控制器串列埠傳送完一幀資料後,此位由微控制器自動置1,而當進入中斷服務程式後是不會自動清0的,
必須由使用者在中斷服務中用軟體清0.
ri:序列口接收中斷標誌位
當微控制器串列埠接收完一幀資料後,此位由微控制器自動置1,而當進入中斷服務程式後是不會自動清0的,
必須由使用者在中斷服務軟體中用軟體清0.
(ip以後補上,tmod,tl0/th0 在定時器/計數器中講)
五、中斷結構圖:
六、定時器/計數器
1.計數的定義:
計數是指對外部事件進行計數,外部事件的發生以輸入脈衝的形式表示,因此計數功能的實質就是對外來
的脈衝進行計數,在微控制器中對應引腳t0和t1,兩個脈衝輸入端。
外部輸入的脈衝在負跳變時有效(即外部脈衝由1變化到0),計數器加1.
2.定時器:
定時器是通過計數器的計數來實現的,不過此時的計數脈衝來自微控制器的內部,因此定時器的實質是對內
部脈衝的計數,在微控制器中,每個機器週期產生一次計數脈衝,計數器加1.
3.工作方式控制暫存器tmod:
tmod的低半位元組(d0,d1,d2,d3)用來控制定時器/計數器0
tmod的高半位元組(d4,d5,d6,d7)用來控制定時器/計數器1
對tmod中的內容說明:
gate——門控制。
gate=1時,由外部中斷引腳int0、int1來啟動定時器t0、t1。
當int0引腳為高電平時tr0置位,啟動定時器t0;
當int1引腳為高電平時tr1置位,啟動定時器t1。
gate=0時,僅由tr0,tr1置位分別啟動定時器t0、t1。
c/t——功能選擇位
c/t=0時為定時功能,c/t=1時為計數功能。
m0、m1——方式選擇功能
由於有2位,因此有4種工作方式
4.根據微控制器晶振,所選tmod的的工作方式,所要定的時間,來確定tho和tlo所要賦予的初值
(以12m晶振,工作方式1,16位計數器為例,設所定時間為xus(16為計數器最大數65536,即65536us,若所
定時間大於65535,則要用if語句控制,現假設x<65535))
1.時鐘週期的時間t=1/12m=1/12 us
2.機器週期的時間t=12*1/12=1 us
3.因為每經過一個機器週期計數器+1,所以,計數器+1,經過的時間為 1 us。
若所定時間為x,則要求經過xus,中斷響應,又因為16為計數器要全部置1(即達到65535)+1後,中斷才會
響應,所以,初值=(65536-x)
4.將初值轉化為16進位制碼,分別付給tho和tlo
eg:所定時間5ms
初值=(65536-5000)=60536=ec78
th0=0xec; tl0=0x78;
(當工作方式不同時,th0/tl0的賦值也不同,個人覺得有了16位計數器了,其餘的沒什麼用,不介紹了)
5.寫程式時另一種tho/tlo賦值方法
th0=(65536-20000)/256;
tl0=(65536-20000)%6;
這樣設定,每經過20ms,發生一次中斷,中斷時間一般以秒為單位,所以經過n次中斷即可。
2樓:
可以的。就要看你的物體掃描到是不是有低電平輸出。
ex0=1;
it0=1;
ea=1;
3樓:匿名使用者
可以,把定時器處置均賦予ff,並啟動定時器,外部計數。
51微控制器外部中斷到底什麼意思?
4樓:匿名使用者
51微控制器有兩個外部中斷申請輸入端:int0 和 int1
這兩個引腳對應兩個中斷入口,只有這兩個引腳上的電平變化,才會觸發相應的中斷
51微控制器中什麼是中斷?其作用是什麼?怎麼用?用自己的理解回答把
5樓:匿名使用者
中斷來就是中途打斷。
通俗自解釋:
你在看影碟,bai有人敲門du(中斷源),中斷了zhi你看影碟,**暫停。處dao理敲門的事宜(中斷目的),處理完成(中斷結束),繼續看影碟(繼續執行原來的任務)。
再比如:你在看電視,水開了(中斷源),把水灌到暖瓶裡(中斷目的),再燒上一壺(繼續開中斷),回去看電視。水又開了。。。。。。。。(迴圈中斷)
以51微控制器16位定時計數器0(t0)來講,
計數是t1是一個能盛65536(十六位時)滴水的水盆,在水龍頭下水一滴滴地滴入盆中。如果盆是空的那水在滴完65536滴水時盆子的水就滿了再滴一滴的時候就溢位了。這時就會產生中斷。
如果盆裡面已經裝入65500滴水(即初裝值),那麼只需要36滴水後就溢位了。
每一個水滴計數時即一個脈衝(高低電平變換一次)。
定時時每一個水滴即一個機器週期,水滴的速度即機器週期,等於12個振盪週期(晶振的振盪頻率除以12),直接影響到溢位的時間。
6樓:匿名使用者
中斷就是好像你
來現自在正在洗衣服,這時候**來了,你就要放下手頭的衣服去接**,接完**繼續回來洗衣服。中斷也是如此,眾所周知,程式是在main函式中從上至下逐條執行的,當中斷髮生時,程式要響應中斷,從而進入到中斷服務子程式中(也就是去接**),處理完中斷服務子程式後,返回到剛才中斷的地方繼續執行(也就是繼續洗衣服)。
至於中斷的作用,基本上就是當cpu在執行現行程式中啟動外部裝置之後,反覆查詢外部裝置的狀態。當外部裝置的資料準備就緒後,主動向cpu發出中斷請求。cpu接到外部裝置的中斷請求後,如果沒有更加緊急的任務,就暫停正在執行的現行程式,轉去執行中斷服務程式,為外部裝置服務。
當中斷服務完成之後,再返回到原先的現行程式中繼續執行。中斷以上的特性在嵌入式系統中有很大的作用。可以響應處理例外事件,多道程式並行執行。
怎麼用我就不說明了,基本上每本教材上說的很詳細了。
7樓:匿名使用者
就像你在吃飯的時候,突然想拉肚子,你必須停止吃飯,跑去廁所解決問題,然後回到座位上繼續吃飯。
夠形象嘛!
怎麼用?每個中斷都有對應跳轉地址,對應一箇中斷服務程式,你必須實現那段程式。
具體,還是看看書。
微控制器時間中斷,51微控制器中的定時器中斷是怎麼用的 ?
while 1 在那 會使微控制器停在那 相當於是等待當中斷來臨時 執行中斷 下面那個就是當到50ms的時候 執行計時器1中斷如果沒有那個while 1 則主程式就執行完了 中斷會沒有作用中斷和程式主程式各個執行是同步的 因為你把那個et0開了 則就有時鐘中斷了 當到了50ms 中斷就會自動作用 停...
51微控制器怎麼通過串列埠傳送小數,51微控制器怎麼通過串列埠傳送小數?
方法多的去了,把數字37.5轉換為字串 37.5 傳送可以,用壓縮bcd碼0x37 0x05傳送也可以,多得是。不一定一定要浮點處理。你自己定一個協議,1次發6個資料,選擇其中的2個作為資料,其他作為驗證碼,另一個微控制器接收到就演算法處理 微控制器不支援浮點運算的,你可以申請兩個變數,把整數和小數...
關於微控制器IO口重新定義的問題,關於51微控制器io口sbit賦值的問題
sbit 是屬於定義 宣告bai,du並不會產生實際的 用zhi在if後面是不 dao行的。一個可版行的方法是使用條件權 預處理,像這樣 if flag sbit hx711 dout p1 4 else sbit hx711 dout p1 2 endif 注意,這裡的flag,只能是預定義的符號...