第5章定時計數(shù)器ppt課件_第1頁
第5章定時計數(shù)器ppt課件_第2頁
第5章定時計數(shù)器ppt課件_第3頁
第5章定時計數(shù)器ppt課件_第4頁
第5章定時計數(shù)器ppt課件_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、第第5章章 定時定時/計數(shù)器計數(shù)器 本章學(xué)習(xí)目標(biāo)本章學(xué)習(xí)目標(biāo) : 能正確描繪定時能正確描繪定時/計數(shù)器的計數(shù)器的4種工作方式,重點掌握種工作方式,重點掌握方式方式1、方式、方式2的應(yīng)用的應(yīng)用 學(xué)會定時學(xué)會定時/計數(shù)初值的計算計數(shù)初值的計算 能讀懂教材中的控制實例,學(xué)會編寫同等難度的中能讀懂教材中的控制實例,學(xué)會編寫同等難度的中斷、定時斷、定時/計數(shù)程序計數(shù)程序5. 定時計數(shù)器定時計數(shù)器 1. 日常生活中定時、計數(shù)的例子:日常生活中定時、計數(shù)的例子: 如鬧鐘、畫如鬧鐘、畫“正統(tǒng)計選票、家用水表對水量的計數(shù)。正統(tǒng)計選票、家用水表對水量的計數(shù)。 2 . 單片機應(yīng)用系統(tǒng)中定時計數(shù)的需求:單片機應(yīng)用系統(tǒng)

2、中定時計數(shù)的需求: 如用單片機控制的打鈴器、空調(diào)的定時開關(guān)、啤酒自動生產(chǎn)線如用單片機控制的打鈴器、空調(diào)的定時開關(guān)、啤酒自動生產(chǎn)線上對酒瓶的計數(shù)裝置等。上對酒瓶的計數(shù)裝置等。 3 . 80C51單片機片內(nèi)的定時單片機片內(nèi)的定時/計數(shù)器:計數(shù)器: 兩個位可編程的定時計數(shù)器:兩個位可編程的定時計數(shù)器:T0和和T1,都能定時和對外,都能定時和對外部事件進行計數(shù)。部事件進行計數(shù)。 此外,此外,T1還可以作為串行接口的波特率發(fā)生器。還可以作為串行接口的波特率發(fā)生器。 5.1.15.1.1定時計數(shù)器的結(jié)構(gòu)定時計數(shù)器的結(jié)構(gòu).定時和計數(shù)的原理定時和計數(shù)的原理(1計數(shù)計數(shù) 定時計數(shù)器的實質(zhì)是加計數(shù)器位),定時計數(shù)

3、器的實質(zhì)是加計數(shù)器位),其原理類似于古代用來計時的水鐘:其原理類似于古代用來計時的水鐘:假設(shè)計滿一小時需要假設(shè)計滿一小時需要100,000,000滴,這稱為水鐘的計數(shù)容量滴,這稱為水鐘的計數(shù)容量16位定時位定時/計數(shù)器的計數(shù)容量是計數(shù)器的計數(shù)容量是65536單片機是對脈沖個數(shù)計數(shù),計數(shù)器每單片機是對脈沖個數(shù)計數(shù),計數(shù)器每接收到一個脈沖,計數(shù)值加接收到一個脈沖,計數(shù)值加1,當(dāng)接收滿當(dāng)接收滿65535個脈沖后,再個脈沖后,再來一個脈沖,計數(shù)值清來一個脈沖,計數(shù)值清0表明表明這一輪計數(shù)結(jié)束,同時將標(biāo)這一輪計數(shù)結(jié)束,同時將標(biāo)志位志位TF0或或TF1置置1。 (2定時定時 單片機內(nèi)部的計數(shù)器用作定時器時

4、,是對標(biāo)準(zhǔn)的單片機內(nèi)部的計數(shù)器用作定時器時,是對標(biāo)準(zhǔn)的時鐘進行了計數(shù),每來一個時鐘脈沖,計數(shù)器加時鐘進行了計數(shù),每來一個時鐘脈沖,計數(shù)器加1,只要保證計數(shù)脈沖的間隔相等,則計數(shù)值就代表了只要保證計數(shù)脈沖的間隔相等,則計數(shù)值就代表了時間的流逝。時間的流逝。單片機中的定時器和計數(shù)器其實是一個器件:單片機中的定時器和計數(shù)器其實是一個器件:計數(shù)器:是對外部發(fā)生的事件進行計數(shù),計數(shù)器:是對外部發(fā)生的事件進行計數(shù),定時器:是對單片機內(nèi)部的標(biāo)準(zhǔn)時鐘脈沖進行定時器:是對單片機內(nèi)部的標(biāo)準(zhǔn)時鐘脈沖進行計數(shù)。計數(shù)。 見圖見圖4-9 ,它是由單片機的晶振經(jīng)過,它是由單片機的晶振經(jīng)過12分頻后得到。由于分頻后得到。由于

5、晶振的頻率很準(zhǔn),所以這個時鐘脈沖的時間間隔也很準(zhǔn)。不晶振的頻率很準(zhǔn),所以這個時鐘脈沖的時間間隔也很準(zhǔn)。不難算出,當(dāng)單片機采用難算出,當(dāng)單片機采用12的晶振時,它提供給計數(shù)器的晶振時,它提供給計數(shù)器的脈沖頻率是,脈沖周期就是的脈沖頻率是,脈沖周期就是微秒。微秒。圖圖4-9 定時定時/計數(shù)器計數(shù)器T0的結(jié)構(gòu)示意圖的結(jié)構(gòu)示意圖 單片機內(nèi)部的單片機內(nèi)部的16位定時計數(shù)器由高位定時計數(shù)器由高8位和低位和低8位兩個寄存位兩個寄存器組成:器組成: T0由由TH0和和TL0組成,組成, T1由由TH1和和TL1組成,組成, 定時計數(shù)器的計數(shù)值就存放在這里面。定時定時計數(shù)器的計數(shù)值就存放在這里面。定時/計數(shù)器計

6、數(shù)器T1的的結(jié)構(gòu)與結(jié)構(gòu)與T0相同。相同。圖圖4-9 定時定時/計數(shù)器計數(shù)器T0的結(jié)構(gòu)示意圖的結(jié)構(gòu)示意圖 2定時定時/計數(shù)器的結(jié)構(gòu)計數(shù)器的結(jié)構(gòu) 再以水鐘為例,當(dāng)水不斷落下,下面容器中的水不再以水鐘為例,當(dāng)水不斷落下,下面容器中的水不斷變多,最終總有一滴水使得容器完全充滿。這時如斷變多,最終總有一滴水使得容器完全充滿。這時如果再有一滴水落下,就會發(fā)生果再有一滴水落下,就會發(fā)生“溢出溢出”。與此類似,。與此類似,16位定時計數(shù)器計滿位定時計數(shù)器計滿65536個脈沖時,也會發(fā)生溢個脈沖時,也會發(fā)生溢出。出。 定時計數(shù)器溢出后標(biāo)志位定時計數(shù)器溢出后標(biāo)志位TF0或或TF1由由0變變1,由此能夠引發(fā)定時中斷

7、在中斷定時方式下),這就由此能夠引發(fā)定時中斷在中斷定時方式下),這就像定時的時間一到,鬧鐘就會響一樣。像定時的時間一到,鬧鐘就會響一樣。 如果采用如果采用12的晶振,對應(yīng)的脈沖周期是的晶振,對應(yīng)的脈沖周期是微秒,計滿微秒,計滿65536個脈沖所對應(yīng)的時間就是個脈沖所對應(yīng)的時間就是65.536ms。 3定時定時/計數(shù)值的設(shè)置計數(shù)值的設(shè)置再回到水鐘的例子上去:再回到水鐘的例子上去: 剛才假設(shè)下面容器滴入剛才假設(shè)下面容器滴入100,000,000滴水才會滴水才會滿,現(xiàn)在我們在開始滴水之前先放入一勺水,這樣問滿,現(xiàn)在我們在開始滴水之前先放入一勺水,這樣問題就解決了。題就解決了。 計數(shù)器的道理是一樣的,

