當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]畢業(yè)設(shè)計(jì)要用到外部中斷和定時(shí)器,定時(shí)器和外部中斷都要三個(gè),當(dāng)時(shí)暈,定時(shí)器可以弄三個(gè),但是外部中斷不好弄。而且外部中斷是下降沿中斷的那種而且三個(gè)中斷信號(hào)還有那種不是特別固定的關(guān)系,想了想中斷擴(kuò)展,想了很

畢業(yè)設(shè)計(jì)要用到外部中斷和定時(shí)器,定時(shí)器和外部中斷都要三個(gè),當(dāng)時(shí)暈,定時(shí)器可以弄三個(gè),但是外部中斷不好弄。而且外部中斷是下降沿中斷的那種而且三個(gè)中斷信號(hào)還有那種不是特別固定的關(guān)系,想了想中斷擴(kuò)展,想了很久也沒(méi)想出個(gè)法子來(lái)。后來(lái)根據(jù)實(shí)際情況,找到52定時(shí)器2可以用作外部中斷使用,特別是下降沿中斷的那種。因?yàn)槲易龅臇|西剛好是中斷后開(kāi)始定時(shí)的那種,因此定時(shí)和中斷也不沖突。

網(wǎng)上關(guān)于講52單片機(jī)定時(shí)/計(jì)數(shù)器2的資料不是很多,因?yàn)樗挥玫幂^少,后來(lái)我只能根據(jù)網(wǎng)上的資料和我的不斷的嘗試,從簡(jiǎn)單實(shí)例入手去研究,才才搞透定時(shí)/計(jì)數(shù)器2的使用,才實(shí)現(xiàn)了中斷和定時(shí)的復(fù)用。下面是我搜到的定時(shí)器2寄存器的一些資料,比較可靠。

定時(shí)器T2的功能比T1、T0都強(qiáng)大,但描述它的資料不多,可能是使用得比較少的緣故吧。它是一個(gè)16位的具有自動(dòng)重裝和捕獲能力的定時(shí)/計(jì)數(shù)器,它的計(jì)數(shù)時(shí)鐘源可以是內(nèi)部的機(jī)器周期,也可以是P1.0輸入的外部時(shí)鐘脈沖。T2的控制寄存器的功能描述如下:

T2CON(T2的控制寄存器),字節(jié)地址0C8H:

位地址 0CFH 0CEH 0CDH 0CCH 0CBH 0CAH 0C9H 0C8H

符 號(hào) TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RT2

各位的定義如下:

TF2:定時(shí)/計(jì)數(shù)器2溢出標(biāo)志,T2溢出時(shí)置位,并申請(qǐng)中斷。只能用軟件清除,但T2作為波特率發(fā)生器使用的時(shí)候,(即RCLK=1或TCLK=1),T2溢出時(shí)不對(duì)TF2置位。

EXF2:當(dāng)EXEN2=1時(shí),且T2EX引腳(P1.0)出現(xiàn)負(fù)跳變而造成T2的捕獲或重裝的時(shí)候,EXF2置位并申請(qǐng)中斷。EXF2也是只能通過(guò)軟件來(lái)清除的。

RCLK:串行接收時(shí)鐘標(biāo)志,只能通過(guò)軟件的置位或清除;用來(lái)選擇T1(RCLK=0)還是T2(RCLK=1)來(lái)作為串行接收的波特率產(chǎn)生器

TCLK:串行發(fā)送時(shí)鐘標(biāo)志,只能通過(guò)軟件的置位或清除;用來(lái)選擇T1(TCLK=0)還是T2(TCLK=1)來(lái)作為串行發(fā)送的波特率產(chǎn)生器

EXEN2:T2的外部允許標(biāo)志,只能通過(guò)軟件的置位或清除;EXEN2=0:禁止外部時(shí)鐘觸發(fā)T2;EXEN2=1:當(dāng)T2未用作串行波特率發(fā)生器時(shí),允許外部時(shí)鐘觸發(fā)T2,當(dāng)T2EX引腳輸入一個(gè)負(fù)跳變的時(shí)候,將引起T2的捕獲或重裝,并置位EXF2,申請(qǐng)中斷。

TR2:T2的啟動(dòng)控制標(biāo)志;TR2=0:停止T2;TR2=1:?jiǎn)?dòng)T2

C/T2:T2的定時(shí)方式或計(jì)數(shù)方式選擇位。只能通過(guò)軟件的置位或清除;C/T2=0:選擇T2為定時(shí)器方式;C/T2=1:選擇T2為計(jì)數(shù)器方式,下降沿觸發(fā)。

CP/RT2:捕獲/重裝載標(biāo)志,只能通過(guò)軟件的置位或清除。CP/RT2=0時(shí),選擇重裝載方式,這時(shí)若T2溢出(EXEN2=0時(shí))或者T2EX引腳(P1.0)出現(xiàn)負(fù)跳變(EXEN2=1時(shí)),將會(huì)引起T2重裝載;CP/RT2=1時(shí),選擇捕獲方式,這時(shí)若T2EX引腳(P1.0)出現(xiàn)負(fù)跳變(EXEN2=1時(shí)),將會(huì)引起T2捕獲操作。但是如果RCLK=1或TCLK=1時(shí),CP/RT2控制位不起作用的,被強(qiáng)制工作于定時(shí)器溢出自動(dòng)重裝載模式。

