微控制器學習(五)利用中斷按鍵計數(key)

2021-08-21 21:09:53 字數 1864 閱讀 4161

編輯

定時器中斷是由微控制器中的定時器溢位而申請的中斷。

51微控制器中有兩個定時器t0和t1:

tf0:定時器t0溢位中斷請求。當定時器to產生溢位時,to中斷請求標誌tf0置1,請求中斷處理。

tf1:定時器t1溢位中斷請求。當定時器tl產生溢位時,t1中斷請求標誌tf1置1,請求中斷處理。

stm32共有11個定時器:

1.兩個高階定時器:tim1、tim8-------------------------apb2

2.四個通用定時器:tim2~tim5-------------------------apb1

3.兩個基本定時器:tim6、tim7-------------------------apb1

4.兩個看門狗

5.乙個系統嘀嗒定時器(systick)

編輯定時/計數器t0和t1分別是由兩個8位的專用暫存器組成,即定時/計數器t0由th0和tl0組成,t1由th1和tl1組成。此外,其內部還有2個8位的特殊功能暫存器tmod和tcon,tmod負責控制和確定t0和t1的功能和工作模式,tcon用來控制t0和t1啟動或停止計數,同時包含定時/計數器的狀態。 [1]

tf1:定時器1溢位標誌。定時/計數器溢位時由硬體置位。中斷處理時由硬體清除。或用軟體清除。

tf0:定時器0溢位標誌。定時/計數器溢位時由硬體置位。中斷處理時由硬體清除,或用軟體清除。

編輯定時器工作的流程可以按照這個順序(以51為例用定時器0方式一產生10毫秒的定時)

1、確定使用哪個定時器,使用哪種方式,這一步通過tmod設定,tmod的低四位是設定定時器0的,高四位是用來設定定時器1的,其中的m0,m1是用來設定定時器工作在哪種方式,gate一般用不要設定,c/t是選擇計數模式還是定時模式的,如:tmod = 0x01,就說明定時器0工作在方式1。

2、接下來就要設定定時的時間,用定時器定時50毫秒,可以用這種方式th0 = (65535 - 10000) / 256,tl0 = (65535 - 10000) % 256;可以這樣理解:因為這是定時器的初值,也就是說計數脈衝就是在這個數的基礎上向上遞增,到達65535後就溢位產生中斷。

3、第三步開啟中斷,使用ie暫存器,首先開啟總中斷ea = 1,這一步是所有中斷所必須的,然後開啟定時器0中斷,et0 =1。

4、這時準備工作結束,啟動定時器,使用tcon暫存器,tr0 = 1,實現了乙個10毫秒的定時。

**如下:(中斷時間根據情況改變)

#include

#include

sbit key1 = p0^0;

sbit led1 = p3^0;

#define dataport p1     //巨集定義,如果換介面,需要修改這裡

sbit seg_latch = p2^2;   //段鎖存

sbit bit_latch = p2^3;   //位鎖存

unsigned char code seg_code = ;  //段碼

unsigned char code bit_code = ;  //位碼

void display(unsigned char m,unsigned char num,unsigned int n);

unsigned char i;

void main()

while(!key1);

led1 = 1;

}i++;

if(i > 19)

display(1,2,i);                       }}

}void display(unsigned char m,unsigned char num,unsigned int n)   //兩位共陰極數碼管顯示數字

}    

void t0_isr(void) interrupt 1

微控制器 51微控制器時鐘 利用中斷

include include delay delay.h define timeport p0 sbit bit select p2 0 sbit seg select p2 1 sbit key1 p2 2 sbit key2 p2 3 code unsigned char timedata 1...

微控制器獨立按鍵學習

輕觸開關是一種電子開關,使用時,輕輕按開關按鈕就可使開關接通,當鬆開手時,開關斷開。如下圖 1,2 和 3,4 管腳之間距離短,初始不導通,1,3 和 2,4 管腳之間距離長,初始值導通。當按鍵按下時,距離短的會變為導通,距離長的會變為不導通,所以就可以利用按鍵這一特性來控制其他的事物。例如管腳1接...

微控制器 INT 及INT 中斷計數

前言 實驗 程式分析 include define uchar unsigned char define uint unsigned int sbit k3 p3 4 sbit k4 p3 5 uchar code dsy code uchar data buffer counts uint cou...