中文字幕无码不卡一区二区三区_少妇被又大又粗又爽毛片久久黑人_91精品国产在热久久无毒不卡_久久久久久亚洲综合网站

技術(shù)熱線: 4007-888-234
設(shè)計(jì)開(kāi)發(fā)

專(zhuān)注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開(kāi)發(fā)工具

提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享

技術(shù)支持

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶(hù)產(chǎn)品競(jìng)爭(zhēng)力

新聞中心

提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)

8051單片機(jī):使用定時(shí)器設(shè)計(jì)延遲程序

更新時(shí)間: 2021-10-28
閱讀量:8559

8051單片機(jī)有兩個(gè)獨(dú)立的16位向上計(jì)數(shù)定時(shí)器,名為T(mén)imer0和Timer1,本文是關(guān)于使用8051定時(shí)器生成時(shí)間延遲。使用純軟件循環(huán)可以生成延遲,但這種延遲精度較差,不能用于敏感應(yīng)用。使用定時(shí)器延遲是最準(zhǔn)確的,當(dāng)然也是最好的方法。

定時(shí)器可以概括為多位計(jì)數(shù)器,它在接收時(shí)鐘信號(hào)時(shí)增加/減少自身,并在翻轉(zhuǎn)時(shí)產(chǎn)生中斷信號(hào)。當(dāng)計(jì)數(shù)器在處理器時(shí)鐘上運(yùn)行時(shí),它被稱(chēng)為“定時(shí)器”,它對(duì)預(yù)定數(shù)量的處理器時(shí)鐘脈沖進(jìn)行計(jì)數(shù)并產(chǎn)生可編程延遲。當(dāng)計(jì)數(shù)器在外部時(shí)鐘源(可能是周期性或非周期性外部信號(hào))上運(yùn)行時(shí),它本身被稱(chēng)為“計(jì)數(shù)器”,可用于對(duì)外部事件進(jìn)行計(jì)數(shù)。

在8051單片機(jī)中,振蕩器輸出使用12分頻網(wǎng)絡(luò)進(jìn)行12分頻,然后作為時(shí)鐘信號(hào)饋入定時(shí)器。這意味著對(duì)于以12MHz運(yùn)行的8051,定時(shí)器時(shí)鐘輸入將為1MHz。這意味著計(jì)時(shí)器每1uS前進(jìn)一次,使用單個(gè)8051計(jì)時(shí)器可能的最大時(shí)間延遲為(2^16)x(1uS)=65536uS。比這更長(zhǎng)的延遲可以通過(guò)使用定時(shí)器編寫(xiě)一個(gè)基本的延遲程序然后循環(huán)它所需的時(shí)間來(lái)實(shí)現(xiàn)。我們將在本文的下一節(jié)中詳細(xì)了解所有這些。

一、使用8051單片機(jī)的定時(shí)器設(shè)計(jì)延遲程序

在8051中設(shè)計(jì)延時(shí)程序時(shí),計(jì)算需要加載到TH和TL寄存器中的初始值是很重要的事情。讓我們看看它是如何完成的:

(1)假設(shè)處理器由12MHz晶振提供時(shí)鐘。
(2)這意味著,定時(shí)器時(shí)鐘輸入將為12MHz/12=1MHz
(3)這意味著,定時(shí)器增加一倍所用的時(shí)間=1/1MHz=1uS
(4)對(duì)于“X”uS的時(shí)間延遲,計(jì)時(shí)器必須使“X”遞增。
(5)2^16=65536是16位定時(shí)器可能的最大計(jì)數(shù)數(shù)。
(6)設(shè)TH是必須加載到TH寄存器的值,TL是必須加載到TL寄存器的值。
(7)然后,THTL=(65536-X)的十六進(jìn)制等效值,其中(65536-X)被視為十進(jìn)制。

二、使用8051單片機(jī)定時(shí)器產(chǎn)生1mS延遲的程序

下面的程序可用于產(chǎn)生1mS延遲,已被編寫(xiě)為子程序,以便可以在程序的任何地方調(diào)用它。也可以將其置于循環(huán)中以創(chuàng)建更長(zhǎng)的時(shí)間延遲(1mS的倍數(shù))。這里使用了8051的定時(shí)器0,它在MODE1(16位定時(shí)器)下運(yùn)行。

DELAY: MOV TMOD,#00000001B // Sets Timer 0 to MODE1 (16 bit timer). Timer 1 is not used
       MOV TH0,#0FCH // Loads TH0 register with FCH
       MOV TL0,#018H // LOads TL0 register with 18H
       SETB TR0 // Starts the Timer 0