T2MOD(方式寄存器),字節(jié)地址0C9H:

D7D6 D5 D4 D3 D2 D1 D0

---- -- -- -- -- T2OE DCEN

T2OE:T2輸出允許位,當(dāng)T2OE=1的時(shí)候,允許時(shí)鐘輸出到P1.0。(僅對(duì)80C54/80C58有效)

DCEN:向下計(jì)數(shù)允許位。DCEN=1是允許T2向下計(jì)數(shù),否則向上計(jì)數(shù)。

T2的數(shù)據(jù)寄存器TH2、TL2和T0、T1的用法一樣,而捕獲寄存器RCAP2H、RCAP2L只是在捕獲方式下,產(chǎn)生捕獲操作時(shí)自動(dòng)保存TH2、TL2的值。

以上是T2的相關(guān)寄存器的描述,其實(shí)用法上跟T0、T1是差不多的,只是功能增強(qiáng)了,設(shè)置的東西多了而已。


定時(shí)/計(jì)數(shù)器2其實(shí)用到最多的就是T2CON這個(gè)寄存器啦,它設(shè)定的定時(shí)和計(jì)數(shù)的方式。有三種工作方式,捕獲,自動(dòng)重裝,波特率發(fā)生器。下面我是在百度百科里面找的少許資料:

捕獲方式:

  在捕獲方式下,通過(guò)T2CON控制位EXEN2來(lái)選擇兩種方式。如果EXEN2=0,定時(shí)器2 是一個(gè)16 位定時(shí)器或計(jì)數(shù)器,計(jì)數(shù)溢出時(shí),對(duì)T2CON 的溢出標(biāo)志TF2 置位,同時(shí)激活中斷。如果EXEN2=1,定時(shí)器2 完成相同的操作,而當(dāng)T2EX 引腳外部輸入信號(hào)發(fā)生1 至0 負(fù)跳變時(shí),也出現(xiàn)TH2 和TL2 中的值分別被捕獲到RCAP2H 和RCAP2L 中。另外,T2EX 引腳信號(hào)的跳變使得T2CON 中的EXF2 置位,與TF2 相仿,EXF2 也會(huì)激活中斷。捕獲方式如圖4 所示。

自動(dòng)重裝載(向上或向下計(jì)數(shù)器)方式:

  當(dāng)定時(shí)器2工作于16位自動(dòng)重裝載方式時(shí),能對(duì)其編程為向上或向下計(jì)數(shù)方式,這個(gè)功能可通過(guò)特殊功能寄存器T2CON(見(jiàn)表5)的DCEN 位(允許向下計(jì)數(shù))來(lái)選擇的。復(fù)位時(shí),DCEN 位置“0”,定時(shí)器2 默認(rèn)設(shè)置為向上計(jì)數(shù)。當(dāng)DCEN置位時(shí),定時(shí)器2 既可向上計(jì)數(shù)也可向下計(jì)數(shù),這取決于T2EX 引腳的值,參見(jiàn)圖5,當(dāng)DCEN=0 時(shí),定時(shí)器2 自動(dòng)設(shè)置為向上計(jì)數(shù),在這種方式下,T2CON 中的EXEN2 控制位有兩種選擇,若EXEN2=0,定時(shí)器2 為向上計(jì)數(shù)至0FFFFH 溢出,置位TF2 激活中斷,同時(shí)把16 位計(jì)數(shù)寄存器RCAP2H 和RCAP2L重裝載,RCAP2H 和RCAP2L 的值可由軟件預(yù)置。若EXEN2=1,定時(shí)器2 的16 位重裝載由溢出或外部輸入端T2EX 從1 至0 的下降沿觸發(fā)。這個(gè)脈沖使EXF2 置位,如果中斷允許,同樣產(chǎn)生中斷。

定時(shí)器2的中斷入口地址是:002BH ——0032H。

  當(dāng)DCEN=1時(shí),允許定時(shí)器2向上或向下計(jì)數(shù),如圖6 所示。這種方式下,T2EX 引腳控制計(jì)數(shù)器方向。T2EX 引腳為邏輯“1”時(shí),定時(shí)器向上計(jì)數(shù),當(dāng)計(jì)數(shù)0FFFFH 向上溢出時(shí),置位TF2,同時(shí)把16 位計(jì)數(shù)寄存器RCAP2H 和RCAP2L重裝載到TH2 和TL2 中。 T2EX 引腳為邏輯“0”時(shí),定時(shí)器2 向下計(jì)數(shù),當(dāng)TH2 和TL2 中的數(shù)值等于RCAP2H 和RCAP2L中的值時(shí),計(jì)數(shù)溢出,置位TF2,同時(shí)將0FFFFH 數(shù)值重新裝入定時(shí)寄存器中。

