找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4498|回復: 0
打印 上一主題 下一主題
收起左側

單片機匯編語言實驗八 利用定時計數器產生波形

[復制鏈接]
跳轉到指定樓層
樓主
ID:808939 發(fā)表于 2021-7-23 16:15 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本實驗8051微控制器采用的晶振頻率為12MHz,利用定時器T1定時,使P1.0 輸出周期為2ms的方波。目的是為了1、了解8051定時計數器的硬件結構和寄存器;2、掌握8051定時計數器軟件查詢和中斷的處理方法。

1、定時計數器概述
定時/計數器,其具有定時和計數的功能。計數是指對外部脈沖信號進行比較,每來一個脈沖,計數值加1;當產生的信號脈沖很有規(guī)律時,比如1秒鐘來一個,那么計數多少個脈沖就知道過了多少秒,從而計數功能可以演化為定時功能。時功能需要用到某個基準時鐘,通過對基準時鐘的計數來完成定時功能。
定時/計數器的種類比較多,但一般可歸為兩類:
1)專用的定時/計數器器件(如8253);
2)處理器中集成定時器/計數器(如8051單片機自帶2個16位定時/計數器)。這些定時器一般都有一個輸入時鐘,即基準時鐘。

定時/計數器有如下一些用途:
1)產生所需頻率的脈沖。如產生頻率1000hz,占空比1:1的脈沖波。
2)在累加計數中的應用。計數器可在一段時間內記錄信號A經整形后的脈沖個數。
3)在頻率測量中的應用。通過測量脈沖寬度或在一定時間內測量脈沖的個數,從而推算出脈沖的頻率。
4)定時/計數器在計時中的應用。定時/計數器可對時鐘信號,如秒信號進行計數,也可用來倒計時,秒表計,時間循環(huán)等。
1、8051定時計數器
8051單片機內部有2個16位的定時/計數器:T1和T0。
T0定時/計數器詳解: 寄存器位C/T控制開關,往上是振蕩器,即CPU晶振產生的脈沖,往下是P3.4的引腳,即從外部得到的脈沖信號。進來之后首先送到TL0寄存器中,當TL0寄存器計數滿了之后,就會進位到TH0寄存器,當TH0寄存器計數滿了之后,就會產生溢出信號,TCON寄存器就會設置一個相應的標志,標志會引發(fā)CPU的中斷,即51單片機的內核處理單元處理。整個定時器是受到TMOD和TCON這兩個寄存器的控制,分別控制工作模式與工作狀態(tài)。
1、計數功能與定時功能
計數功能就是對外部脈沖進行計數;
計時就是針對內部振蕩器,一般12MHz,除以12 ,就是1MHz,相當于一個脈沖就是1us,數多少個脈沖就知道多少us,就是定時功能;
2、T0相關寄存器4個
寄存器描述
6個相關的寄存器:TMOD、TCON、TH0、TL0、TH1、TL1
其中TMOD用于控制和確定各定時/計數器的功能和工作方式,TCON用于控制各定時/計數器的啟動和停止計數,同事 包含定時/計數器的狀態(tài),TH0、TL0用于T0的計數,TH1、TL1用于T1的計數。系統(tǒng)復位時,這些寄存器的所有為都被清零。
#TMOD方式寄存器描述

C/T:選擇計數器或定時器功能,C/T=1位外部脈沖計數器功能,C/T=0為內部脈沖計數器功能(可做定時器)
GATE:選通控制,GATE=0,由軟件控制TR0或TR1位啟動定時器:GATE=1,由外部中斷引腳INT0(P3.2)和INT1(P3.3)輸入電平分別控制T0和T1的運行。
方式1
方式0和方式1工作過程差不多,只不過方式0為13位計數方式,最大計數值只能達到213=8192;而方式1為16位計數方式,最大計數值為216=65536。
當工作在計數方式時,最大計數值為2^16=65536。
當為定時工作方式時,定時時間計算公式為:
T=(216-計數初值)×晶振周期×12=(216-計數初值)×12÷晶振頻率
假設晶振頻率為12MHz,則方式1下最大定時時間T=(2^16-0)×12÷12MHz=65536x1us=65.536ms。
方式2
方式2為8位計數方式,最大計數值為2^8,能夠自動重裝計數值。
方式2特別適合于把定時/計數器用作串口波特率發(fā)生器。
定時時間T=(2^8-計數初值)×晶振周期×12 =(2^8-計數初值)×12÷晶振頻率。
方式1
方式2