8、只要用預(yù)置數(shù)的方法計數(shù)器的道理是一樣的,只要用預(yù)置數(shù)的方法先在計數(shù)容器內(nèi)存入一個初值先在計數(shù)容器內(nèi)存入一個初值 (通常稱為時間常(通常稱為時間常數(shù)),如我們要計數(shù)),如我們要計100,那就存入,那就存入65436,只要再來,只要再來100個脈沖,就剛好會溢出,引發(fā)中斷。個脈沖,就剛好會溢出,引發(fā)中斷。計數(shù)器初值的設(shè)置計數(shù)器初值的設(shè)置 在主頻為在主頻為12MHz的情況下,每個時鐘脈沖是的情況下,每個時鐘脈沖是1微秒,微秒,則計滿則計滿65536個脈沖需個脈沖需65.536毫秒,如要定時毫秒,如要定時10毫秒則存毫秒則存入初值入初值55536,(,(10毫秒是毫秒是10000微秒,需計數(shù)微秒,需計

9、數(shù)10000個個脈沖)??梢?,脈沖)??梢?, 定時器的定時時間長短與系統(tǒng)時鐘和定時器初值有關(guān)。定時器的定時時間長短與系統(tǒng)時鐘和定時器初值有關(guān)。 闡明闡明 1. 當(dāng)定時計數(shù)器用作計數(shù)器時,通過引腳當(dāng)定時計數(shù)器用作計數(shù)器時,通過引腳P3.4(P3.5)對外部輸入脈沖計數(shù)。對外部輸入脈沖計數(shù)。 2 . 定時計數(shù)器定時計數(shù)器T0(T1)啟動運行后,會按設(shè)定的工作啟動運行后,會按設(shè)定的工作方式獨立進行計數(shù),不再占用方式獨立進行計數(shù),不再占用CPU時間。當(dāng)計數(shù)器時間。當(dāng)計數(shù)器T0(T1)計滿溢出時,計滿溢出時,TF0(TF1)置置1,向,向CPU發(fā)出中斷請求信號。發(fā)出中斷請求信號。定時器初值的設(shè)置定時器初

10、值的設(shè)置4-10 定時定時/計數(shù)器的控制關(guān)系計數(shù)器的控制關(guān)系 5.2 5.2定時計數(shù)器的控制定時計數(shù)器的控制 在單片機中有兩個特殊功能寄存器在單片機中有兩個特殊功能寄存器與定時與定時/ /計數(shù)有關(guān),它們就是計數(shù)有關(guān),它們就是TMODTMOD和和TCONTCON,定,定時計數(shù)器時計數(shù)器T0T0、T1T1就由它們來控制:就由它們來控制: TMODTMOD用于設(shè)置工作方式;用于設(shè)置工作方式; TCONTCON用于控制其啟動、停止和中斷申用于控制其啟動、停止和中斷申請。請。 1.定時器工作方式寄存器定時器工作方式寄存器TMOD TMOD用于設(shè)置用于設(shè)置T0和和T1的工作方式,字節(jié)地址為的工作方式,字節(jié)

11、地址為89H,不能按位尋址。其格式和各位的含義如下:不能按位尋址。其格式和各位的含義如下: 2定時定時/計數(shù)器控制寄存器計數(shù)器控制寄存器TCON TCON的低的低4位用于控制外部中斷,高位用于控制外部中斷,高4位用于位用于控制定時控制定時/計數(shù)器的啟動和中斷申請。計數(shù)器的啟動和中斷申請。 TF0或或TF1) 當(dāng)計數(shù)溢出時,當(dāng)計數(shù)溢出時,TF0或或TF1會自動由會自動由0變變1,告訴我們計數(shù)已滿,我們可以通過查詢告訴我們計數(shù)已滿,我們可以通過查詢TF0(或或TF1)位的狀態(tài)來判斷計時時間是否已到;位的狀態(tài)來判斷計時時間是否已到; 如果采用定時中斷方式,那么如果采用定時中斷方式,那么 TF0或或T

12、F1由由0變變1時,能自動引發(fā)中斷。時,能自動引發(fā)中斷。l TR0(或或TR1)l 由圖由圖4-11 可知,只可知,只有當(dāng)有當(dāng)TR0(或或TR1)為為1時,時,開關(guān)開關(guān)1才能閉合,計數(shù)脈沖才能閉合,計數(shù)脈沖才能進入計數(shù)器,故才能進入計數(shù)器,故TR0(或或TR1)稱為運行控制稱為運行控制位,可用指令位,可用指令“SETB TR0(或或TR1)”來置位以啟來置位以啟動定時動定時/計數(shù)器運行;或用計數(shù)器運行;或用指令指令“CLR TR0(或或TR1)”來關(guān)閉定時來關(guān)閉定時/計數(shù)器的工作,計數(shù)器的工作,一切全靠編程人員控制。一切全靠編程人員控制。圖4-11 定時/計數(shù)器T0方式0的邏輯結(jié)構(gòu)示意圖 5.

13、3 5.3 定時定時/ /計數(shù)器的工作方式計數(shù)器的工作方式 80C5180C51單片機定時單片機定時/ /計數(shù)器計數(shù)器T0T0有有4 4種工作方種工作方式方式式方式0 0、1 1、2 2、3 3),),T1T1有有3 3種工作方式種工作方式方式方式0 0、1 1、2 2)。)。 1. 1. 方式方式0 0 當(dāng)當(dāng)TMODTMOD的的M1M0=00M1M0=00時,定時時,定時/ /計數(shù)器工計數(shù)器工作于方式作于方式0 0。方式方式0 0為為1313位定時位定時/ /計數(shù)器,由計數(shù)器,由TL0TL0的低的低5 5位和位和TH0TH08 8位共同完成計數(shù)功能位共同完成計數(shù)功能TL0TL0的高的高3 3

14、位可位可忽略)。忽略)。 當(dāng)當(dāng)TL0的低的低5位溢出時,向位溢出時,向TH0產(chǎn)生進位;產(chǎn)生進位;TH0溢出時,將溢出時,將定時器中斷請求標(biāo)志位定時器中斷請求標(biāo)志位TF0置置1,可申請中斷,也可對,可申請中斷,也可對TF0進進行查詢。行查詢。 圖圖4-11 定時定時/計數(shù)器計數(shù)器T0方式方式0的邏輯結(jié)構(gòu)示意圖的邏輯結(jié)構(gòu)示意圖 2. 方式方式1 當(dāng)當(dāng)M1M0=01時,定時時,定時/計數(shù)器工作于方式計數(shù)器工作于方式1。方式。方式1的計的計數(shù)位數(shù)是數(shù)位數(shù)是16位,由位,由TL0作為低作為低8位,位,TH0作為高作為高8位共同構(gòu)位共同構(gòu)成。其余操作同方式成。其余操作同方式0。圖圖4-12 定時定時/計數(shù)

