微控制器EAET0都1,沒有設定TR0 1 或0 對中段有影響嗎,不設定TR0時,是不是隻能計數

2021-04-21 05:13:21 字數 3854 閱讀 8190

1樓:攀登

模式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

2樓:匿名使用者

對於51單片bai

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

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

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

3樓:匿名使用者

不是隻能計數

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

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

微控制器中ea是什麼意思?還有et0和tr0又是什麼意思? 各位小弟求幫助!

4樓:楊必宇

ea總中斷開關,任

bai何中du

斷都無法執行。zhi

et0,開啟t0定時器

dao中斷。內

tr0,啟用t0計數器/定時器。

對於51微控制器,設定了容ea=1和et0=1,這是定時器t0開中斷知,即允許t0中斷。而設定tr0=1,是啟動定時器開始計時/計數,tr0=0,則定時器停止計時/計數,對中斷道是沒有回影響的。

擴充套件資料

微控制器廣泛應用於儀器儀表、家用電器、醫用裝置、航空航天、專用裝置的智慧化管理及過程控制等領域,大致可分如下幾個範疇:

1、在智慧儀器儀表上的應用

微控制器具有體積小、功耗低、控制功能強、擴充套件靈活、微型化和使用方便等優點,廣泛應用於儀器儀表中,結合不同型別的感測器,可實現諸如電壓、功率、頻率、溼度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。

2、在工業控制中的應用

用微控制器可以構成形式多樣的控制系統、資料採集系統。例如工廠流水線的智慧化管理,電梯智慧化控制、各種報警系統,與計算機聯網構成二級控制系統等。

5樓:

ea總中斷開關,如果ea不開啟,任何中斷都無法執行

et0,在ea開啟的前提下,開啟t0定時器中斷

tr0,開始啟用t0計數器/定時器

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

6樓:匿名使用者

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

stc89c52微控制器中斷和定時器問題:tmod/th0/tl0/ea/et0/tr0它們之間的關係是什麼啊?

7樓:0427付強

這些暫存器實

bai際試幾次就能深刻明du白他們的用途了,說的話zhi擔心你可能還是不dao能完全理解。

內ea是總中斷開關,當容ea=0時,微控制器不執行任何中斷,因此如果想要微控制器進入中斷,ea必須賦值為1。

et0、et1是定時/計數器t0、t1的中斷開關,其值為0時對應的中斷失效(有爭議)

tr0、tr1是定時/計數器t0、t1的執行控制位,等於1時對應的定時/計數器才開始執行,等於0時停止執行

tmod是設定中斷引數的暫存器,定時/計數器t0、t1的計數模式、控制方式、功能都由這個暫存器控制

th0、tl0時定時/計數器t0的計數變數,計數時,這兩個暫存器會不停的加一,直到溢位引起中斷。通常在這兩個暫存器中設定不同的初始值,從而設定從開始到溢位的時間和次數

這些都是標準mcs-51中的中斷結構,實際上你所使用的stc89c52rc是增強型的51微控制器,它還有t2定時/計數器和對應的控制位。

8樓:匿名使用者

void inittimer0() ---------------定時copy

器0中斷

初始bai化du子程式

------------------------t0工作開始

void inittimer0() { tmod=0x01; th0=th0; tl0=tl0; ea=1; et0=1; tr0=1; }微控制器中的定時,求解釋,急!

9樓:生活如歌

void inittimer0() ---------------定時器0中斷初始化子程式

------------------------t0工作開始權

微控制器中的定時,求解釋,急!

問個微控制器問題TMOD 0x21設定定時器1為工作方式2求教這句話什麼意思

tmod是單片抄機的內部暫存器。不管你是 bai0x01也好還是du0x10也好只要你付給tmod他就zhi是設定定時器的工dao作方式 tm0d的高四位也就是你說的0010 這個是設定定時 計數器1的低四位也就是你說的0001是設定定時器0的。所以你說的tmod 0x21是將定時器1設定與工作方式...

求解微控制器中C編的幾個指令temp1和temp

temp 1 計算 temp 左移一位的值,語句結束後temp沒有變化 temp 1相當於temp temp 1也就是 計算 temp 左移一位的值,並把版這個值賦給tempif p1 temp 就是 計算 p1 與 temp按位權 與運算的值,然後判斷這個值是否為0 if p1 temp else...

求微控制器利用外部中斷1從0到90計數數碼管顯示C語言程式

你把計數的值除以10得到的商就是十位,除以10的餘數就是個位啦,搞不定再加q聯絡我,空間有q。十位 個位,用一個計數單元,同時計數 顯示的時候,分別顯示。include unsigned char distab 10 unsigned char i 0,flag 0 void delay void ...