微控制器 中斷法實現數碼管每秒加一

2021-10-10 19:49:33 字數 1388 閱讀 8213

中斷的概念:cpu在執行主程式的時候,中斷源傳送請求。cpu響應中斷源,去執行中斷源的程式。中斷源往往含有優先順序,優先順序高的中斷源可以向優先順序低的中斷源傳送有效的中斷請求。

stc12c5a60s2系列微控制器通常有兩個外部中斷源。

外部中斷常用到的暫存器是tcon(定時計數器控制暫存器)的低四位

暫存器名稱位址位

b7b6

b5b4

b3b2

b1b0

tcon

88h位名

tf1tr1

tf0tr0

ie1it1

ie0it0

ie1外部中斷(int1)中斷請求標誌位

0中斷事件未發生

1產生了中斷事件,可向cpu申請中斷

it1外部中斷源1觸發方式控制位

0低電平觸發方式。當int1=0時,ie1被硬體自動置1

1下降沿觸發方式。當int1電平由1到0跳變時,中斷請求標誌位被硬體自動的置一

上述是外部中斷1的兩個暫存器位的作用。tcon低兩位的外部中斷0的意義與外部中斷1的意義相同,這裡不再贅述。

要使乙個中斷源能夠被cpu識別並按照中斷的方式執行,就要求傳遞線上的幾個開關都是閉合的。通過下面的圖可以很好的理解中斷源與cpu之間的請求傳輸。

所以我們可以得到要外部中斷0的服務程式能夠執行必須滿足三個條件:

主函式執行數碼管每隔約1s加1的任務,當按下p32引腳的按鍵時,蜂鳴器鳴一聲,p36引腳對應的是蜂鳴器,當p36=1時,蜂鳴器發生,s2按鍵按下,電平為低,鬆開時為高。(p32同時也是外部中斷0的介面)

#include

#include

"shumaguan.h"

// 要用到裡面的數碼管顯示函式,在此檔案中,直接呼叫不再多寫。

sbit beep=p3^6;

sbit key=p3^2;

#define beepon beep=0

#define beepoff beep=1

#define rdkey key

void

delay1s

(void

)void

delay100ms

(void

)void

delay10ms

(void

)void

main()

}//外部中斷0的終端服務程式。cpu被動被打斷

//中斷法--外部中斷0請求標誌位的ie0由硬體自動清零,無需軟體操作。

void

ex0_isr

() interrupt 0

}

微控制器驅動數碼管

數碼管的原理?數碼管是分段控制點亮和熄滅的led段,數碼管分為共陽極以及共陰極,共陽極就是說數碼管的led段共乙個電壓正極,共陰極就是說所有的led段共乙個電壓負極。一般方法,乙個io控制公共段,共陽極為例子,給公共段施加乙個正電壓,其餘led段由io分開控制,想顯示多少,只需點亮對應的led段,即...

微控制器數碼管消隱及中斷

在數碼管動態顯示過程中,主要是在數碼管位選和段選產生的瞬態造成的。數碼管的不應該亮的地方有點微微發亮,這種現象就是 鬼隱 利用延時函式,使得數碼管該亮的地方亮的時間久一點,那麼不該亮的地方就不會再亮了。關閉段 在改變值之前,使數碼管全部熄滅。關閉位 關閉數碼管的位,等到賦值過程都做好了後,再重新開啟...

51微控制器數碼管詳解

led數碼管是由多個發光二極體封裝在一起組成 8 字型的器件,引線已在內部連線完成,只需引出它們的各個筆劃,公共電極。led數碼管常用的段數一般為7段,有的另加乙個小數點 led數碼管根據led的接法不同,分為共陽和共陰兩類 1.共陽極數碼管 指八段數碼管的八段發光二極體的陽極 正極 都連在一起,而...