15、器計數(shù)器T0方式方式1的邏輯結(jié)構(gòu)示意圖的邏輯結(jié)構(gòu)示意圖3. 方式方式2 當(dāng)當(dāng)M1M0=10時,定時時,定時/計數(shù)器工作于方式計數(shù)器工作于方式2。這是自動重。這是自動重裝初值的裝初值的8位計數(shù)方式,它省去了方式位計數(shù)方式,它省去了方式0和方式和方式1在多次重復(fù)在多次重復(fù)計數(shù)狀態(tài)下必須重新設(shè)定計數(shù)初值的麻煩,但是卻付出了計數(shù)狀態(tài)下必須重新設(shè)定計數(shù)初值的麻煩,但是卻付出了減小定時時間的代價。減小定時時間的代價。圖圖4-13 定時定時/計數(shù)器計數(shù)器T0方式方式2的邏輯結(jié)構(gòu)示意圖的邏輯結(jié)構(gòu)示意圖特別適合于制作比較精特別適合于制作比較精確的脈沖信號發(fā)生器。確的脈沖信號發(fā)生器。4. 方式方式3 方式方式3只

16、適用于定時只適用于定時/計數(shù)器計數(shù)器T0。當(dāng)。當(dāng)T1被設(shè)定為方式被設(shè)定為方式3狀態(tài)時,狀態(tài)時,將停止計數(shù)。將停止計數(shù)。 當(dāng)當(dāng)M1M0=11時,時,T0工作于方式工作于方式3。 此時此時TL0和和TH0作為兩個相互獨立的作為兩個相互獨立的8位定時位定時/計數(shù)器使用。計數(shù)器使用。TL0既可定時又可計數(shù),它使用既可定時又可計數(shù),它使用T0的各控制位、引腳和中斷源,的各控制位、引腳和中斷源,即即C/、GATE、TR0、TF0、T0P3.4引腳)、(引腳)、(P3.2引腳);引腳);TH0此時只能用作內(nèi)部定時功能,它借用了定時此時只能用作內(nèi)部定時功能,它借用了定時/計數(shù)器計數(shù)器T1的控的控制位制位TR1

17、和和T1的中斷標(biāo)志位的中斷標(biāo)志位TF1,其啟動和停止只受,其啟動和停止只受TR1控制??刂?。圖圖4-14 定時定時/計數(shù)器計數(shù)器T0方式方式3的邏輯結(jié)構(gòu)示意圖的邏輯結(jié)構(gòu)示意圖 定時器定時器T1T1無工作方式無工作方式3 3,當(dāng)定時器,當(dāng)定時器T0T0工作在方式工作在方式3 3時,定時時,定時器器T1T1可設(shè)置為方式可設(shè)置為方式0 0、方式、方式1 1和方式和方式2 2。 4.4.1應(yīng)用指導(dǎo)應(yīng)用指導(dǎo) 1定時定時/計數(shù)器的定時計數(shù)器的定時/計數(shù)范圍計數(shù)范圍 定時定時/計數(shù)器工作于不同方式下的位數(shù)不計數(shù)器工作于不同方式下的位數(shù)不同,它所具有的計數(shù)范圍也不一樣:同,它所具有的計數(shù)范圍也不一樣:l 工作

18、方式工作方式0:13位定時位定時/計數(shù)方式,因此,最多可以計數(shù)方式,因此,最多可以計到計到213,也就是,也就是8192次。次。l 工作方式工作方式1:16位定時位定時/計數(shù)方式,因此,最多可計數(shù)方式,因此,最多可 以計到以計到216,也就是,也就是65536次。次。l 工作方式工作方式2和工作方式和工作方式3:都是:都是8位定時位定時/計數(shù)方計數(shù)方 式,因此,最多可以計到式,因此,最多可以計到2 8,也就是,也就是256次。次。 如果我們需要超過計數(shù)器計數(shù)范圍的定時或計數(shù)功能,應(yīng)該怎樣做?如果我們需要超過計數(shù)器計數(shù)范圍的定時或計數(shù)功能,應(yīng)該怎樣做?4.44.4定時定時/ /計數(shù)器應(yīng)用與訓(xùn)練計

19、數(shù)器應(yīng)用與訓(xùn)練 2時間常數(shù)初值的計算時間常數(shù)初值的計算 定時定時/計數(shù)器只要預(yù)設(shè)一個時間常數(shù)初值,就可以完成不計數(shù)器只要預(yù)設(shè)一個時間常數(shù)初值,就可以完成不超過其計數(shù)范圍的任意大小的計數(shù)。算法如下:超過其計數(shù)范圍的任意大小的計數(shù)。算法如下: 定時時間常數(shù)初值定時時間常數(shù)初值X: 方式方式0 X=8192-t(fosc/12) 方式方式1 X=65536-t(fosc/12) 方式方式2、方式、方式3 X=256-t(fosc/12) 其中其中t是需要定時的時間,單位是微秒;是需要定時的時間,單位是微秒;fosc是晶振是晶振u 計數(shù)時間常數(shù)計數(shù)時間常數(shù)X:u 方式方式0 X=8192-Su 方式方

20、式1 X=65536-Su 方式方式2、方式、方式3 X=256-Su 闡明:式中闡明:式中S是需要計數(shù)的次數(shù)是需要計數(shù)的次數(shù)u 假設(shè)流水線上一個包裝是假設(shè)流水線上一個包裝是12盒,要求每到盒,要求每到12盒就產(chǎn)生一盒就產(chǎn)生一個動作,用單片機的工作方式個動作,用單片機的工作方式0來控制,應(yīng)當(dāng)預(yù)置的計數(shù)初來控制,應(yīng)當(dāng)預(yù)置的計數(shù)初值是多少呢?值是多少呢? 對了,就是對了,就是8192-12=8180。3定時定時/計數(shù)器的初始化計數(shù)器的初始化對對80C51單片機的定時單片機的定時/計數(shù)器編程的初始化方法:計數(shù)器編程的初始化方法: 對對TMOD賦值,以確定賦值,以確定T0和和T1的工作方式;的工作方式

21、; 計算時間常數(shù)初值,并將其寫入計算時間常數(shù)初值,并將其寫入TH0、TL0或或TH1、 TL1; 采用中斷定時方式時,需對采用中斷定時方式時,需對IE賦值開中斷;賦值開中斷; 置位置位TR0或或TR1,啟動定時,啟動定時/計數(shù)器。計數(shù)器。 4.4.2 4.4.2 基本訓(xùn)練基本訓(xùn)練初始化訓(xùn)練初始化訓(xùn)練 例例3:某牛奶生產(chǎn)線上一個包裝是:某牛奶生產(chǎn)線上一個包裝是12盒,要求盒,要求每生產(chǎn)每生產(chǎn)12盒就執(zhí)行裝箱操作,用盒就執(zhí)行裝箱操作,用80C51單片機來單片機來控制,請編寫初始化程序。控制,請編寫初始化程序。 1思路與計算:要確定定時器思路與計算:要確定定時器T0 或或T1),),選擇其工作方式。

