mcs-51 微控制器的中斷系統
mcs-51中斷系統:5個中斷源(兩個外部中斷, 兩個定時器, 乙個串列埠),2個優先順序
中斷:當cpu正在處理某件事情時,微控制器外部或內部發生的某一緊急事件請求cpu立即去處理,於是,cpu暫時中止當前的工作,轉去處理這個緊急事件,待處理完畢後,再回到原來被中止的地方,繼續原來的工作。
中斷過程中斷發生:cpu在處理某一事件a時,發生了另一事件b請求cpu迅速去處理;
中斷響應和中斷服務:cpu暫時中斷當前的工作,轉去處理事件b(b的優先順序要高於a);
中斷返回:待cpu將事件b處理完畢後,再回到原來事件a被中斷的地方繼續處理事件a ;
中斷源(中斷請求源):能夠向cpu發出中斷申請的部件。中斷編號
中斷名中斷源
引腳入口位址
0外部中斷請求0(int0 )
ie0p3.2
0003h
1定時器t0溢位中斷請求
tf0p3.4
000bh
2外部中斷請求1(int0 )
ie1p3.3
0013h
3定時器t1溢位中斷請求
tf1p3.5
001bh
4序列口中斷請求
ti或ri
傳送p3.0 接收p3.1
0023h
外部中斷0和1:低電平或者脈衝下降沿時產生中斷請求;
序列口:傳送或者接受1位元組資料時產生中斷請求;
4個特殊功能暫存器來實施中斷控制:
ea 中斷允許總控制位。0禁止,1允許。
es 序列中斷允許控制位。0禁止,1允許。
et1 定時計數器1中斷允許控制位。0禁止,1允許。
ex1 外部中斷1允許控制位。0禁止,1允許。
et0 定時計數器0中斷允許控制位。0禁止,1允許。
ex0 外部中斷0允許控制位。0禁止,1允許。
px0 外部中斷0的優先順序控制位。1為高,0為低
pt0 定時中斷0的優先順序控制位。1為高,0為低
px1 外部中斷1的優先順序控制位。1為高,0為低
pt1 定時中斷0的優先順序控制位。1為高,0為低
ps 序列中斷的優先順序控制位。1為高,0為低
ti:串列埠傳送中斷標誌,響應中斷時用軟體將ti標誌清零
ri:串列埠接收中斷標誌,響應中斷時用軟體將ri標誌清零
外部中斷觸發方式位 it0、it1(itx)
itx = 0 低電平觸發,響應中斷後iex不自動清0
itx = 1 脈衝下降沿觸發,響應中斷後iex自動清0
外部中斷請求0/1的中斷請求標誌位ie0、ie1
定時器/計數器t0/t1的溢位中斷請求標誌位tf0/tf1(tfx)
啟動t0/t1計數後,從初值加1計數,直到最高位產生溢位時,硬體將tfx置「1」,向cpu請求中斷。 響應中斷後tfx自動清0;
tr0,tr1與中斷無關,僅與定時器/計數器t0/t1有關;
中斷響應就是cpu對中斷源發出的中斷請求做出的響應。
cpu開中斷,即中斷允許暫存器ie中的中斷允許總控制位ea = 1;
中斷源發出中斷請求;
中斷源的中斷允許位為1;
沒有同級或者高階的優先順序中斷正在執行;
由硬體根據中斷源的型別自動生成一條長呼叫指令lcall addr16。
cpu執行lcall addr16。
響應時間在3~8個機器週期之內;
將相應優先順序狀態觸發器置1(阻斷後來同級或低階中斷 )
執行硬體lcall指令(pc入棧,中斷服務程式入口址送pc)
執行中斷服務程式
ps:編寫中斷服務程式注意:中斷服務程式入口存放指令ljmp或ajmp;現場保護與現場恢復。
最後指令為reti,功能為:
將斷點從堆疊彈送pc,cpu從原斷點繼續執行
將相應優先順序狀態觸發器清0,恢復原來工作狀態
1. 關中斷:為了防止此時有高一級的中斷進入,以免現場保護的執行過程被中斷。
2. 現場保護:所謂現場是指中斷時刻微控制器中某些暫存器和儲存器單元中的資料或狀態。為了不讓中斷服務程式的執行破壞這資料或狀態,以免中斷返回後影響主程式的執行,需要將他們送入堆疊儲存起來。
3. 開中斷:為了允許有更高階的中斷進入。這樣一來,除了現場保護和現場恢復外,中斷處理的過程仍允許中斷巢狀的功能。
4. 中斷處理
5. 關中斷:為了防止此時有高一級的中斷進入,以免現場恢復的執行過程被中斷。
6. 現場恢復:中斷處理結束後,在返回主程式前,把儲存的現場的內容從堆疊中彈出,以恢復那些暫存器和儲存單元中的原有內容
7. 開中斷:為了允許有更高階的中斷進入。現場恢復後,仍允許中斷巢狀的功能。
8. 中斷返回:必須是返回指令reti。cpu執行完這條指令後,把響應中斷時所置「1」的優先順序狀態觸發器清「0」,然後從堆疊中彈出棧頂上的兩個位元組的斷點位址送到程式計數器pc,彈出的第乙個位元組送入pch,第二個位元組送入pcl,cpu從斷點處重新執行被中斷的主程式。
org 0000h ;程式開始
ljmp start ;= ljmp 1000h
org 0003h ;外部中斷0入口位址
ljmp int
org 1000h ;主程式入口
start: mov p1, #0aah ; #0aah=10101010b
setb ex0 ;允許外部中斷0
setb px0 ;設定外部中斷0為高優先順序
setb it0 ;設定外部中斷0為脈衝下降沿觸發
setb ea ;開中斷
sjmp $ ;原地跳轉,等待中斷
int: clr ea ;關中斷
push psw ;現場保護
push acc ;
setb ea ;開中斷
cpl a ;對累加器a按位取反
mov p1, a ;累加器a值送p1埠
clr ea ;關中斷
pop acc ;現場保護
pop psw ;
setb ea ;開中斷
reti ;
```
MCS 51微控制器基礎
1.data,idata,xdata,pdata 的區別 data 固定指前面0x00 0x7f的128個ram,可以用acc直接讀寫,速度最快,生成的 也最小。idata 固定指前面0x00 0xff的256個ram,其中前128和data的128完全相同,只是訪問方式不同。i用類似c中的指標方式...
振盪器51微控制器 MCS 51微控制器的引腳
對於微控制器的學習,其內部結構及功能可以從引腳功能開始學習。此處mcs 51採用40只引腳雙列直插封裝。40只引腳按其功能分類,可分為3類 1 電源及時鐘引腳 vcc vss xtal1 xtal2。2 控制引腳 psen ea ale reset rst 3 i o口引腳 p0 p1 p2 p3為...
MCS 51微控制器I O埠的訪問
2007 12 25 10 38 53 mcs 51微控制器通常有4個8位i o埠,向各埠的寫資料均寫入到對應埠的鎖存器中,但對各埠的讀操作卻有兩個方式 讀鎖存器和讀引腳 1 讀 修改 寫操作 pn 指p0,p1,p2,p3 在51組合語言中是特殊的識別符號,既代表pn埠引腳,又代表pn鎖存器 pn...