最近看了一下80C51單片機的中斷部分的實驗,做一些筆記,方便以后學(xué)習(xí)查找。
首先說一下什么是中斷吧,中斷是指CPU在執(zhí)行當前程序的過程中,由于某種隨機出現(xiàn)的外設(shè)(外部設(shè)備)請求或CPU內(nèi)部的異常事件,使CPU暫停正在執(zhí)行的程序而轉(zhuǎn)去執(zhí)行相應(yīng)的服務(wù)處理程序;當服務(wù)處理程序運行完畢之后,CPU再返回到暫停處繼續(xù)執(zhí)行原來的程序。
那什么是中斷嵌套呢?簡單點說就是低優(yōu)先級的中斷可以被高優(yōu)先級的中斷源所中斷,等高優(yōu)先級中斷服務(wù)程序結(jié)束后,再返回去執(zhí)行被中斷的的低優(yōu)先級的中斷服務(wù)程序。
舉個簡單的栗子吧(之前寫過但不知道怎么刪了,,又讓我重新編輯):比如我們就是一個CPU,我們當前在洗衣服(當前程序),突然電話鈴聲響了(中斷來了),它的優(yōu)先級肯定高于洗衣服嘞,此時我們會停止洗衣服而轉(zhuǎn)去接電話,等到電話打完,我們繼續(xù)回去洗衣服(也就是所謂的“”等高優(yōu)先級中斷服務(wù)程序結(jié)束后,再返回去執(zhí)行被中斷的的低優(yōu)先級的中斷服務(wù)程序“”)。
好了,接下來我們來說說怎么去設(shè)置一個中斷:
TCON(定時器/計數(shù)器控制寄存器)高4位是設(shè)置定時計數(shù)器,低4位是用來設(shè)置外部中斷
這里寫圖片描述
* IT0和IT1是設(shè)置外部中斷的觸發(fā)方式
當其為0時,為低電平觸發(fā)方式。
當其為1時,為負跳變觸發(fā)方式。
* IE0和IE1是外部中斷標志位。
* 其他事定時/計數(shù)器的控制。
* TF0和TF1是定時器的中斷標志。
* TR0和TR1是打開相應(yīng)的定時器。
中斷允許寄存器IE
這里寫圖片描述
* EA總中斷允許。
0時:CPU屏蔽所有的中斷請求。
1時:CPU開放所有的中斷。
* ES串行口中斷允許位。
0時:禁止串行中斷。
1時:允許串行中斷。
* ET1和ET0:分別是定時計數(shù)器1和定時計數(shù)器0中斷允許位。
0時:禁止相應(yīng)的定時計數(shù)器中斷。
1時:允許相應(yīng)的定時計數(shù)器中斷。
* EX1和EX0:分別是外部中斷1和外部中斷0的中斷允許位
0時:禁止相應(yīng)的外部中斷。
1時:允許相應(yīng)的外部中斷。
中斷優(yōu)先級寄存器IP
這里寫圖片描述
* PS:串行口中斷優(yōu)先級
0時:串行口中斷優(yōu)先級定義為高優(yōu)先級
1時:串行口中斷優(yōu)先級定義為低優(yōu)先級
* PT1和PT0:分別是定時計數(shù)器1和定時計數(shù)器0的中斷優(yōu)先級
0時:相應(yīng)的定時計數(shù)器中斷為高優(yōu)先級
1時:相應(yīng)的定時計數(shù)器中斷為低優(yōu)先級
* PX1和PX0:分別是外部中斷1和外部中斷0的中斷優(yōu)先級
0時:相應(yīng)的外部中斷為高優(yōu)先級
1時:相應(yīng)的外部中斷為低優(yōu)先級
**一般默認低優(yōu)先級,不是特別需求不用改**********
中斷地址
中斷函數(shù)的寫法
void 函數(shù)名()interrupt 中斷編號
{
;
}
接下來我們來說一下定時器:
定時/計數(shù)器實質(zhì)上是一個加1計數(shù)器。它隨著計數(shù)器的而輸入脈沖進行自加1,也就是每來一個脈沖,計數(shù)器 就自動加1,當加到計數(shù)器為全1 的時候,再輸入一個脈沖使計數(shù)器歸零,且計數(shù)器的溢出使相應(yīng)的中斷標志位置為1,向CPU發(fā)出中斷請求(定時/計數(shù)器中斷允許時)。如果定時/計數(shù)器工作于定時模式,則表示定時時間已到,如果工作于計數(shù)模式,則表示計數(shù)值已滿。
**可見,由溢出時計時器的值減去計數(shù)初值才是加1計數(shù)器的計值。*
TMOD(工作方式寄存器)
* GATE:門控制
0時:僅有運行控制位TRx來控制定時/計數(shù)器的開啟。
1時:由TRx和外部中斷脈沖計數(shù)(用于計算外部中斷負跳變的次數(shù))
* C/T:計數(shù)器模式和定時器模式選擇
0時:選擇定時器模式。
1時:選擇計數(shù)器模式。
M1和M0:選擇定時/計數(shù)器的工作方式
計數(shù)器初值的計算:
機器周期:CPU完成一個基本操作所需要的時間
機器周期=1/單片機的時鐘頻率。
51單片機內(nèi)部時鐘頻率是外部時鐘的12分頻。也就是說當外部晶振的頻率輸入到單片機里面的時候要進行12分頻。比如你用的是12MHZ的晶振,那么單片機內(nèi)部的時鐘頻率就是 12/12MHZ,當你使用12MHZ的外部晶振的時候,機器周期=1/1M=1us.
而我們定時1ms的初值是多少呢,1ms/1us=1000.
也就是要計數(shù)1000個數(shù),初值=6553-1000+1(因為實際上計數(shù)器計數(shù)到66636才溢出)=64536=FC18H
定時/計數(shù)器的工作方式:
定時器操作步驟:
選擇工作方式(設(shè)置M1,M0)
選擇控制方式(設(shè)置GATE)
選擇定時器還是計數(shù)器模式(設(shè)置C/T)
給定時/計數(shù)器賦初值(設(shè)置THx和TLx)
開啟定時器中斷(設(shè)置ET0或ET1)
開啟總中斷(設(shè)置EA)
打開計數(shù)器(設(shè)置TR1或TR0)
void TimeConfiguration()
{
TMOD = 0x01; //定時器0選擇工作方式1
TH0 = 0x3C; //設(shè)置初始值
TL0 = 0xB0;
EA = 1; //打開總中斷
ET0 = 1; //打開定時器0中斷
TR0 = 1; //啟動定時器
}
中斷操作步驟:
* 打開總中斷(設(shè)置EA)
* 設(shè)置外部中斷的觸發(fā)方式(設(shè)置IT0或IT1)
* 設(shè)置外部中斷的中斷允許位(設(shè)置EX0或EX1)
* 設(shè)置外部中斷的優(yōu)先級(一般默認低優(yōu)先級,不是特別需求不用改,設(shè)置PX0或PX1)
void InConfiguration()
{
EA=1; //打開總中斷
IT1=1; //設(shè)置外部中斷觸發(fā)方式為負跳變觸發(fā)方式
EX1=1; //允許外部中斷1發(fā)生中斷
PX1=0; //相應(yīng)的外部中斷為高優(yōu)先級
}
好了,這部分內(nèi)容就先小結(jié)到這
上一篇:關(guān)于C51的IE(中斷使能寄存器)的初級認識
下一篇:8051中斷控制寄存器
推薦閱讀
史海拾趣
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 意法半導(dǎo)體推出先進的 1600 V IGBT,面向高性價比節(jié)能家電市場
- EDPF-NT+分散控制系統(tǒng)網(wǎng)絡(luò)防護解決方案
- 基于PLC控制的易驅(qū)變頻器在布袋除塵器上的應(yīng)用
- 如何利用伺服自動化實現(xiàn)成本降低和產(chǎn)能最大化?
- 壓力傳感器有哪些抗干擾措施?
- 破局!補盲dToF固態(tài)激光雷達輪番“出手”,禾賽FT120也要靠邊
- 利用正壓送風(fēng)壓力傳感器自動控制火災(zāi)風(fēng)口壓力
- 多個傳感器間相互位置關(guān)系校準方法
- 樓宇自控BA系統(tǒng)傳感器有哪些?
- 常見壓力傳感器工業(yè)原理匯總
- EEworld獨家原創(chuàng)視頻:大話TI CC2650,邀你來看!
- 觀看TI IOT解決方案研討會 答題即可贏取更多精美好禮!
- 【EEWORLD第三十九屆】2012年06月社區(qū)明星人物揭曉!
- 永不過時的物聯(lián)網(wǎng)解決方案 Intel帶你6的飛起來!
- ADI有獎下載活動之25:ADI汽車傳感器和傳感器接口解決方案
- Vicor 更好的供電方式提升無人機飛行時間飛行半徑及有效載荷
- 考眼力:高速數(shù)字設(shè)計的秘籍 藏在哪里? 走近Keysight PATHWAVE,提升工作效率
- TI 最新電容式觸控套件,免費嘗鮮中
- TI有獎直播|借助Sitara™ AM263x MCU 創(chuàng)造電氣化的未來