![單片機技術(shù)及應(yīng)用(基于Proteus 的匯編和C語言版)項目6 定時計數(shù)器控制及應(yīng)用_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/d44b5895-1c0c-4ff2-82d7-f7eee6d4aceb/d44b5895-1c0c-4ff2-82d7-f7eee6d4aceb1.gif)
![單片機技術(shù)及應(yīng)用(基于Proteus 的匯編和C語言版)項目6 定時計數(shù)器控制及應(yīng)用_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/d44b5895-1c0c-4ff2-82d7-f7eee6d4aceb/d44b5895-1c0c-4ff2-82d7-f7eee6d4aceb2.gif)
![單片機技術(shù)及應(yīng)用(基于Proteus 的匯編和C語言版)項目6 定時計數(shù)器控制及應(yīng)用_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/d44b5895-1c0c-4ff2-82d7-f7eee6d4aceb/d44b5895-1c0c-4ff2-82d7-f7eee6d4aceb3.gif)
![單片機技術(shù)及應(yīng)用(基于Proteus 的匯編和C語言版)項目6 定時計數(shù)器控制及應(yīng)用_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/d44b5895-1c0c-4ff2-82d7-f7eee6d4aceb/d44b5895-1c0c-4ff2-82d7-f7eee6d4aceb4.gif)
![單片機技術(shù)及應(yīng)用(基于Proteus 的匯編和C語言版)項目6 定時計數(shù)器控制及應(yīng)用_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/16/d44b5895-1c0c-4ff2-82d7-f7eee6d4aceb/d44b5895-1c0c-4ff2-82d7-f7eee6d4aceb5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、定時計數(shù)器控制及應(yīng)用定時計數(shù)器控制及應(yīng)用項目項目6 6 定時定時/計數(shù)器控制及應(yīng)用計數(shù)器控制及應(yīng)用 知識與能力目標知識與能力目標熟悉單片機定時熟悉單片機定時/計數(shù)器的結(jié)構(gòu)與功能;計數(shù)器的結(jié)構(gòu)與功能;1掌握定時掌握定時/計數(shù)器在各個模式下的程序初始化過程;計數(shù)器在各個模式下的程序初始化過程;2學會并掌握定時學會并掌握定時/計數(shù)器初始值的分析與計算;計數(shù)器初始值的分析與計算;34理解并掌握定時理解并掌握定時/計數(shù)器的編程與控制方法;計數(shù)器的編程與控制方法;65初步學會定時初步學會定時/計數(shù)器應(yīng)用程序的分析與設(shè)計。計數(shù)器應(yīng)用程序的分析與設(shè)計。熟練使用熟練使用Proteus進行單片機應(yīng)用程序開發(fā)與調(diào)試
2、。進行單片機應(yīng)用程序開發(fā)與調(diào)試。項目項目6 定時定時/計數(shù)器控制及應(yīng)用計數(shù)器控制及應(yīng)用 1 定時定時/計數(shù)器結(jié)構(gòu)與功能分析計數(shù)器結(jié)構(gòu)與功能分析2 定時定時/計數(shù)器編程與控制計數(shù)器編程與控制任務(wù)任務(wù)6.1 定時定時/計數(shù)器分析與控制計數(shù)器分析與控制1 控制要求與功能展示控制要求與功能展示2 硬件系統(tǒng)與控制流程分析硬件系統(tǒng)與控制流程分析3 匯編語言程序分析與設(shè)計匯編語言程序分析與設(shè)計4 C語言程序分析與設(shè)計語言程序分析與設(shè)計任務(wù)任務(wù)6.2 簡易定時鬧鐘控制簡易定時鬧鐘控制任務(wù)任務(wù)6.3 簡易按鍵計數(shù)器控制簡易按鍵計數(shù)器控制1 控制要求與功能展示控制要求與功能展示2 硬件系統(tǒng)與控制流程分析硬件系統(tǒng)與
3、控制流程分析3 匯編語言程序分析與設(shè)計匯編語言程序分析與設(shè)計4 C語言程序分析與設(shè)計語言程序分析與設(shè)計5 基于基于Proteus的調(diào)試與仿真的調(diào)試與仿真 6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功能分析計數(shù)器結(jié)構(gòu)與功能分析 定時定時/ /計數(shù)器是單片機系統(tǒng)的一個重要部件,此外計數(shù)器是單片機系統(tǒng)的一個重要部件,此外定時定時/ /計數(shù)器還可用作為串口通信中波特率發(fā)生器。計數(shù)器還可用作為串口通信中波特率發(fā)生器。 工作工作方式靈活方式靈活使用方便使用方便編程簡單編程簡單定時定時/計數(shù)器計數(shù)器信號檢測信號檢測定時控制定時控制延時時信號發(fā)生信號發(fā)生脈寬測量脈寬測量頻率測量頻率測量定時定時/計數(shù)器
4、計數(shù)器6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功能分析計數(shù)器結(jié)構(gòu)與功能分析 1、定時、定時/計數(shù)器的組成計數(shù)器的組成 6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功能分析計數(shù)器結(jié)構(gòu)與功能分析 (1)設(shè)置定時)設(shè)置定時/計數(shù)器的工作方式計數(shù)器的工作方式 通過對方式寄存器通過對方式寄存器TMOD的設(shè)置,確定相應(yīng)的定時的設(shè)置,確定相應(yīng)的定時/計數(shù)器是計數(shù)器是定時功能還是計數(shù)功能,以及工作方式及啟動方法。定時功能還是計數(shù)功能,以及工作方式及啟動方法。 (2)設(shè)置計數(shù)初值)設(shè)置計數(shù)初值 定時定時/計數(shù)器允許用戶編程設(shè)定開始計數(shù)的數(shù)值,稱為賦初計數(shù)器允許用戶編程設(shè)定開始計數(shù)的數(shù)值,稱為賦初
5、值。初值不同,則計數(shù)器產(chǎn)生溢出時,計數(shù)個數(shù)也不同。值。初值不同,則計數(shù)器產(chǎn)生溢出時,計數(shù)個數(shù)也不同。 定時定時/ /計數(shù)器的工作過程如下:計數(shù)器的工作過程如下: 6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功能分析計數(shù)器結(jié)構(gòu)與功能分析 定時定時/ /計數(shù)器的工作過程如下:計數(shù)器的工作過程如下: (3)啟動定時)啟動定時/計數(shù)器計數(shù)器 當設(shè)置了定時器的工作方式并啟動定時器工作后,定時器就當設(shè)置了定時器的工作方式并啟動定時器工作后,定時器就按被設(shè)定的工作方式獨立工作,不再占用按被設(shè)定的工作方式獨立工作,不再占用CPU的操作時間,只有的操作時間,只有在計數(shù)器計數(shù)溢出時才能中斷在計數(shù)器計數(shù)溢出時
6、才能中斷CPU當前的操作。當前的操作。 (4)計數(shù)溢出)計數(shù)溢出 計數(shù)溢出標志位在控制寄存器計數(shù)溢出標志位在控制寄存器TCON中,用于通知用戶定時中,用于通知用戶定時/計計數(shù)器已經(jīng)計滿,用戶可以采用查詢方式或中斷方式進行操作。數(shù)器已經(jīng)計滿,用戶可以采用查詢方式或中斷方式進行操作。 6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功能分析計數(shù)器結(jié)構(gòu)與功能分析 2、定時、定時/計數(shù)器的控制寄存器計數(shù)器的控制寄存器 (1)定時)定時/計數(shù)器的控制寄存器計數(shù)器的控制寄存器TCON :既參與中斷控制又參與定:既參與中斷控制又參與定時控制時控制表表6-1 TCON6-1 TCON寄存器的結(jié)構(gòu)寄存器的結(jié)構(gòu)
7、TCON(88H)D7D6D5D4D3D2D1D0位名稱TF1TR1TF0TR0IE1IT1IE0IT0位含義T1的溢出中斷標志位T1的啟動停止控制位T0的溢出中斷標志位T0的啟動停止控制位INT1中斷請求標志位INT1觸發(fā)方式控制位INT0中斷請求標志位INT0觸發(fā)方式控制位位地址8FH8EH8DH8CH8BH8AH89H88H6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功能分析計數(shù)器結(jié)構(gòu)與功能分析 2 2、定時、定時/ /計數(shù)器的控制寄存器計數(shù)器的控制寄存器 (2 2)定時定時/ /計數(shù)器的工作方式控制寄存器計數(shù)器的工作方式控制寄存器TMOD TMOD 定時定時/ /計數(shù)器計數(shù)器T0
8、T0定時定時/ /計數(shù)器計數(shù)器T1T1表表6-2 TMOD6-2 TMOD寄存器的結(jié)構(gòu)寄存器的結(jié)構(gòu)TMOD(89H)TMOD(89H)D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0位名稱位名稱GATEGATEC/C/ M1M1M0M0GATEGATEC/C/ M1M1M0位含義位含義T1T1門門控位控位模式模式選擇選擇位位工作方式選工作方式選擇位擇位T0T0門門控位控位模式模式選擇選擇位位工作方式選工作方式選擇位擇位TT6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功能分析計數(shù)器結(jié)構(gòu)與功能分析 2 2、定時、定時/ /計數(shù)器的控制寄存器計數(shù)器的控制寄存器 M0、M1工作方式選
9、擇位工作方式選擇位M0和和M1兩位二進制數(shù)可表示兩位二進制數(shù)可表示4種狀態(tài),通過種狀態(tài),通過M1和和M0可選擇可選擇4種種工作方式工作方式 表表6-3 6-3 工作方式工作方式M1M1、M0M0工作方工作方式式功功 能能M1M1、M0M0工作方工作方式式功功 能能0 00 0方式方式0 01313位計數(shù)器位計數(shù)器1 01 0方式方式2 28 8位計數(shù)器,初值自位計數(shù)器,初值自動裝入動裝入0 10 1方式方式1 11616位計數(shù)器位計數(shù)器1 11 1方式方式3 3T0T0:兩個:兩個8 8位計數(shù)器位計數(shù)器T1: T1: 停止計數(shù)停止計數(shù)6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功能分析計
10、數(shù)器結(jié)構(gòu)與功能分析 最大計數(shù)值最大計數(shù)值M=8192 定時時間為:(定時時間為:(8192-初值)初值)x時鐘周期時鐘周期x12 3、定時、定時/計數(shù)器的工作方式計數(shù)器的工作方式 (1)工作方式)工作方式0:M1、M0=00 6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功能分析計數(shù)器結(jié)構(gòu)與功能分析 (1)工作方式)工作方式0:M1、M0=00 工作于方式工作于方式0下的下的13位定時位定時/計數(shù)器計數(shù)器 內(nèi)部計數(shù)器為內(nèi)部計數(shù)器為1313位,由位,由TLiTLi低低5 5位(高位(高3 3位未用,一般清位未用,一般清零)和零)和THiTHi高高8 8位組成。位組成。TLiTLi低低5 5位
11、計數(shù)滿時不向位計數(shù)滿時不向TLiTLi的第六位的第六位進位,而是直接向進位,而是直接向THiTHi進位。當進位。當1313位計數(shù)計滿溢出,溢出標位計數(shù)計滿溢出,溢出標志位志位TFiTFi置位。置位。 3 3、定時、定時/ /計數(shù)器的工作方式計數(shù)器的工作方式 6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功能分析計數(shù)器結(jié)構(gòu)與功能分析 例如:當晶振為例如:當晶振為12M時,機器周期為時,機器周期為1us,試著配置定時器,試著配置定時器1工工作于方式作于方式0定時時間定時時間5ms的初值。的初值。 由于方式由于方式0采用采用13位計數(shù)器,其最大定時時間為:位計數(shù)器,其最大定時時間為:8192x1
12、us=8.192ms,大于定時時間,大于定時時間5ms,則計數(shù)值為,則計數(shù)值為5ms/1us=5000,T1的初值為:的初值為: X=M-計數(shù)值計數(shù)值=8192-5000=3192=C78H=0110001111000B 13位計數(shù)器中位計數(shù)器中TL1的高的高3位未用,填寫位未用,填寫0,TH1占高占高8位,所以位,所以X的實際填寫值應(yīng)為:的實際填寫值應(yīng)為: X=0110001100011000B=6318H 3、定時、定時/計數(shù)器的工作方式計數(shù)器的工作方式 (1)工作方式)工作方式0:M1、M0=00 6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功能分析計數(shù)器結(jié)構(gòu)與功能分析 3、定時、
13、定時/計數(shù)器的工作方式計數(shù)器的工作方式 (2)工作方式)工作方式1:M1、M0=01最大計數(shù)值最大計數(shù)值M=65536定時時間為:(定時時間為:(65536-初值)初值)X 時鐘周期時鐘周期 X 12 6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功能分析計數(shù)器結(jié)構(gòu)與功能分析 3、定時、定時/計數(shù)器的工作方式計數(shù)器的工作方式 (3)工作方式)工作方式2:M1、M0=10最大計數(shù)值最大計數(shù)值M=256 定時時間為:(定時時間為:(256-初值)初值)X時鐘周期時鐘周期 X 12 6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功能分析計數(shù)器結(jié)構(gòu)與功能分析 3、定時、定時/計數(shù)器的工作方式計
14、數(shù)器的工作方式 (3)工作方式)工作方式2:M1、M0=10 工作方式工作方式2具有初值自動裝載功能,適合用于比較精準的定時場合。具有初值自動裝載功能,適合用于比較精準的定時場合。 TLiTLi用作用作8 8位計數(shù)器,位計數(shù)器,THiTHi用來保持初值。用來保持初值。 編程時,編程時,TLiTLi和和THiTHi必須由軟件賦予相同的初值。必須由軟件賦予相同的初值。一旦一旦TLiTLi計數(shù)溢出,計數(shù)溢出,TFiTFi將被置位,同時將被置位,同時THiTHi中保存的初值自動裝入中保存的初值自動裝入TLiTLi,進,進入新一輪計數(shù)。入新一輪計數(shù)。 6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功
15、能分析計數(shù)器結(jié)構(gòu)與功能分析 3、定時、定時/計數(shù)器的工作方式計數(shù)器的工作方式 (4)工作方式)工作方式3:M1、M0=11只有只有T0可以設(shè)置為工作方式可以設(shè)置為工作方式3,T1設(shè)置為工作方式設(shè)置為工作方式3后不工作后不工作 T0被分解成兩個獨立的被分解成兩個獨立的8位計數(shù)器位計數(shù)器TL0和和TH0 6.1.1 6.1.1 定時定時/ /計數(shù)器結(jié)構(gòu)與功能分析計數(shù)器結(jié)構(gòu)與功能分析 3、定時、定時/計數(shù)器的工作方式計數(shù)器的工作方式 (4)工作方式)工作方式3:M1、M0=11當當T0T0在工作方式在工作方式3 3時,時,T1T1仍可設(shè)置為方式仍可設(shè)置為方式0 0、方式、方式1 1或方式或方式2 2
16、。由于由于TR1TR1、TF1TF1和和T1T1中斷源已被中斷源已被T0T0占用,定時器占用,定時器T1T1僅由控制位僅由控制位C/ C/ 切換其定時或計數(shù)功能。切換其定時或計數(shù)功能。當當T1T1計數(shù)器計滿溢出時,只能將輸出送往串行口。計數(shù)器計滿溢出時,只能將輸出送往串行口。T1T1一般用一般用作串行口波特率發(fā)生器或不需要中斷的場合。作串行口波特率發(fā)生器或不需要中斷的場合。當設(shè)置好工作方式后,當設(shè)置好工作方式后,T1T1自動開始計數(shù);當送入一個設(shè)置自動開始計數(shù);當送入一個設(shè)置T1T1為工作方式為工作方式3 3的方式字后,的方式字后,T1T1停止計數(shù)。停止計數(shù)。6.1.2 6.1.2 定時定時/
17、 /計數(shù)器編程與控制計數(shù)器編程與控制 6.1.2 6.1.2 定時定時/ /計數(shù)器編程與控制計數(shù)器編程與控制 (1)中斷方式)中斷方式編程步驟編程步驟設(shè)置中斷優(yōu)先級,當設(shè)置中斷優(yōu)先級,當中斷只有一個時不用中斷只有一個時不用設(shè)置設(shè)置設(shè)置設(shè)置TMOD初初始化始化設(shè)置定時設(shè)置定時/計計數(shù)初值數(shù)初值啟動定時啟動定時/計計數(shù)器數(shù)器編寫定時編寫定時/計數(shù)計數(shù)器中斷的處理器中斷的處理服務(wù)程序服務(wù)程序1 2 4 5 6 3 編程編程步驟步驟開中斷開中斷6.1.2 6.1.2 定時定時/ /計數(shù)器編程與控制計數(shù)器編程與控制 (1 1)中斷方式)中斷方式匯編語言編寫匯編語言編寫 ORG 0000H ORG 000
18、0H LJMP MAIN LJMP MAIN ORG 000BH ORG 000BH ; T0T0中斷入口地址中斷入口地址 LJMP TIMER0 LJMP TIMER0 ORG 0030H ORG 0030H MAIN:SETB EA MAIN:SETB EA ;開總中斷;開總中斷 SETB ET0SETB ET0 ;開定時器;開定時器T0T0中斷中斷 MOV TMOD,#XXH MOV TMOD,#XXH ;設(shè)置;設(shè)置TMODTMOD MOV TH0,#XXH MOV TH0,#XXH ;設(shè)置;設(shè)置TH0TH0、TL0TL0 MOV TL0,#XXH MOV TL0,#XXH SETB T
19、R0 SETB TR0 ;啟動定時器;啟動定時器T0T0 TIMER0:TIMER0: ;中斷服務(wù)程序;中斷服務(wù)程序 RETIRETI6.1.2 6.1.2 定時定時/ /計數(shù)器編程與控制計數(shù)器編程與控制 (1 1)中斷方式)中斷方式 CC語言編寫語言編寫#include#includevoid main( )void main( ) IE=0X83 IE=0X83; /開中斷開中斷 TMOD=0XXXTMOD=0XXX; / / 設(shè)置設(shè)置TMODTMOD TH0=0XXX TH0=0XXX; / / 設(shè)置設(shè)置TH0TH0、TL0TL0 TL0=0XXX TL0=0XXX; TR0=1TR0=
20、1; / / 啟動定時器啟動定時器T0T0 ; /=/=中斷服務(wù)程序中斷服務(wù)程序=void timer0( ) interrupt 1 / T0void timer0( ) interrupt 1 / T0中斷服務(wù)子程序中斷服務(wù)子程序 ; 6.1.2 6.1.2 定時定時/ /計數(shù)器編程與控制計數(shù)器編程與控制 (1 1)查詢方式)查詢方式 編程步驟編程步驟設(shè)置設(shè)置TMOD初始化初始化設(shè)置定時設(shè)置定時/計計數(shù)初值數(shù)初值啟動定時啟動定時/計計數(shù)器數(shù)器查詢溢出標志查詢溢出標志位位TF0或或TF1置位情況及相置位情況及相關(guān)處理關(guān)處理1 2 4 5 3 開中斷開中斷編程編程步驟步驟6.1.2 6.1.2
21、 定時定時/ /計數(shù)器編程與控制計數(shù)器編程與控制 (1)查詢方式)查詢方式匯編語言編寫匯編語言編寫 ORG 0000H ORG 0000H LJMP LJMPMAINMAIN ORG 0030H ORG 0030H MIAN:CLR EA MIAN:CLR EA ;關(guān)中斷;關(guān)中斷 MOV TMOD,#XXH MOV TMOD,#XXH ;設(shè)置;設(shè)置TMODTMOD MOV MOVTH0,#XXH TH0,#XXH ;設(shè)置;設(shè)置TH0TH0、TL0TL0 MOV MOVTL0,#XXHTL0,#XXH SETB SETBTR0TR0 ;啟動定時器;啟動定時器T0T0 LOOP:JBC TF0,T
22、IMER0 LOOP:JBC TF0,TIMER0 ;若;若TF0TF0置位,則先跳轉(zhuǎn)到置位,則先跳轉(zhuǎn)到TIMER0, TIMER0, ;后再清零;后再清零TF0TF0 LJMP LOOP LJMP LOOPTIMER0: TIMER0: ;中斷處理程序;中斷處理程序 LJMP LOOPLJMP LOOP END END6.1.2 6.1.2 定時定時/ /計數(shù)器編程與控制計數(shù)器編程與控制 (1)查詢方式)查詢方式 C語言編寫語言編寫#include#includevoid main( )void main( ) EA=0 EA=0; TMOD=0XxxTMOD=0Xxx;/設(shè)置設(shè)置TMODT
23、MOD TH0=0Xxx TH0=0Xxx; /設(shè)置設(shè)置TH0TH0、TL0TL0 TL0=0Xxx TL0=0Xxx; TR0=1TR0=1; /啟動定時器啟動定時器T0T0 if(TF0!=0) if(TF0!=0)/查詢查詢TF0TF0標志位是否置位標志位是否置位 TF0=0 TF0=0; /清零清零TF0TF0標志位標志位 ; /相關(guān)處理相關(guān)處理 ; 任務(wù)任務(wù)6.2 6.2 簡易定時鬧鐘控制簡易定時鬧鐘控制 6.2.1 控制要求與功能展示控制要求與功能展示實物運行視頻實物運行視頻兩位數(shù)碼管兩位數(shù)碼管K1K1按鍵按鍵 蜂鳴器蜂鳴器 單片機單片機 K2K2按鍵按鍵 6.2.1 控制要求與功
24、能展示控制要求與功能展示簡易定時鬧鐘控制電路原理圖簡易定時鬧鐘控制電路原理圖 任務(wù)任務(wù)6.2 6.2 簡易定時鬧鐘控制簡易定時鬧鐘控制6.2.2 6.2.2 硬件系統(tǒng)與控制流程分析硬件系統(tǒng)與控制流程分析 1 1、任務(wù)硬件系統(tǒng)分析、任務(wù)硬件系統(tǒng)分析 電路原理圖所示,該電路主要是由電路原理圖所示,該電路主要是由兩個按兩個按鍵電路鍵電路、1 1個蜂鳴器驅(qū)動電路個蜂鳴器驅(qū)動電路以及以及1 1個兩位數(shù)碼個兩位數(shù)碼管顯示電路管顯示電路組成。數(shù)碼管顯示電路中單片機組成。數(shù)碼管顯示電路中單片機P0P0口提供段選信號,而口提供段選信號,而P2P2口提供位選信號;蜂鳴口提供位選信號;蜂鳴器驅(qū)動電路由器驅(qū)動電路由P
25、NPPNP型三極管驅(qū)動。型三極管驅(qū)動。 6.2.2 6.2.2 硬件系統(tǒng)與控制流程分析硬件系統(tǒng)與控制流程分析 2 2、任務(wù)控制流程分析、任務(wù)控制流程分析 圖圖6-9 簡易定時鬧鐘控制程序流程簡易定時鬧鐘控制程序流程 6.2.3 匯編語言程序分析與設(shè)計匯編語言程序分析與設(shè)計 1 1、任務(wù)相關(guān)匯編指令、任務(wù)相關(guān)匯編指令 (1)位控制轉(zhuǎn)移指令:)位控制轉(zhuǎn)移指令:JBC 使用格式:使用格式:JBC bit, 使用說明:使用說明:JBC指令是用來判斷某個位是否置位;置位后,則指令是用來判斷某個位是否置位;置位后,則跳轉(zhuǎn)到所指定的地址中去執(zhí)行,同時再清零該位。跳轉(zhuǎn)到所指定的地址中去執(zhí)行,同時再清零該位。
26、使用示例使用示例 JBC TF0,TIMER0 ;判斷;判斷TF0是否置位,是則跳轉(zhuǎn)到是否置位,是則跳轉(zhuǎn)到 ;TIMER0執(zhí)行,后清零執(zhí)行,后清零TF0 ;否,則順序執(zhí)行;否,則順序執(zhí)行TIMER0:6.2.3 匯編語言程序分析與設(shè)計匯編語言程序分析與設(shè)計 (2)邏輯或操作指令:)邏輯或操作指令:ORL 使用格式:使用格式:ORL ,使用說明:使用說明:將目的操作數(shù)與源操作數(shù)按位進行將目的操作數(shù)與源操作數(shù)按位進行“或或”運算后,將其結(jié)果放回目的目的運算后,將其結(jié)果放回目的目的操作數(shù)中。操作數(shù)中。任意邏輯量和任意邏輯量和1相或,其結(jié)果為相或,其結(jié)果為1;和;和0相或,其結(jié)果不變。邏輯或指令常用相
27、或,其結(jié)果不變。邏輯或指令常用來把累加器、內(nèi)部來把累加器、內(nèi)部RAM或特殊功能寄存器的指定位置或特殊功能寄存器的指定位置1。目的操作數(shù)一般情況為累加器目的操作數(shù)一般情況為累加器A,但也可以是內(nèi)部數(shù)據(jù)存儲單元的地址。,但也可以是內(nèi)部數(shù)據(jù)存儲單元的地址。 使用示例使用示例ORL A,#01H ;將;將A中的內(nèi)容與立即數(shù)中的內(nèi)容與立即數(shù)01H相或后結(jié)果放入相或后結(jié)果放入A中中6.2.3 匯編語言程序分析與設(shè)計匯編語言程序分析與設(shè)計 (3)邏輯與操作指令:)邏輯與操作指令:ANL 使用格式:使用格式:ANL ,使用說明:使用說明:將目的操作數(shù)與源操作數(shù)按位進行相將目的操作數(shù)與源操作數(shù)按位進行相“與與”
28、之后,將其結(jié)果放在目的操作數(shù)之后,將其結(jié)果放在目的操作數(shù)中中;任意邏輯量(任意邏輯量(0或或1)和)和0相與,其結(jié)果為相與,其結(jié)果為0;和;和1相與,其結(jié)果不變。邏輯與相與,其結(jié)果不變。邏輯與指令常用來完成將若干數(shù)據(jù)位清指令常用來完成將若干數(shù)據(jù)位清0,而其余位不變的操作。,而其余位不變的操作。目的操作數(shù)一般情況為累加器目的操作數(shù)一般情況為累加器A,但也可以是內(nèi)部數(shù)據(jù)存儲單元的地址。,但也可以是內(nèi)部數(shù)據(jù)存儲單元的地址。 使用示例使用示例ANL A,#01H ;將;將A中的內(nèi)容與立即數(shù)中的內(nèi)容與立即數(shù)01H相與后結(jié)果放入相與后結(jié)果放入A中中 6.2.3 匯編語言程序分析與設(shè)計匯編語言程序分析與設(shè)計
29、 (4)邏輯異或操作指令:)邏輯異或操作指令:XRL使用格式:使用格式:XRL ,使用說明:使用說明:將目的操作數(shù)與源操作數(shù)按位進行相將目的操作數(shù)與源操作數(shù)按位進行相“異或異或”之后,將其結(jié)果放在操作數(shù)一之后,將其結(jié)果放在操作數(shù)一中。中。任意邏輯量(任意邏輯量(0或或1)和)和1相異或,其結(jié)果取反;和相異或,其結(jié)果取反;和0相異或,其結(jié)果不變。邏相異或,其結(jié)果不變。邏輯異或指令常用來完成將若干數(shù)據(jù)位取反,而其余位不變的操作。輯異或指令常用來完成將若干數(shù)據(jù)位取反,而其余位不變的操作。相同邏輯量(相同邏輯量(0或或1)相異或,結(jié)果為)相異或,結(jié)果為0,不同邏輯量相異或,結(jié)果為,不同邏輯量相異或,結(jié)
30、果為1,利用,利用這個特點,也可判斷兩數(shù)是否相等。這個特點,也可判斷兩數(shù)是否相等。 使用示例使用示例XRL A,#01H ;將;將A中內(nèi)容與立即數(shù)中內(nèi)容與立即數(shù)01H相異或后結(jié)果放入相異或后結(jié)果放入A6.2.3 6.2.3 匯編語言程序分析與設(shè)計匯編語言程序分析與設(shè)計 匯編程序匯編程序程序初始化程序初始化INIT子程序子程序按鍵去抖按鍵去抖子程序子程序QUDOU數(shù)碼管顯示數(shù)碼管顯示子程序子程序DIS主程序主程序MAIN輸出處理輸出處理子程序子程序SHUCHU定時定時/計數(shù)器計數(shù)器0中斷子程序中斷子程序T_0延時子程序延時子程序DELAY顯示字符表顯示字符表程序初始部分程序初始部分匯編程序匯編程
31、序6.2.4 C6.2.4 C語言程序分析與設(shè)計語言程序分析與設(shè)計 C C程序程序C C語言語言程序程序主函數(shù)主函數(shù) main( )程序初始程序初始化子函數(shù)化子函數(shù)Init( )數(shù)碼管顯數(shù)碼管顯示子函數(shù)示子函數(shù)display()輸出處理輸出處理子函數(shù)子函數(shù)shuchu( )程序初始程序初始部分(含部分(含數(shù)據(jù)表定數(shù)據(jù)表定義)義)按鍵去抖按鍵去抖子函數(shù)子函數(shù)qu_doudong( )定時器中定時器中斷子函數(shù)斷子函數(shù)timer0_server( )延時子函數(shù)延時子函數(shù)delay( )1 1、創(chuàng)建、創(chuàng)建ProteusProteus仿真電路圖仿真電路圖 (1 1)列出元器件表;()列出元器件表;(2
32、2)繪制仿真電路圖)繪制仿真電路圖6.2.5 6.2.5 基于基于ProteusProteus的調(diào)試與仿真的調(diào)試與仿真 6.2.5 6.2.5 基于基于ProteusProteus的調(diào)試與仿真的調(diào)試與仿真 安裝插件安裝插件vdmagdi.e(注(注意:應(yīng)把插件安意:應(yīng)把插件安裝在裝在Keil3的安的安裝目錄下)裝目錄下) 將將Keil安裝目錄安裝目錄C51BIN中的中的VDM51.dll文文件復制到件復制到Proteus軟件軟件的安裝目錄的安裝目錄ProteusMODELS目錄下目錄下 修改修改Keil安裝目錄安裝目錄下的下的Tools.ini文文件,在件,在C51字段字段中加入中加入TDRV
33、11=BINVDM51.DLL (“PROTEUS 6 EMULATOR”)并并保存。保存。 (1)(2)(3)2 2、ProteusProteus與與KeilKeil聯(lián)調(diào)聯(lián)調(diào) 6.2.5 6.2.5 基于基于ProteusProteus的調(diào)試與仿真的調(diào)試與仿真 打開打開“簡易定時鬧鐘簡易定時鬧鐘控制控制.DSN ”文件,在文件,在Proteus的的“Debug”菜單中選中菜單中選中“Use Remote Debug Monitor(遠程監(jiān)(遠程監(jiān)控)控)”。右鍵選中。右鍵選中STC89C51單片機,單片機,在彈出的對話框在彈出的對話框“Program File”項項中,導入在中,導入在Kei
34、l中生中生成的成的HEX文件。文件。Keil打開打開“簡易定時簡易定時鬧鐘控制鬧鐘控制.UV2”,打開窗口打開窗口“Option for Target工程工程名名”。在。在Debug選項中右欄上部的選項中右欄上部的下拉菜單選中下拉菜單選中Proteus VSM Simulator。點擊。點擊進入進入Settings窗口,窗口,設(shè)置設(shè)置IP為為127.0.0.1,端口號為端口號為8000。 在在Keil中點擊,使用中點擊,使用單步執(zhí)行來調(diào)試程單步執(zhí)行來調(diào)試程序,同時在序,同時在Proteus中查看直觀的仿真中查看直觀的仿真結(jié)果。結(jié)果。(4)(5)(6)6.2.5 6.2.5 基于基于Proteu
35、sProteus的調(diào)試與仿真的調(diào)試與仿真 工作模式工作模式定時工作方式定時工作方式定時器當前值定時器當前值中斷標志位中斷標志位程序初始化后,程序初始化后,T0T0窗口窗口 2 2、ProteusProteus與與KeilKeil聯(lián)調(diào)聯(lián)調(diào) 6.2.5 6.2.5 基于基于ProteusProteus的調(diào)試與仿真的調(diào)試與仿真 開啟定時器開啟定時器定時器當前值定時器當前值啟動后中斷前,啟動后中斷前,T0T0窗口窗口 2 2、ProteusProteus與與KeilKeil聯(lián)調(diào)聯(lián)調(diào) 6.2.5 6.2.5 基于基于ProteusProteus的調(diào)試與仿真的調(diào)試與仿真 中斷后定時器當前值中斷后定時器當前
36、值為為0000H0000H標志位當進入中斷后標志位當進入中斷后自動清零自動清零中斷時,中斷時,T0T0窗口窗口 2 2、ProteusProteus與與KeilKeil聯(lián)調(diào)聯(lián)調(diào) 6.2.5 6.2.5 基于基于ProteusProteus的調(diào)試與仿真的調(diào)試與仿真 TH0=0 x3CTH0=0 x3C、TL0=0 xB0TL0=0 xB0T0T0中斷后,重新賦初值中斷后,重新賦初值3CB0H 3CB0H 2 2、ProteusProteus與與KeilKeil聯(lián)調(diào)聯(lián)調(diào) 6.2.5 6.2.5 基于基于ProteusProteus的調(diào)試與仿真的調(diào)試與仿真 R0=0 x01R0=0 x01T0T0中
37、斷次數(shù)計數(shù)控制中斷次數(shù)計數(shù)控制 2 2、ProteusProteus與與KeilKeil聯(lián)調(diào)聯(lián)調(diào) 2 2、ProteusProteus與與KeilKeil聯(lián)調(diào)聯(lián)調(diào) 6.2.5 6.2.5 基于基于ProteusProteus的調(diào)試與仿真的調(diào)試與仿真 低電平,蜂鳴器鳴叫低電平,蜂鳴器鳴叫TR0=0TR0=0定時時間到,定時時間到,TOTO停止運行停止運行 6.2.5 6.2.5 基于基于ProteusProteus的調(diào)試與仿真的調(diào)試與仿真 3 3、ProteusProteus仿真運行仿真運行 6.2.5 6.2.5 基于基于ProteusProteus的調(diào)試與仿真的調(diào)試與仿真 仿真運行視頻仿真運
38、行視頻任務(wù)任務(wù)6.3 6.3 簡易按鍵計數(shù)器控制簡易按鍵計數(shù)器控制 實物運行視頻實物運行視頻數(shù)碼管數(shù)碼管單片機單片機K1K1按鍵按鍵K2K2按鍵按鍵6.3.1 控制要求與功能展示控制要求與功能展示6.3.1 控制要求與功能展示控制要求與功能展示簡易按鍵計數(shù)器控制電路原理圖簡易按鍵計數(shù)器控制電路原理圖 任務(wù)任務(wù)6.3 6.3 簡易按鍵計數(shù)器控制簡易按鍵計數(shù)器控制 6.3.2 6.3.2 硬件系統(tǒng)與控制流程分析硬件系統(tǒng)與控制流程分析 1 1、任務(wù)硬件系統(tǒng)分析、任務(wù)硬件系統(tǒng)分析 電路原理圖所示,該電路主要是由電路原理圖所示,該電路主要是由2個按鍵電路個按鍵電路和和1個個數(shù)碼管顯示電路數(shù)碼管顯示電路組
39、成。該數(shù)碼管顯示電路中由單片機組成。該數(shù)碼管顯示電路中由單片機P0口口提供段選信號,其共陰端串上阻值提供段選信號,其共陰端串上阻值200歐的限流電阻接地。歐的限流電阻接地。但要使用計數(shù)器來實現(xiàn)該控制要求,需要了解單片機計數(shù)但要使用計數(shù)器來實現(xiàn)該控制要求,需要了解單片機計數(shù)器的部分具體知識。器的部分具體知識。 6.3.2 6.3.2 硬件系統(tǒng)與控制流程分析硬件系統(tǒng)與控制流程分析(1)單片機定時)單片機定時/計數(shù)器的計數(shù)功能計數(shù)器的計數(shù)功能 注意:計數(shù)器的位數(shù)確定了計數(shù)器的計數(shù)范圍注意:計數(shù)器的位數(shù)確定了計數(shù)器的計數(shù)范圍 定時定時/ /計數(shù)器有定時和計數(shù)兩種功能,通過計數(shù)器有定時和計數(shù)兩種功能,通
40、過定時定時/ /計數(shù)器的工作方式控制寄存器計數(shù)器的工作方式控制寄存器TMODTMOD中的中的C/ C/ 位控制。當位控制。當C/ C/ 位為位為1 1時,定時時,定時/ /計數(shù)器設(shè)為計數(shù)計數(shù)器設(shè)為計數(shù)工作方式,對由工作方式,對由T0(P3.4T0(P3.4引腳引腳) )或或T1(P3.5T1(P3.5引腳引腳) )引引入的外部脈沖計數(shù),其余設(shè)置與定時器的設(shè)置相入的外部脈沖計數(shù),其余設(shè)置與定時器的設(shè)置相同。同。 TT6.3.2 6.3.2 硬件系統(tǒng)與控制流程分析硬件系統(tǒng)與控制流程分析2 2、任務(wù)控制流程分析、任務(wù)控制流程分析圖圖6-22 簡易按鍵計數(shù)器控制流程簡易按鍵計數(shù)器控制流程 6.3.3
41、6.3.3 匯編語言程序分析與設(shè)計匯編語言程序分析與設(shè)計 匯編程序匯編程序程序初始化程序初始化INIT子程序子程序外部中斷外部中斷1服務(wù)服務(wù)子程序子程序INT_1數(shù)碼管顯示數(shù)碼管顯示子程序子程序XIANSHI主程序主程序MAIN計數(shù)中斷計數(shù)中斷0服務(wù)服務(wù)子程序子程序JISHU定時器定時器1中斷處理中斷處理子程序子程序T_1延時子程序延時子程序DELAY顯示字符表顯示字符表程序初始部分程序初始部分匯編程序匯編程序6.3.4 C6.3.4 C語言程序分析與設(shè)計語言程序分析與設(shè)計 C C程序程序C C語言語言程序程序主函數(shù)主函數(shù) main( )程序初始程序初始化子函數(shù)化子函數(shù)Init( )數(shù)碼管顯數(shù)
42、碼管顯示子函數(shù)示子函數(shù)display()計數(shù)計數(shù)0中中斷子函數(shù)斷子函數(shù)T_0()定時器定時器1中中斷子函數(shù)斷子函數(shù)T_1()外部中斷外部中斷1子函數(shù)子函數(shù)int_1()外部中斷外部中斷1子函數(shù)子函數(shù)int_1()延時子函數(shù)延時子函數(shù)delay( )1 1、創(chuàng)建、創(chuàng)建ProteusProteus仿真電路圖仿真電路圖 (1 1)列出元器件表;()列出元器件表;(2 2)繪制仿真電路圖)繪制仿真電路圖6.3.5 6.3.5 基于基于ProteusProteus的調(diào)試與仿真的調(diào)試與仿真 6.3.5 6.3.5 基于基于ProteusProteus的調(diào)試與仿真的調(diào)試與仿真 安裝插件安裝插件vdmagdi
43、.e(注意:(注意:應(yīng)把插件安裝在應(yīng)把插件安裝在Keil3的安裝目錄的安裝目錄下)下) 將將Keil安裝目錄安裝目錄C51BIN中的中的VDM51.dll文件文件復制到復制到Proteus軟件的安裝目錄軟件的安裝目錄ProteusMODELS目錄下目錄下 修改修改Keil安裝目錄安裝目錄下的下的Tools.ini文文件,在件,在C51字段字段中加入中加入TDRV11=BINVDM51.DLL (“PROTEUS 6 EMULATOR”)并并保存。保存。 (1)(2)(3)2 2、ProteusProteus與與KeilKeil聯(lián)調(diào)聯(lián)調(diào) 6.3.5 6.3.5 基于基于ProteusProteus的調(diào)試與仿真的調(diào)試與仿真 打開打開“簡易按鍵計數(shù)簡易按鍵計數(shù)器控制器控制.DSN ”文件,文件,在在Proteus的的“Debug”菜單中選菜單中選中中“Use Remote Debug Monitor(遠(遠程監(jiān)控)程監(jiān)控)”。右鍵選。右鍵選中中STC89C51單片機,單片機,在彈出的對話框在彈出的對話框“Program File”項項中,導入在中,導入在Keil中生中生成的成
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度國際文化交流勞務(wù)輸出合同
- 2025年度餐飲行業(yè)居間服務(wù)合同模板
- 2025年度數(shù)字廣告平臺合作運營合同范本
- 2025年度大型公共建筑裝修施工合同證據(jù)清單
- 2025-2030年中國機房傳輸配套項目投資可行性研究分析報告
- 2025年小螺紋塞規(guī)行業(yè)深度研究分析報告
- 中國風扇外罩項目投資可行性研究報告
- 營養(yǎng)餐申請書300字
- 2024-2026年中國綠色金融行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報告
- 中國錳鋼鐵項目投資可行性研究報告
- 產(chǎn)品生產(chǎn)技術(shù)方案
- 【光明乳業(yè)企業(yè)償債能力問題及完善建議8900字論文】
- 多益網(wǎng)絡(luò)游戲開發(fā)工程師崗位筆試選擇題附筆試高分技巧
- 提高感染性休克集束化治療達標率
- 譯林版七年級下冊英語單詞默寫表
- 專題01 中華傳統(tǒng)文化-中考英語時文閱讀專項訓練
- 阿特拉斯擰緊工具維修培訓課件
- 密封條模板大全
- 頁眉和頁腳基本知識課件
- ST語言編程手冊
- 經(jīng)濟數(shù)學基礎(chǔ)(高職)全套教學課件
評論
0/150
提交評論