當(dāng)定時(shí)/計(jì)數(shù)器2向上溢出或向下溢出時(shí),置位EXF2 位。

波特率發(fā)生器:

  當(dāng)T2CON(表3)中的TCLK 和RCLK 置位時(shí),定時(shí)/計(jì)數(shù)器2 作為波特率發(fā)生器使用。如果定時(shí)/計(jì)數(shù)器2 作為發(fā)送器或接收器,其發(fā)送和接收的波特率可以是不同的,定時(shí)器1 用于其它功能,如圖7 所示。若RCLK 和TCLK 置位,則定時(shí)器2工作于波特率發(fā)生器方式。

  波特率發(fā)生器的方式與自動(dòng)重裝載方式相仿,在此方式下,TH2翻轉(zhuǎn)使定時(shí)器2的寄存器用RCAP2H 和RCAP2L 中的16位數(shù)值重新裝載,該數(shù)值由軟件設(shè)置。

  在方式1和方式3中,波特率由定時(shí)器2 的溢出速率根據(jù)下式確定:

方式1和3的波特率=定時(shí)器的溢出率/16

定時(shí)器既能工作于定時(shí)方式也能工作于計(jì)數(shù)方式,在大多數(shù)的應(yīng)用中,是工作在定時(shí)方式(C/T2=0)。定時(shí)器2 作為波特率發(fā)生器時(shí),與作為定時(shí)器的操作是不同的,通常作為定時(shí)器時(shí),在每個(gè)機(jī)器周期(1/12 振蕩頻率)寄存器的值加1,而作為波特率發(fā)生器使用時(shí),在每個(gè)狀態(tài)時(shí)間(1/2 振蕩頻率)寄存器的值加1。波特率的計(jì)算公式如下:

  方式1和3的波特率=振蕩頻率/{32*[65536-(RCP2H,RCP2L)]}式中(RCAP2H,RCAP2L)是RCAP2H 和RCAP2L中的16 位無(wú)符號(hào)數(shù)。

  定時(shí)器2作為波特率發(fā)生器使用的電路如圖7 所示。T2CON 中的RCLK 或TCLK=1 時(shí),波特率工作方式才有效。在波特率發(fā)生器工作方式中,TH2 翻轉(zhuǎn)不能使TF2 置位,故而不產(chǎn)生中斷。但若EXEN2 置位,且T2EX 端產(chǎn)生由1 至0 的負(fù)跳變,則會(huì)使EXF2 置位,此時(shí)并不能將(RCAP2H,RCAP2L)的內(nèi)容重新裝入TH2 和TL2 中。所以,當(dāng)定時(shí)器2 作為波特率發(fā)生器使用時(shí),T2EX 可作為附加的外部中斷源來(lái)使用。需要注意的是,當(dāng)定時(shí)器2 工作于波特率器時(shí),作為定時(shí)器運(yùn)行(TR2=1)時(shí),并不能訪問(wèn)TH2 和TL2。因?yàn)榇藭r(shí)每個(gè)狀態(tài)時(shí)間定時(shí)器都會(huì)加1,對(duì)其讀寫(xiě)將得到一個(gè)不確定的數(shù)值。

  然而,對(duì)RCAP2則可讀而不可寫(xiě),因?yàn)閷?xiě)入操作將是重新裝載,寫(xiě)入操作可能令寫(xiě)和/或重裝載出錯(cuò)。在訪問(wèn)定時(shí)器2或RCAP2 寄存器之前,應(yīng)將定時(shí)器關(guān)閉(清除TR2)。

回到主題,其實(shí)我要研究,是如何先讓定時(shí)器先產(chǎn)生下降沿中斷,軟后中斷函數(shù)里面又開(kāi)始定時(shí)。其實(shí)說(shuō)來(lái)也很簡(jiǎn)單,因?yàn)橹灰肊XEN2=1,而且不開(kāi)啟定時(shí)功能,也就是置TR2=0后,如果有外部下降沿脈沖輸入T2EX(P1.1)引腳,那么就產(chǎn)生中斷,那么就可以在中斷函數(shù)中置TR2=1,設(shè)置定時(shí)器初值,這樣就開(kāi)啟了定時(shí)器,實(shí)現(xiàn)了定時(shí)功能??傊@個(gè)TR2設(shè)置很關(guān)鍵。這樣就實(shí)現(xiàn)了先中斷,軟后立即定時(shí)。其實(shí)也可以用T2EX口完全做外部下降沿脈沖的中斷的,只要一直設(shè)置TR2=0就行了,我這里只不過(guò)是要用到定時(shí)功能而已。

下面我是用匯編語(yǔ)言寫(xiě)的一個(gè)單片機(jī)程序,實(shí)現(xiàn)了先做外部中斷后定時(shí)的功能。


T2CONEQU0C8H

T2MODEQU0C9H

CPEQUT2CON.0

TR2

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