HERE: JNB TF0,HERE // Loops here until TF0 is set (ie;until roll over)
      CLR TR0 // Stops Timer 0
      CLR TF0 // Clears TF0 flag
      RET


上面的延遲例程可以循環(huán)兩次以獲得2毫秒的延遲,如下面的程序所示:

MAIN: MOV R6,#2D
LOOP: ACALL DELAY
      DJNZ R6,LOOP
      SJMP MAIN
DELAY: MOV TMOD,#00000001B 
       MOV TH0,#0FCH
       MOV TL0,#018H 
       SETB TR0 
HERE: JNB TF0,HERE 
      CLR TR0 
      CLR TF0 
      RET


使用定時(shí)器時(shí)要記住的幾點(diǎn):
(1)一旦設(shè)置了定時(shí)器標(biāo)志(TF),程序員必須先將其清除,然后才能再次設(shè)置。
(2)定時(shí)器標(biāo)志設(shè)置后定時(shí)器不會(huì)停止。程序員必須清除TR位才能停止定時(shí)器。
(3)一旦定時(shí)器溢出,程序員必須將初始起始值重新加載到TH和TL寄存器以開(kāi)始向上計(jì)數(shù)。
(4)我們可以配置所需的計(jì)時(shí)器以在設(shè)置TF標(biāo)志時(shí)創(chuàng)建中斷。
(5)如果沒(méi)有使用中斷,那么我們必須使用一些條件分支指令檢查定時(shí)器標(biāo)志(TF)是否設(shè)置。
(6)使用單個(gè)8051定時(shí)器可能的最大延遲為65536uS,如果您使用12MHz晶體為單片機(jī)計(jì)時(shí),則最小延遲為1uS。

三、使用8051單片機(jī)定時(shí)器生成方波

使用8051單片機(jī)定時(shí)器可以生成任何頻率的方波(受控制器規(guī)格限制)。該技術(shù)非常簡(jiǎn)單。編寫(xiě)一個(gè)延遲子程序,延遲等于方波時(shí)間周期的一半。使任何端口引腳為高電平并調(diào)用延遲子程序。延遲子程序完成后,將相應(yīng)的端口引腳拉低,調(diào)用延遲子程序增益。子程序完成后,再次重復(fù)循環(huán)。結(jié)果將是所選端口引腳上所需頻率的方波。電路圖如下所示,它可以用于任何方波,但程序必須相應(yīng)。不同方波的程序如下圖所示:

20211028110259.jpg

例1:1KHz方波。

MOV P1,#00000000B
MOV TMOD,#00000001B
MAIN: SETB P1.0
      ACALL DELAY
      CLR P1.0
      ACALL DELAY
      SJMP MAIN
DELAY: MOV TH0,#0FEH
       MOV TL0,#00CH
       SETB TR0
HERE: JNB TF0,HERE
      CLR TR0
      CLR TF0
      SETB P1.0
      RET
      END


例2:2KHz方波。

MOV P1,#00000000B
MOV TMOD,#00000001B
MAIN: SETB P1.0
      ACALL DELAY
      CLR P1.0
      ACALL DELAY
      SJMP MAIN
DELAY: MOV TH0,#0FCH
       MOV TL0,#018H
       SETB TR0
HERE:JNB TF0,HERE
     CLR TR0
     CLR TF0
     SETB P1.0
RET
END


例3:10KHz方波。

MOV P1,#00000000B
MOV TMOD,#00000001B
MAIN: SETB P1.0
      ACALL DELAY
      CLR P1.0
      ACALL DELAY
      SJMP MAIN
DELAY: MOV TH0,#0FFH
       MOV TL0,#0CEH
       SETB TR0
HERE:JNB TF0,HERE
     CLR TR0
     CLR TF0
     SETB P1.0
RET
END

以上就是英銳恩單片機(jī)開(kāi)發(fā)工程師分享的“8051單片機(jī):使用定時(shí)器設(shè)計(jì)延遲程序”。英銳恩專(zhuān)注單片機(jī)應(yīng)用方案設(shè)計(jì)與開(kāi)發(fā),提供8位單片機(jī)、16位單片機(jī)、32位單片機(jī)。

沂水县| 江山市| 柳州市| 上饶县| 武功县| 方城县| 阳春市| 玛曲县| 宿松县| 老河口市| 太和县| 高安市| 南城县| 瑞昌市| 三亚市| 诸暨市| 明溪县| 文成县| 玛多县| 丽水市| 保亭| 绥阳县| 镇平县| 厦门市| 襄樊市| 棋牌| 岳西县| 疏附县| 鹿泉市| 西华县| 赤峰市| 石景山区| 姚安县| 繁峙县| 南阳市| 洪洞县| 新化县| 资源县| 微博| 西宁市| 连州市|