51微控制器的中斷和定時器 計數器

2021-09-08 23:45:09 字數 2998 閱讀 7567

中斷使得高低速裝置可以協調工作(低速裝置完成工作後通過中斷的方式通知高速裝置一次處理一批資料),中斷還可以根據不同的優先順序實現巢狀執行。

定時器本質上是個 16 位的自增計數器,當發生溢位時,如果開啟了溢位中斷,微控制器會自動向 cpu 報告這個溢位中斷,處理相應的中斷任務。

tcon 的低 4 位用作外部中斷,高 4 位用作定時控制。位址是 88h。

tcon 定時器控制暫存器各個位的意義如下:

所在位 bit76

5432

10名稱tf1

tr1tf0

tr0ie1

it1ie0

it0cpu 對中斷源的開啟或遮蔽的控制,是通過 ie 暫存器來設定的,ie 既可按位元組位址定址(其位元組位址為 a8h),又可按位定址。某個中斷對應的位設為 1 則表示允許中斷,否則禁止。

ie 中斷允許控制暫存器各個位的意義如下:

所在位 bit76

5432

10名稱ea

-et2

eset1

ex1et0

ex0

定時器工作在中斷方式時,當定時器的值計滿溢位時,會觸發定時器溢位中斷。

只要想使用中斷,就必須開啟 ea 總中斷。例如,如果想使用定時器/計數器0,需要新增下面一段 keil c51 **來開啟 ea 和 et0:

ea =1;

// 開啟總中斷

et0 =1;

// 開啟定時器/計數器0 中斷

或者使用位元組操作:

ie |

=0x82

;// 設定 ie 暫存器為 10000010,即開啟總中斷和定時器/計數器0中斷

如果使用組合語言,開啟外部中斷 0 的彙編**,位元組操作為:

mov ie,#81h

;mov 0a8h,#81h; 這裡也可以直接使用 ie 暫存器的位址 a8h

或者使用組合語言的位操作:

setb ea

setb ex0

tmod 用於控制定時器的工作模式,低4位用於 t0,高4位用於 t1。各個位的意義如下:

所在位 bit76

5432

10名稱gate

c/tm1

m0gate

c/tm1m0

c/t:設定為 0 則作為定時器使用,設定為 1 則成為計數器

gate:計數脈衝與定時/計數器之間的開關。

所在位 bit76

5432

10名稱-

-pt2

pspt1

px1pt0

px0所在位 bit76

5432

10名稱sm0

sm1sm2

rentb8

rb8tiri

sm0sm1

方式說明

波特率000

8位資料傳送

fosc/1201

110位資料傳送,包括起始位,停止位可變1

0211位資料傳送,包括起始位,停止位 ,校驗位

fosc/6411

3同方式2

51微控制器有5個中斷源,5個中斷源分別是:

中斷可以根據優先順序實現巢狀,51 系列可以實現 2 級巢狀(對應優先順序暫存器 ip),52 系列可以實現 4 級巢狀(對應優先順序暫存器 ip 和 iph)。

中斷名稱

中斷標誌位

中斷號預設優先順序

中斷入口位址

外部中斷0

ie00

高0003h

定時/計數器0溢位中斷

tf02

↓000bh

外部中斷1

ie11

↓0013h

定時/計數器1溢位中斷

tf13

↓001bh

串列埠傳送或接收中斷

ri/ti4低

0023h

停止主程式執行

保護斷點,把程式計數器 pc 的值壓入堆疊

尋找中斷入口,每個中斷都有不同的程式入口

執行中斷處理程式

中斷返回,繼續執行主程式

任何中斷的使用都要滿足 3 個條件:

中斷系統有乙個總的開關 ea(ie 暫存器中),如果想使用中斷,必須開啟總開關。

每個中斷都有乙個單獨的開關,這些單獨的開關跟總開關 ea 一樣,都在 ie 暫存器中。

假設我要每計數 24 次觸發一次溢位中斷,定時器工作在模式 1,則計數初始值為 65536 - 24 = 65512。

下面**使用了外部中斷0,上電後 p1 埠 0 號引腳的 led 會一直閃爍,首次觸發外部中斷時,p1 埠所有 led 點亮,再次觸發外部中斷時,0號引腳的 led 再次開始閃爍,以此迴圈:

#include

int flag =1;

void

delay()

void

main()

p1 =

0x00;}

}void

externelinterrupt

() interrupt 0

電路圖:

搞懂51微控制器定時器 計數器

搞懂51定時器 計數器 步驟 1 第1步 先設定好定時器的時鐘源 如果需要的話 2 第2步 初始化時鐘相關暫存器 3 第3步 設定定時時間 計數個數 4 第4步 設定中斷處理程式 5 第5步 開啟定時器 5 執行時 定時器計數到後產生中斷,然後執行中斷isr 中斷服務處理,interrupt ser...

微控制器 定時器 計數器

一 簡述 mcs 51系列微控制器內部有兩個16位定時器 計數器,即定時器t0和定時器t1。它們都具有定時和計數功能,可用於定時或延時控制,對外部事件進行檢測 計數等。定時器 計數器是乙個加 1 計數器,來一脈衝即做加1計數,直至暫存器各位全為1,再來一脈衝,計數器回0且使tf0 定時器t0 tf1...

51微控制器複習 外部中斷,定時器 計數器中斷

中斷 什麼是中斷,就是打斷,你一開始在做一件事,突然意外發生 中斷源 你不得不停止手中的事,中斷響應 去處理那 件意外 中斷服務 處理完意外後你繼續做剛才那件事 中斷返回 這就是中斷,而微控制器中的中斷也是如此,微控制器中有五個中斷源,兩個優先順序 五個中斷源 外部中斷0 int0 定時器0中斷 t...