51微控制器使用定時器時已經設定TR0 1是否可以不設定EA

2021-04-21 05:13:20 字數 2892 閱讀 2508

1樓:小遼_小本

ea是全域性中斷允許位,不設定ea,所有中斷都不能使用

2樓:幽光

如果用定時器中斷就不行,必須要開啟總中斷開關ea,如果不用定時器中斷,在主程式裡採用查詢方式就不用設定ea了

3樓:匿名使用者

不可以,。ea是使能,一定要置1.不然你設定tro沒有用,開啟不了中斷

微控制器eaet0都=1,沒有設定tr0=1(或0)對中段有影響嗎,不設定tr0時,是不是只能計數

4樓:攀登

模式1的工作原理圖

先解釋一下兩張圖的不同:

只是由於定時器工作模式暫存器(tmod)的兩位:[m1,m0]的設定不同,所以定時/計數的模式不同,但是結構上是無差別的。假如[m1,m0]=[0,0],則代表模式0,表示就是13位的定時/計數器,tl0只有低5位參與計數,th0整個8位全都參與計數。

假如[m1,m0]=[0,1]代表模式1,表示tl0、th0全都參與計數。如果你是用c語言程式設計,而不是彙編,初始化設定的時候,就可以通過tmod|=0x00,來選擇模式0,tmod|=0x01,來選擇模式1。提醒一點最好用"|=",而不要用「=」,因為前者是 「賦值位或」因為有或運算,不會改變tmod暫存器中原先其他已經設定好的位,但是後者是「賦值」,就會把tmod中的其他位全都改變。

然後哦解釋一下tr0在控制中斷發生上的作用:

由圖上結構可以看到,因為tr0通過乙個「與」門,然後才(control)控制了通向計數器tl0、th0的開關。所以如果tr0為0,「與」門不會置1的,所以就無法把通向計數器的開關開啟,所以無法讓計數器tl0、th0計數,所以無法讓資料溢位,所以無法讓定時器控制暫存器(tcon)的tf0位置1,所以就無法觸發(interrupt)中斷了。

簡單說呢,上面這個圖中涉及到的暫存器的控制位有:

定時器工作模式暫存器(tmod)中的c/t,負責控制定時模式還是控制計數模式。假如c/t是0,則由內部時鐘輸入,此時外設t0用做定時器。假如c/t是1,則由t0 pin (t0 管腳)輸入,此時外設t0用做計數器。

定時器工作模式暫存器(tmod)中的[m1,m0],負責控制定時器的模式為0,為1,為2,還是為3。

定時器工作模式暫存器(tmod)中的gate,負責決定定時器的觸發是否受外部中斷int0的影響。因為gate通過乙個反相器(也就是非門)後和外部中斷int0通過「或」門形成控制流。gate=0,經過反向,輸出為1,不管int0是0/1,都可以經過「或」門輸出1。

gate=1,經過反向,輸出為0,必須要int0是1,才可以經過「或」門輸出1。

額外多說點,th0和tl0是單獨的計數器,賦上初值以後,可以用來定時。定時器初始化的時候,可以用賦值語句直接賦值,比如模式1,tl0=0xff;th0=0x06。這個是250us的計數器初值設定。

怎麼算的呢?

就是當外部晶振為12m的時候,微控制器內部預設是12分頻,可以得到微控制器內部時鐘頻率f=12m/12=1mhz。根據頻率與週期的關係,微控制器的機器週期t=1/f=1/1m=1us。250us就是250個機器週期。

以模式1為例,初值為多少的時候,經過250個機器週期,就可以讓th0溢位了呢?

因為使用了tl0和th0兩個8位計數器,合在一起就是16位,可以產生0~65525一共65536個數。實際上計數器要65536(2的16次冪)個數才可以溢位。16位計數器的容量是65535,包括0,一共可以表示65536個數。

所以想要計數250個數以後溢位,初值=65535(容量)-250+1(這個1就代表要至少超過容量1個數,才可以溢位)。所以初值的計算也就表示為:初值=65536-250

5樓:匿名使用者

對於51單片bai

機,設定了ea=1和et0=1,這是du定時zhi器t0開中斷,即允許t0中斷。而dao

設定tr0=1,是專啟動定時器開始屬計時/計數,tr0=0,則定時器停止計時/計數,對中斷是沒有影響的。不設定tr0=1,那就是tr0=0,那就是不計數。既然定時器都停止計時/計數了,也不會發生中斷的,即不會中斷的。

舉個例子吧,上課時,老師允許你提問發言,可是你都不去上課,你怎麼發言?是乙個道理。所以,雖然不影響中斷,但卻不會引起中斷。

6樓:匿名使用者

不是只能計數

;baitr0=1,開始du計時/計數,跟中斷zhi

沒關係;ea=enable all所有中斷dao使能回,et0=enable timer0,timer0中斷使能;定時器答中斷是計數滿了溢位後中斷,tr0不開不計時沒法溢位怎麼中斷?

51微控制器,只寫開定時器中斷,沒寫啟動定時器和兩個都開時有啥區別?一: ea=1 et0=1

7樓:匿名使用者

只寫前兩行證明你將定時器的中斷開啟了,也就是說如果有溢位的話,就可以進入中斷服務了,但是你tr0沒有置1的話,定時器就不會工作,也就是說始終不會有溢位的事件發生。

tr0=1是什麼意思? 是「定時器開始計時」還是「定時器中斷」?

8樓:陌默__隨影

51微控制器中的定時器

控制字中有兩個控制位tr0、tr1,分別用於啟動、停止定時器的計數。 任何時刻,當tr0/tr1為1時,t0/t1定時器計數;當tr0/tr1為0時,t0/t1定時器停止計數。 置tr0/tr1為1的指令一般應該在初始化程式或主程式或其他程式中

9樓:匿名使用者

tr0 是51微控制器定時器t0的定時器啟動位。

tr0=1 表示開啟定時器(在ea開啟的前提下)。

ea 是51微控制器的總中斷開關,

所有中斷都必須先使ea=1。

10樓:匿名使用者

tr0=1;是定時器0開始計數

it0 = 1;是定時器0的中斷使能.

51微控制器訪問特殊功能暫存器,51微控制器有哪幾個特殊功能暫存器

由於 51 微控制器特殊功能bai暫存器,du只能進行直接訪問,不能zhi進行間接訪dao問,間接訪問為80h ffh的回ram 空間,所答以 不管是 c語言 及 組合語言 都 不可能做到間接訪問特殊功能暫存器。或者 可以變通為 如 if p 0x90 if p 0xa0 不能用類抄似指標的方式訪問...

為什麼51微控制器仍在廣泛使用zhihu

你說的是為什麼51微控制器仍在廣泛使用char?答案是 51微控制器是8位機,其資料絕大部分都是乙個位元組長度,所以以前 現在和以後只要存在,都會廣泛使用字元型資料型別。pic微控制器為什麼那麼少見知乎 市場競爭力的問題吧。pic的微控制器,個人使用後,覺得它適合工控類產品。目前本人將它用於 低廉的...

51微控制器教程採用6Mhz晶振,採用定時方式1,定時時間為 40毫秒計算出初始值

th b1.tl e0,十六進位制 include void inittimer0 void void main void void timer0interrupt void interrupt 1 org 0000h ljmp start org 000bh ljmp timer0interrup...