方式1詳解: C/T開關控制脈沖的來源,不管哪種脈沖,都會送到K往后計數,其中K的狀態(tài)受下方邏輯控制。當GATE=0,A處輸出1,此時B處的狀態(tài)只受TR0控制,當TR0=1,K處開關閉合,當TR0=0,K處開關斷開,即只通過TR0(軟件控制位)來控制定時器。當GATE=1,A處輸出值受INT0引腳控制,當TR0=1,此時K狀態(tài)只受INT0控制,當INT0=1,K處開關閉合,當INT0=0,K處開關斷開,即只通過引腳的電平來控制定時器。開關閉合后,開始計數,TL0計數滿進位到TH0,TH0計數滿進位到TF0(中斷標志),即產生中斷給了51。
方式2詳解: 方式2與方式1的前面大部分原理相同,不同的是8位計數方式,TL0計數滿直接進位給TF0產生中斷,同時通過選通控制將TH0(已設置好)的值覆蓋到TH0(自動重裝計數值),重新計數。
TCON寄存器描述
其中高4位控制定時/計數器T0和T1的運行,低4位控制外部中斷INT1和INT0的運行。
TF1: T1計數溢出標志位,計數寄存器產生溢出時由硬件自動置位,置位后向CPU申請中斷,中斷響應后硬件自動復位,若采用程序查詢方式,必須軟件清除該位。
TR1: T1運行控制位,由軟件置位和復位。當GATE(TMOD.7)為0時,由軟件設置為“1”時立即啟動T1計數寄存器開始計數,清除為“0”時立即停止T1計數器寄存器計數。當GATE為1時,置位TR1為“1”時還必須INT1輸入為高電平時,才啟動T1計數,清除為“0”時或INT1輸入為低電平時均可停止T1計數。
TF0: 定時器T0溢出標志位,其含義與TF1類似。
TR0: 定時器T0的運行控制位,其含義與TR1類似。
#使用步驟
1、定時/計數功能的確定,從而確定C/T位的值;以及T0、T1的選用。
2、計數值的確定 如果選擇為定時功能,則需要計算計數值,公式如下:
(注:一個機器周期等于12個時鐘周期,時鐘周期是晶振振蕩頻率的倒數)
計數值 = 定時時間/機器周期 = 定時時間×12/晶振頻率。比如單片機系統(tǒng)的晶振頻率為12MHz,現需要定時1ms,則計數值 = 1ms × 12/12MHz = 1000。
3、確定定時/計數器的工作方式,一般選用方式1和方式2,當需要計數值比較大時(計數值>256),選用方式1工作,此時最大計數范圍為2^16。
4、計數初值的確定,即THn和TLn的確定。因為51單片機的定時/計數器是采用計滿溢出的,所以:計數初值=(計數最大值-計數值),從而確定計數初值。比如計數值為1000,選用方式2(16位寄存器),則:計數初值 = 2^16-1000 = 64536 = 0xFC18,所以THn = 0xFC,TLn = 0x18。
5、溢出標志位TFn(n=0或1)清0。
6、運行控制位TRn置1,定時/計數器開始計數。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. ORG  0000H
  2. LJMP MAIN
  3. ORG 000BH
  4. LJMP COUNT
  5.        
  6.         MAIN:
  7.         CLR P1.0
  8.         MOV R4,#0
  9.         MOV R5,#0
  10.         MOV TMOD,#6
  11.         MOV TH0,#9CH
  12.         MOV TL0,#9CH
  13.         SETB EA
  14.         SETB ET0
  15.         SETB TR0
  16.         SJMP $
  17.        
  18.         COUNT:
  19.         SETB P1.0
  20.         MOV A,R4
  21.         ADD A,R5
  22.         MOV R4,A
  23.         MOV A,R5
  24.         ADDC A,#0
  25.         MOV R5,A
  26.         MOV R3,#250
  27.         DLY:NOP
  28.         MOV R2,#250
  29.         D1:NOP
  30.         DJNZ R2,D1
  31.         DJNZ R3,DLY
  32.         CLR P1.0
  33.         RETI
  34.        
  35.         END
復制代碼

仿真代碼51hei附件下載:
實驗八工程.7z (53.81 KB, 下載次數: 11)

圖片4.png (48.02 KB, 下載次數: 158)

圖片4.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表