22、我們以選擇其工作方式。我們以T0的工作方式的工作方式2為例,計為例,計算時間常數(shù)并賦值給算時間常數(shù)并賦值給TH0、TL0。 X=256-S=256-12=244=0F4H 2 2初始化程序:初始化程序: MOV TMODMOV TMOD,#06H #06H ;T0T0作計數(shù)器,工作于方式作計數(shù)器,工作于方式2 2 MOV TH0 MOV TH0,#0F4H #0F4H ;裝入時間常數(shù)初值;裝入時間常數(shù)初值 MOV TL0MOV TL0,#0F4H #0F4H ;自動重裝時間常數(shù);自動重裝時間常數(shù) MOV IE MOV IE ,#00H #00H ;用查詢方式確定計滿;用查詢方式確定計滿1212

23、盒?盒?(或(或MOV IE MOV IE ,#82H#82H);使用);使用T0T0中斷,計滿中斷,計滿1212盒后,盒后, ;自動申請中斷;自動申請中斷 SETB TR0 SETB TR0 ;啟動;啟動T0T0波特率發(fā)生器波特率發(fā)生器 3 3總結(jié):對計數(shù)過程是否結(jié)束有查詢和中斷兩種方法,總結(jié):對計數(shù)過程是否結(jié)束有查詢和中斷兩種方法,要合理選擇,并在程序設(shè)計中正確體現(xiàn)。要合理選擇,并在程序設(shè)計中正確體現(xiàn)。 4.4.3應(yīng)用實例應(yīng)用實例 1 定時定時/計數(shù)器用于外部脈沖寬度的測量計數(shù)器用于外部脈沖寬度的測量 (1測量原理測量原理 可以利用定時計數(shù)器方式寄存器可以利用定時計數(shù)器方式寄存器TMOD中

24、的門中的門控位控位GATE與與 引腳配合使用,控制定時計數(shù)器的引腳配合使用,控制定時計數(shù)器的啟動與停止:啟動與停止: 當(dāng)當(dāng)GATE1時,要求時,要求TR1l,且,且 為高電平,才為高電平,才能啟動定時器能啟動定時器T1計數(shù)工作;假設(shè)計數(shù)工作;假設(shè) 出現(xiàn)低電平,則出現(xiàn)低電平,則T1停止計數(shù);停止計數(shù); 當(dāng)當(dāng)GATE=0時,只要時,只要TR11就可以啟動定時器,而就可以啟動定時器,而與與 的輸入狀態(tài)無關(guān)。的輸入狀態(tài)無關(guān)。 可以利用定時計數(shù)器方式寄存器可以利用定時計數(shù)器方式寄存器TMOD中的門中的門控位控位GATE與與 引腳配合使用,控制定時計數(shù)器的引腳配合使用,控制定時計數(shù)器的啟動與停止:啟動與停

25、止: 當(dāng)當(dāng)GATE1時,要求時,要求TR1l,且,且 為高電平,才為高電平,才能啟動定時器能啟動定時器T1計數(shù)工作;假設(shè)計數(shù)工作;假設(shè) 出現(xiàn)低電平,則出現(xiàn)低電平,則T1停止計數(shù);停止計數(shù); 當(dāng)當(dāng)GATE=0時,只要時,只要TR11就可以啟動定時器,而就可以啟動定時器,而與與 的輸入狀態(tài)無關(guān)。的輸入狀態(tài)無關(guān)。 利用上述特點,將被測脈利用上述特點,將被測脈沖信號從沖信號從P3.3引入,在引入,在T1的程序初始化中令的程序初始化中令GATE1,同時同時“SETB TR1”,這樣脈,這樣脈沖信號的上升沿就能啟動沖信號的上升沿就能啟動T1計計數(shù),脈沖信號下降沿能使數(shù),脈沖信號下降沿能使T1停停止計數(shù)。利

26、用定時器止計數(shù)。利用定時器T1的計數(shù)的計數(shù)值值m乘以機器周期就可以得到乘以機器周期就可以得到被測脈沖信號的寬度被測脈沖信號的寬度TW。(2硬件電路硬件電路 硬件電路簡圖如圖硬件電路簡圖如圖4-15。 (3程序設(shè)計程序設(shè)計 利用利用80C51的內(nèi)部的內(nèi)部RAM30H、31H單元保存被測脈沖寬單元保存被測脈沖寬度對應(yīng)的計數(shù)值。度對應(yīng)的計數(shù)值。 參考程序如下:參考程序如下: ORG 0000H AJMP MAIN ORG 0100H MAIN:MOV SP,#60H ;設(shè)堆棧指針;設(shè)堆棧指針 MOV TMOD,#90H;設(shè)置控制字,;設(shè)置控制字,T1工作于方式工作于方式 ; 1,GATE=1 MOV

27、 TH1,#00H ;設(shè)定計數(shù)初值為;設(shè)定計數(shù)初值為00H MOV TL1 MOV TL1,#00H#00HL1L1: JB P3.3JB P3.3,L1 L1 ;等待輸入變?yōu)榈碗娖剑坏却斎胱優(yōu)榈碗娖?SETB TR1 SETB TR1 ;預(yù)置;預(yù)置TR1=1TR1=1,準(zhǔn)備啟動,準(zhǔn)備啟動T1T1L2L2: JNB P3.3JNB P3.3,L2 L2 ;等待上升沿,以便開始計數(shù);等待上升沿,以便開始計數(shù)L3L3: JB P3.3JB P3.3,L3 L3 ;是高電平則計數(shù)繼續(xù);是高電平則計數(shù)繼續(xù) CLR TR1 CLR TR1 ;低電平則停止計數(shù);低電平則停止計數(shù) MOV AMOV A,T

28、L1TL1 ;讀低位計數(shù)值;讀低位計數(shù)值 MOV 30HMOV 30H,A A ;低位計數(shù)值存于;低位計數(shù)值存于30H30H MOV A MOV A,TH1TH1 ;讀高位計數(shù)值;讀高位計數(shù)值 MOV 31HMOV 31H,A A ;高位計數(shù)值存于;高位計數(shù)值存于31H31H END END (4總結(jié)與思考總結(jié)與思考 定時定時/計數(shù)器還可用于測量脈沖信號的頻率、周期等。本計數(shù)器還可用于測量脈沖信號的頻率、周期等。本實例是利用定時實例是利用定時/計數(shù)器的門控位計數(shù)器的門控位GATE測量脈沖寬度。但測量脈沖寬度。但要注意,在晶振要注意,在晶振12MHz的情況下,被測脈沖寬度范圍最大為的情況下,被測

29、脈沖寬度范圍最大為655351s=65.536ms。 ,如果要測量脈沖信號的周期,該如何去做?,如果要測量脈沖信號的周期,該如何去做? 2計數(shù)器用于繞線機的控制計數(shù)器用于繞線機的控制 繞線機常用于對電機或變壓器的繞組進行繞制,圖繞線機常用于對電機或變壓器的繞組進行繞制,圖4-16是是繞線機的控制電路。當(dāng)按下工作按鈕以后,機器啟動,繞線機繞線機的控制電路。當(dāng)按下工作按鈕以后,機器啟動,繞線機在直流電機和減速齒輪的帶動下開始工作。當(dāng)繞線架上的線圈在直流電機和減速齒輪的帶動下開始工作。當(dāng)繞線架上的線圈繞到規(guī)定的圈數(shù)時,繞線機會自動停止繞線。如果再次按下工繞到規(guī)定的圈數(shù)時,繞線機會自動停止繞線。如果再

30、次按下工作按鈕,繞線機會重復(fù)以上過程。作按鈕,繞線機會重復(fù)以上過程。圖圖4-16 繞線機的控制電路繞線機的控制電路控制說明:控制說明:1軟件控制軟件控制P1.0=0時,繞線機開始繞線;時,繞線機開始繞線;P1.0=1時,繞線機不時,繞線機不繞線。繞線。 2繞線機每繞一圈,繞線機脈沖產(chǎn)生電路就產(chǎn)生一個脈沖信號。繞線機每繞一圈,繞線機脈沖產(chǎn)生電路就產(chǎn)生一個脈沖信號。 (1工作原理工作原理 由于單片機復(fù)位后由于單片機復(fù)位后P1 口的輸出狀態(tài)全部為口的輸出狀態(tài)全部為1,所以系統(tǒng),所以系統(tǒng)上電后,上電后,P1.0輸出高電平輸出高電平“1繞線機不工作。繞線機不工作。 當(dāng)按下工作按鈕以后,當(dāng)按下工作按鈕以后

31、,P1.1輸入低電平輸入低電平“0”,當(dāng)程序檢,當(dāng)程序檢測到測到P1.1=0時,在程序指令的控制下從時,在程序指令的控制下從P1.0輸出低電平輸出低電平“0”。繞線機開始繞線。繞線機每繞一圈,定時繞線機開始繞線。繞線機每繞一圈,定時/計數(shù)器計數(shù)器T1的輸入引的輸入引腳上就會產(chǎn)生一個負(fù)跳變的輸入脈沖。因此,只要用定時腳上就會產(chǎn)生一個負(fù)跳變的輸入脈沖。因此,只要用定時/計計數(shù)器數(shù)器T1的計數(shù)功能控制好輸入脈沖的個數(shù),就等于控制了繞的計數(shù)功能控制好輸入脈沖的個數(shù),就等于控制了繞線機的繞線圈數(shù)。線機的繞線圈數(shù)。 當(dāng)繞線機纏繞到指定的圈數(shù)時,定時當(dāng)繞線機纏繞到指定的圈數(shù)時,定時/計數(shù)器計數(shù)器T1引發(fā)計數(shù)

32、引發(fā)計數(shù)中斷,在程序指令的控制下,中斷,在程序指令的控制下,P1.0將輸出的高電平將輸出的高電平“1”,使,使電機停轉(zhuǎn),制動器恢復(fù)制動,于是系統(tǒng)回到最初的停機狀態(tài)。電機停轉(zhuǎn),制動器恢復(fù)制動,于是系統(tǒng)回到最初的停機狀態(tài)。 我們假設(shè)繞線架的規(guī)定匝數(shù)是我們假設(shè)繞線架的規(guī)定匝數(shù)是5000圈,為控制這個圈數(shù),圈,為控制這個圈數(shù),可以設(shè)定定時可以設(shè)定定時/計數(shù)器計數(shù)器T1用作計數(shù)器且工作在方式用作計數(shù)器且工作在方式1,于是確,于是確定其計數(shù)初值為:定其計數(shù)初值為: 初值初值=65536-5000=60536=0EC78H 所以所以TH1)=0ECH,(TL1)=78H(2控制程序控制程序 參考程序如下:參

33、考程序如下: ORG 0000H AJMP MAIN ORG 001BH AJMP COUNT ORG 0100H MAINMAIN: MOV TMODMOV TMOD,#50H #50H ;設(shè)置;設(shè)置T1T1為計數(shù)器,工作于方式為計數(shù)器,工作于方式1 1 MOV TH1 MOV TH1,#0ECH #0ECH ;設(shè)定計數(shù)初值;設(shè)定計數(shù)初值 MOV TL1MOV TL1,#78H#78H MOV SP MOV SP,#60H #60H ;設(shè)堆棧指針;設(shè)堆棧指針 SETB ET1 SETB ET1 ;開;開T1T1中斷中斷 SETB EASETB EA ;CPUCPU開中斷開中斷 CLR F0C

34、LR F0 ;用戶標(biāo)志;用戶標(biāo)志F0F0清清0 0WAIT: MOV C,P1.1;等待啟動;等待啟動 JC WAIT;P1.1=1,等待,等待 CLR P1.0;啟動設(shè)備;啟動設(shè)備 SETB TR0;T1開始計數(shù)開始計數(shù)LOOP: JNB F0,$ ;等待計數(shù);等待計數(shù)5000中斷中斷 SETB P1.0;繞線機停止工作;繞線機停止工作 CLR TR0 ;T1停止計數(shù)停止計數(shù) CLR F0 ;清;清0 SJMP WAIT;等待重新啟動;等待重新啟動 ORG 0200H;T1中斷服務(wù)程序起始地址中斷服務(wù)程序起始地址COUNT:MOV TH1,#0ECH;重新設(shè)定計數(shù)初值;重新設(shè)定計數(shù)初值 MO

35、V TL1,#78H SETB F0;用戶標(biāo)志置;用戶標(biāo)志置1 RETI ;中斷返回;中斷返回 END.4.4課題與實訓(xùn)課題與實訓(xùn)8 簡易方波發(fā)生器簡易方波發(fā)生器一一.實訓(xùn)目的實訓(xùn)目的 掌握定時器初值的計算方法掌握定時器初值的計算方法 學(xué)習(xí)定時器的使用及定時中斷程序的設(shè)計方法學(xué)習(xí)定時器的使用及定時中斷程序的設(shè)計方法 掌握方波信號發(fā)生器的設(shè)計方法掌握方波信號發(fā)生器的設(shè)計方法二二.課題要求課題要求 1基本要求:基本要求: 利用定時利用定時/計數(shù)器計數(shù)器T1,工作于方式,工作于方式0,采用查詢方式,采用查詢方式,在在P1.0引腳輸出頻率為引腳輸出頻率為500Hz的方波,并用示波器進行觀的方波,并用示

36、波器進行觀察晶振采用察晶振采用12MHz)。)。 2較高要求:較高要求: 利用定時利用定時/計數(shù)器計數(shù)器T1,工作于方式,工作于方式0,采用中斷方式,采用中斷方式,在在P1.0引腳輸出頻率為引腳輸出頻率為500Hz的方波,并用示波器進行觀的方波,并用示波器進行觀察晶振采用察晶振采用12MHz)。)。三三.背景知識背景知識 1方波產(chǎn)生原理方波產(chǎn)生原理 使使P1.0引腳的輸出狀態(tài)定時翻轉(zhuǎn),則該端口能輸出一定頻引腳的輸出狀態(tài)定時翻轉(zhuǎn),則該端口能輸出一定頻率的方波。率的方波。 2方式方式0的時間常數(shù)初值的時間常數(shù)初值 定時定時/計數(shù)器工作于方式計數(shù)器工作于方式0狀態(tài)下,定時狀態(tài)下,定時/計數(shù)的長度是計

37、數(shù)的長度是13位。位。應(yīng)用前面給出的時間常數(shù)初值的計算公式應(yīng)用前面給出的時間常數(shù)初值的計算公式 X=8192-t(fosc/12) 我們可以很方便地計算出時間常數(shù)初值,但在將其裝入定我們可以很方便地計算出時間常數(shù)初值,但在將其裝入定時時/計數(shù)器的計數(shù)器的TH、TL寄存器時,必須要注意:將計算結(jié)果的寄存器時,必須要注意:將計算結(jié)果的高高8位裝入位裝入TH1或或TH0)、低)、低5位裝入位裝入TL1或或TL0),這一),這一環(huán)節(jié)是非常容易出錯的。環(huán)節(jié)是非常容易出錯的。 以該實訓(xùn)以該實訓(xùn)T1方式方式0產(chǎn)生產(chǎn)生500Hz的方波周期是的方波周期是2ms為例,需要進行為例,需要進行1ms的定時,時間常數(shù)初

38、值的定時,時間常數(shù)初值 X=8192-110-3(12106/12)=8192- 1000=7192=1C18H=0001110000011000B 以以13位二進制數(shù)表示,是位二進制數(shù)表示,是11100000 11000B, 那么那么TL1)=00011000B=18H,(,(TH1)=11100000B=0E0H 定義定義TMOD=00000000B四四.硬件電路硬件電路該實訓(xùn)硬件電路十分簡單,見圖該實訓(xùn)硬件電路十分簡單,見圖4-17。圖圖4-17 簡易方波發(fā)生器的硬件電路簡易方波發(fā)生器的硬件電路五五.參考程序參考程序(1) P1.0輸出輸出500Hz方波方波查詢方式查詢方式 ORG 00

39、00H LJMP MAIN ;跳至主程序;跳至主程序 ORG 0100H MAIN:MOV TMOD,#00H;置;置T1工作于方式工作于方式0 MOV TH1,#0E0H;裝入時間常數(shù)初值;裝入時間常數(shù)初值 MOV TL1,#18H SETB TR1 ;啟動;啟動T1LOOP:JNB TF1,LOOP ;查詢等待;查詢等待 CLR TF1 ;清;清TF1 CPL P1.0 ;P1.0取反取反 MOV TH1,#0E0H;重新裝入時間常數(shù)初值;重新裝入時間常數(shù)初值 MOV TL1,#18H AJMP LOOP ;繼續(xù)生成波形;繼續(xù)生成波形 END (2) P1.0輸出500Hz方波中斷方式 O

40、RG 0000H LJMP MAIN ;跳至主程序 ORG 001BH ;T1的中斷入口地址 LJMP FANGBO;轉(zhuǎn)至中斷服務(wù)程序 ORG 0100H MAIN:MOV TMOD,#00H ;置T1工作于方式0 MOV TH1,#0E0H;裝入時間常數(shù)初值 MOV TL1,#18H SETB ET1 ;允許T1中斷 SETB EA ;CPU開中斷 SETB TR1 ;啟動T1 SJMP $ ;等待中斷;等待中斷FANGBO:CPL P1.0 ;P1.0取反取反 MOV TH1,#0E0H;重新裝入時間常數(shù)初值;重新裝入時間常數(shù)初值 MOV TL1,#18H RETI ;中斷返回;中斷返回

41、END六六.總結(jié)與提高總結(jié)與提高 1總結(jié)總結(jié) 本實訓(xùn)利用定時器本實訓(xùn)利用定時器T1的定時功能,以兩種形式輸出頻率的定時功能,以兩種形式輸出頻率為為500Hz方波。在實際應(yīng)用中,方波的頻率可能要根據(jù)現(xiàn)場方波。在實際應(yīng)用中,方波的頻率可能要根據(jù)現(xiàn)場測量參數(shù)、給定參數(shù)或按照某種函數(shù)關(guān)系而變化。因此輸出測量參數(shù)、給定參數(shù)或按照某種函數(shù)關(guān)系而變化。因此輸出波形的頻率在編程時還是未知的。波形的頻率在編程時還是未知的。2提高提高 定時定時/計數(shù)器的計時范圍有限,當(dāng)晶振采用計數(shù)器的計時范圍有限,當(dāng)晶振采用12MHz時,時,方式方式1的計時時間最長,也只有的計時時間最長,也只有65.536ms。當(dāng)需要定時的。當(dāng)

42、需要定時的時間超出了定時時間超出了定時/計數(shù)器的計數(shù)范圍,如需定時計數(shù)器的計數(shù)范圍,如需定時2秒,這時秒,這時可以采用以下兩種方法來處理:可以采用以下兩種方法來處理: 定時器定時器+軟件計數(shù)的方法軟件計數(shù)的方法 思路是:利用定時思路是:利用定時/計數(shù)器計數(shù)器T1,工作于方式,工作于方式1,實現(xiàn),實現(xiàn)50 ms/次的定時,只要定時次的定時,只要定時40次即可實現(xiàn)次即可實現(xiàn)2s定時。定時??梢运愠龆〞r可以算出定時/計數(shù)器計數(shù)器T1工作于方式工作于方式1時,時間常數(shù)初值為時,時間常數(shù)初值為 X=65536-t(fosc/12)=65536-5010-3(12106/12) =15536=3CB0H

43、于是于是TH1)=3CH ,(,(TL1)=0B0H。 定義定義TMOD=00010000B,此處只給出延時,此處只給出延時2s的查詢方的查詢方式子程序。式子程序。DELAY:MOV R3,#40 ;設(shè)置定時器溢出次數(shù);設(shè)置定時器溢出次數(shù) SETB TR1 ;啟動;啟動T1開始計時開始計時 D1: MOV TH1,#3CH ;裝入時間常數(shù)初值;裝入時間常數(shù)初值 MOV TL1,#0B0HD2:JBC TF1,D3;TF1為為1否否?是則跳至是則跳至D3,并清,并清TF1, AJMP D2 ;否,則跳至;否,則跳至D2 D3:DJNZ R3,D1;R3=0?不是,跳到?不是,跳到D1 CLR T

44、R1 ;是,則停止計數(shù);是,則停止計數(shù) RET采用兩個定時器串聯(lián)的方法采用兩個定時器串聯(lián)的方法 思路是:思路是: 將兩個定時器中的一個如將兩個定時器中的一個如T0設(shè)置為定時方式,另設(shè)置為定時方式,另一個一個T1設(shè)置成計數(shù)方式;將定時器設(shè)置成計數(shù)方式;將定時器T0計滿產(chǎn)生的輸計滿產(chǎn)生的輸出,通過一根出,通過一根I/O口線如口線如P1.0連接到計數(shù)器連接到計數(shù)器T1的計數(shù)的計數(shù)脈沖輸入端脈沖輸入端P3.5,從而實現(xiàn)更長時間的定時。,從而實現(xiàn)更長時間的定時。.5.5中斷與定時計數(shù)器綜合應(yīng)用舉例中斷與定時計數(shù)器綜合應(yīng)用舉例 4.5.1 4.5.1 概述概述 定時定時/計數(shù)功能與中斷一樣,都是單片機的常

45、用功能。計數(shù)功能與中斷一樣,都是單片機的常用功能。兩者常常同時使用。如實訓(xùn)兩者常常同時使用。如實訓(xùn)7就是簡單的中斷、定時綜合就是簡單的中斷、定時綜合應(yīng)用實例。在這類程序的編制過程中,要注意這樣幾個應(yīng)用實例。在這類程序的編制過程中,要注意這樣幾個問題:問題:l 選擇合適的中斷和定時選擇合適的中斷和定時/計數(shù)方式。計數(shù)方式。l 如外部中斷是采用電平觸發(fā)還是脈沖下降沿觸發(fā);如外部中斷是采用電平觸發(fā)還是脈沖下降沿觸發(fā);定時定時/計數(shù)是用自動重裝方式還是每次定時結(jié)束后用軟件計數(shù)是用自動重裝方式還是每次定時結(jié)束后用軟件重裝。重裝。l 確定定時結(jié)束的判別方法,用中斷還是查詢。確定定時結(jié)束的判別方法,用中斷還

46、是查詢。l 如采用中斷,與其它中斷的優(yōu)先級如何確定,是否會如采用中斷,與其它中斷的優(yōu)先級如何確定,是否會影響系統(tǒng)功能。影響系統(tǒng)功能。l 正確初始化。正確初始化。l 合理分配控制功能。合理分配控制功能。 .5.2課題與實訓(xùn)課題與實訓(xùn)9 音樂門鈴音樂門鈴一一.實訓(xùn)目的實訓(xùn)目的 1. 掌握中斷與定時掌握中斷與定時/計數(shù)綜合程序的設(shè)計方法計數(shù)綜合程序的設(shè)計方法 2.學(xué)習(xí)音樂門鈴的設(shè)計過程學(xué)習(xí)音樂門鈴的設(shè)計過程二二.課題要求課題要求 在單片機在單片機P1.0引腳外接揚聲器,唱出引腳外接揚聲器,唱出歌。歌。三三.背景知識背景知識 1.音頻脈沖的產(chǎn)生音頻脈沖的產(chǎn)生 聲音的頻譜范圍約在幾十到幾千赫茲,若能利用

47、程序來控制聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制單片機某個口線的單片機某個口線的“高電平或高電平或“低電平,則在該口線上就低電平,則在該口線上就能產(chǎn)生一定頻率的方波,接上喇叭就能發(fā)出一定頻率的聲音,能產(chǎn)生一定頻率的方波,接上喇叭就能發(fā)出一定頻率的聲音,若再利用延時程序控制若再利用延時程序控制“高高”“”“低電平的持續(xù)時間,就能改低電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào)。變輸出頻率,從而改變音調(diào)。 例如,要產(chǎn)生中音例如,要產(chǎn)生中音1。從表。從表4-5可知,中音可知,中音1的頻率為的頻率為523Hz,周期周期T=1/523=1912s,其半周期為,其半周期為1912/2=95

48、6s,因此只要,因此只要在在P1.0引腳產(chǎn)生半周期為引腳產(chǎn)生半周期為956s的方波,即可聽到持續(xù)的的方波,即可聽到持續(xù)的1音。音。C調(diào)各音符頻率與計數(shù)初值的對應(yīng)表如下:調(diào)各音符頻率與計數(shù)初值的對應(yīng)表如下:注:不發(fā)音的簡譜碼用注:不發(fā)音的簡譜碼用“0表示表示 2音樂節(jié)拍的生成音樂節(jié)拍的生成 要唱出一首歌,只產(chǎn)生出音頻脈沖還不夠,還要考慮節(jié)要唱出一首歌,只產(chǎn)生出音頻脈沖還不夠,還要考慮節(jié)拍。拍。 定義:每個音符占用一個字節(jié),字節(jié)的高定義:每個音符占用一個字節(jié),字節(jié)的高4位代表音符的位代表音符的高低,低高低,低4位表示該音符的節(jié)拍,如果一拍為位表示該音符的節(jié)拍,如果一拍為0.4秒,則秒,則1/4拍拍

49、是是0.1秒,只要設(shè)定延遲時間就可獲得節(jié)拍的時間。我們也可秒,只要設(shè)定延遲時間就可獲得節(jié)拍的時間。我們也可以設(shè)以設(shè)1/4拍為拍為1個個DELAY,則則1拍應(yīng)該是拍應(yīng)該是4個個DELAY,只要求得,只要求得1/4拍的拍的DELAY時間,其余的節(jié)拍就是它的倍數(shù)。見表時間,其余的節(jié)拍就是它的倍數(shù)。見表 表表4-6 節(jié)拍與節(jié)拍碼對照表節(jié)拍與節(jié)拍碼對照表 3.建立音樂的步驟:建立音樂的步驟: 先把譜的音符找出,然后由上表建立時間常數(shù)初值先把譜的音符找出,然后由上表建立時間常數(shù)初值T的順序的順序表,標(biāo)號為表,標(biāo)號為TABLE1。 建立音符和節(jié)拍表,標(biāo)號為建立音符和節(jié)拍表,標(biāo)號為TABLE,將構(gòu)成發(fā)音符的計

50、數(shù)值,將構(gòu)成發(fā)音符的計數(shù)值放在其中。放在其中。 TABLE表的結(jié)構(gòu)為:簡譜碼代表音符為高表的結(jié)構(gòu)為:簡譜碼代表音符為高4位,節(jié)拍碼位,節(jié)拍碼表示節(jié)拍數(shù)為低表示節(jié)拍數(shù)為低4位,在唱歌程序中對每一個有節(jié)拍的音位,在唱歌程序中對每一個有節(jié)拍的音符能通過設(shè)計共同生成音符節(jié)拍碼,本程序的音符節(jié)拍碼表見符能通過設(shè)計共同生成音符節(jié)拍碼,本程序的音符節(jié)拍碼表見表表4-5。(11/4拍的延遲時間拍的延遲時間=187毫秒毫秒DELAY:MOV R5,#02 D1:MOV R4,#187 D2:MOV R3,#248 DJNZ R3,$ DJNZ R4,D2 DJNZ R5,D1 DJNZ R6,DELAY RET

51、 (2歌譜歌譜 生日快樂歌生日快樂歌 C3/45 . 5 6 5 7 -5 . 5 6 5 -祝祝 你生日你生日 快快 樂樂 祝祝 他他 生生 日日 快快 樂樂5 . 5 7 6-我我 們高聲們高聲 歌歌 唱唱 祝祝 你生日你生日 快快 樂樂 四四.硬件電路硬件電路圖圖4-18 音樂的應(yīng)用音樂的應(yīng)用 電路電路 五五.參考程序參考程序 ORG 0000H LJMP MAIN ;跳至主程序;跳至主程序 ORG 001BH ;T1的中斷入口地址的中斷入口地址 LJMP TIM1 ;轉(zhuǎn)至中斷服務(wù)程序;轉(zhuǎn)至中斷服務(wù)程序 ORG 0100H MAIN:MOV TMOD,#10H ;置;置T1工作于方式工作

52、于方式1 SETB ET1 ;開;開T1中斷中斷 SETB EA ;CPU開中斷開中斷 MAIN1: MOV 60H,#00H ;取簡譜碼指針;取簡譜碼指針 NEXT: MOV A,60H ;簡譜碼指針裝入;簡譜碼指針裝入A MOV DPTR,#TABLE ;指向簡譜碼;指向簡譜碼TABLE表地址表地址 MOVC A,A+DPTR ;簡譜碼存入;簡譜碼存入A MOV R1,A ;簡譜碼暫存;簡譜碼暫存R1 JZ STOP ;是否取到結(jié)束碼;是否取到結(jié)束碼00? ANL A,#0FH ;沒有,則取低;沒有,則取低4位的節(jié)拍碼位的節(jié)拍碼 MOV R6,A ;取到的節(jié)拍碼存入;取到的節(jié)拍碼存入R6

53、MOV A, R1 ;將取到的簡譜碼再裝入;將取到的簡譜碼再裝入A SWAP A ;高低;高低4位交換位交換 ANL A,#0FH ;取低;取低4位的音符碼位的音符碼 JNZ SING ;取到的音符碼是否為;取到的音符碼是否為0? CLR TR1 ;是,則不發(fā)音;是,則不發(fā)音 AJMP DT ;轉(zhuǎn)至;轉(zhuǎn)至DTSING: DEC A ;對取到的非;對取到的非0音符碼減音符碼減1 MOV 22H,A ;音符碼暫存;音符碼暫存22H RL A;乘;乘2 MOV DPTR,#TABLE1 ;至;至TABLE1取與高字節(jié)相取與高字節(jié)相 ;對應(yīng)的頻率初值;對應(yīng)的頻率初值 MOVC A,A+DPTR ; M

54、OV TH1,A ;取到的高字節(jié)存入;取到的高字節(jié)存入TH1 MOV 21H,A ;取到的高字節(jié)存入;取到的高字節(jié)存入21H MOV A, 22H ;重裝取到的音符碼;重裝取到的音符碼 RL A;乘;乘2 INC A;加;加1 MOVC A,A+DPTR ;至;至TABLE1取與低字節(jié)相對取與低字節(jié)相對 ;應(yīng)的頻率初值;應(yīng)的頻率初值 MOV TL1,A ;取到的低字節(jié)存入;取到的低字節(jié)存入TL1 MOV 20H,A ;取到的低字節(jié)存入;取到的低字節(jié)存入20H SETB TR1 ;啟動;啟動T1,開始計時,開始計時DT: LCALL DELAY ;1/4拍的基本單位時間拍的基本單位時間187毫秒

55、毫秒 INC 60H ;將簡譜碼指針加;將簡譜碼指針加1 AJMP NEXT ;取下一個碼;取下一個碼STOP: CLR TR1 ;計時停止;計時停止 AJMP MAIN1 ;重復(fù)循環(huán);重復(fù)循環(huán) TIM1: PUSH ACC ;保護;保護A值值 PUSH PSW ;保護;保護PSW MOV TH1,21H ;重裝入時間常數(shù)初值;重裝入時間常數(shù)初值 MOV TL1,20H ;重裝入時間常數(shù)初值;重裝入時間常數(shù)初值 CPL P1.0 ;P1.0取反,發(fā)聲取反,發(fā)聲 POP PSW ;恢復(fù);恢復(fù)PSW POP ACC ;恢復(fù);恢復(fù)A RETIDELAY: MOV R5,#2 ;187毫秒子程序,決定

56、音樂節(jié)拍毫秒子程序,決定音樂節(jié)拍 D2: MOV R4,#187 ; D3: MOV R3,#248; DJNZ R3,$; DJNZ R4,D3; DJNZ R5,D2; DJNZ R6,DELAY; RETTABLE1: DW 64260,64400,64524,64580 DW 64684,64777,64820,64898 DW 64968,65030,65058,65110 DW 65157,65178,65217 TABLE: ;1 DB 82H,01H,81H,94H,84H DB 0B4H,0A4H,04H DB 82H,01H,81H,94H,84H DB 0C4H,0B4H

57、,04H DB 0E2H,01H,0E1H,0D4H,0B4HDB 0C4H,0B4H,04HDB 00END六六.總結(jié)與提高總結(jié)與提高制作音樂門鈴的關(guān)鍵就是對樂譜建表,包括制作音樂門鈴的關(guān)鍵就是對樂譜建表,包括T值表和簡值表和簡碼表。以表碼表。以表4-5的的T值表為例,對于簡單的樂譜,只需再增加高值表為例,對于簡單的樂譜,只需再增加高音區(qū)和低音區(qū)的幾個音符,其余部分不變;而簡碼表則不然,音區(qū)和低音區(qū)的幾個音符,其余部分不變;而簡碼表則不然,它要隨著每個音的音符和節(jié)拍而定,因曲目而異。它要隨著每個音的音符和節(jié)拍而定,因曲目而異。;2 DB 82H,01H,81H,0F4H,0D4H DB 0B

58、4H,0A4H,94H 下面給出下面給出的樂譜,你能制作出它的音樂門的樂譜,你能制作出它的音樂門鈴嗎?鈴嗎? 兩只老虎兩只老虎 4/4 1 2 3 11 2 3 13 4 53 4 5 兩只老虎兩只老虎 兩只老虎兩只老虎 跑得快跑得快跑得快跑得快 5 6 5 4 3 15 6 5 4 3 11 5 11 5 1 一只沒有耳朵一只沒有耳朵 一只沒有尾巴一只沒有尾巴 真奇怪真奇怪 真奇怪真奇怪 4.64.6外部中斷源的擴展外部中斷源的擴展 在單片機控制系統(tǒng)中,外部中斷的使用非常重要,通過在單片機控制系統(tǒng)中,外部中斷的使用非常重要,通過它可以中斷它可以中斷CPU的運行,轉(zhuǎn)去處理更為緊迫的外部事務(wù),如

59、的運行,轉(zhuǎn)去處理更為緊迫的外部事務(wù),如報警、電源掉電保護等。報警、電源掉電保護等。 80C51單片機僅提供了兩個外部中斷源,在實際控制系單片機僅提供了兩個外部中斷源,在實際控制系統(tǒng)中可能出現(xiàn)多個外部中斷,因此有必要對外部中斷源進行統(tǒng)中可能出現(xiàn)多個外部中斷,因此有必要對外部中斷源進行擴展。擴展。4.6.14.6.1利用定時器溢出中斷擴展外部中斷源利用定時器溢出中斷擴展外部中斷源 即把內(nèi)部不使用的定時即把內(nèi)部不使用的定時/計數(shù)器出借給外部中斷使用,計數(shù)器出借給外部中斷使用,方法如下:方法如下: 將將80C51單片機閑置的定時單片機閑置的定時/計數(shù)器的初值設(shè)為全計數(shù)器的初值設(shè)為全1,只要從計數(shù)引腳只

60、要從計數(shù)引腳T0/T1輸入一個脈沖就可以使其引起中輸入一個脈沖就可以使其引起中斷。斷??梢圆捎孟旅娴某绦虺跏蓟梢圆捎孟旅娴某绦虺跏蓟疶1: MOV TMOD,#60H ;T1工作于方式工作于方式2 MOV TL1,#0FFH;設(shè)為全;設(shè)為全1 MOV TH1,#0FFH SETB TR1 ;啟動;啟動T1 SETB ET1 ;開;開T1中斷中斷 SETB EA ;CPU開中斷開中斷 中斷服務(wù)程序中斷服務(wù)程序 RETI4.6.24.6.2利用中斷與查詢相結(jié)合的方式擴展利用中斷與查詢相結(jié)合的方式擴展 電路如圖電路如圖419所示,當(dāng)所示,當(dāng)CPU檢測到檢測到 的中斷請求信的中斷請求信號時,由號時,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論