通過51單片機定時器/計數器實現精確延時

2021-01-08 電子工程世界

  MCS-51單片機內部共有兩個16位可編程定時器,計數器,即TO、Tl。既有定時功能,又有計數的功能。每個定時器都是由兩個8位的特殊功能寄存器THi和TLi組成(i=0、1)。TMOD是TO和Tl的工作方式控制寄存器,TCON是TO和Tl的運行狀態控制寄存器。在實際應用時,應首先根據需要對這些寄存器進行初始化,即設置TO和Tl的工作方式並對TO和Tl定時器裝入初始值以得到精確的定時時間。TO和Tl的工作方式及運行狀態是由TMOD和TCON兩個特殊功能寄存器控制的,而TMOD和TCON是由用戶所編的程序控制的。
  
  定時器的核心是一個加l計數器,加l計數器的脈衝有兩個來源:一個是系統時鐘振蕩器,另一個是外部脈衝,計數器對脈衝進行計數。當定時器/計數器用作定時器時是對機器周期進行計數,每經過一個機器周期計數器就加1,不斷自加直到數滿溢出,定時器的定時時間不僅與計數器初值有關,而且與系統的時鐘頻率有關。當定時器/計數器用作計數器時,計數器對來自輸入引腳TO和Tl的外部脈衝計數。
  
  MCS-51每個定時器有4種工作方式:方式0是13位計數結構,計數器由TLi的8位與THi的低5位構成,定時範圍為(1—213)個機器周期;方式1是16位計數結構,定時範圍為(1~216)個機器周期;方式2是8位計數結構,計數器由TLi的8位組成,當定時器溢時.THi的值能自動裝入TLi中,並在此值基礎上自動計數;在方式3下,也是8位的計數器,並且TO的各控制位和引腳歸TLO使用,THO借用Tl的各控制位和引腳信號,Tl只能按不需要中斷的方式0、1、2工作。通常用做串行通信的波特率發生器。
  
  在實際應用中,定時器可以採用查詢和中斷方式,用查詢的方式,程序執行的效率比較低,比較常用的是中斷方式,使用定時器/計數器延時從程序的執行效率和穩定性兩方面考慮都是最佳的方案。
  
  下面我們看一個例子,需要延時為50ms,我們可以取定時器TO在工作方式1,計數初值為65536-50000=15536=3CBOH,用彙編編寫中斷服務程序如下:

  從定時器溢出,發出中斷要求,系統接受該中斷要求,執行類似「LCALLXX」的動作,將正在執行的程序PC低位、高位壓人堆棧,然後加載中斷失量地址(0013H)到PC中,這一段過程要耗3個機器周期。在中斷服務程序中把初值重新裝入定時器並開啟計數器①~⑥共佔了10個機器周期,TLO初值應該賦值#OBDH。因為而此段位於0013H的程序超過8個字節會影響定時器1的中斷入口(OOIBH),所以,要麼0013H放一個中斷跳轉子程序,要麼壓縮語句。我們選用後者。因為在中斷子程序中沒有用累加器A,也沒有運算操作,所以程序①、②、⑦、⑧可以省去。將程序③、⑥省去使計數器0-直打開,從⑤賦值後開始計算。程序修改為:


關鍵字:51單片機  定時器  計數器  精確延時 編輯:什麼魚 引用地址:http://news.eeworld.com.cn/mcu/article_2017122937023.html

推薦閱讀

51單片機學習實踐:用NTC電阻測溫並顯示在TM1637數碼管

STC15單片機實驗名稱:使用NTC電阻測量溫度實驗內容:        使用NTC電阻測量溫度並顯示在數碼管上        讀取DS18B20模塊測量溫度作為參考實驗器材:        STC15W408AS_DIP16 x1        DS18B20  x1        TM1637數碼管 x1

發表於 2020-12-17

一款51單片機電子鐘製作(C語言)

/*一款電子鐘程序,此電子鐘是四位電子鐘數碼管組成的,功能分別有走時、響鬧、走時間調整、鬧鐘時間調整等功能!調整部分分別由三個按鍵實現,一個功能鍵,一個+(加)鍵,另一個為-(減)鍵,其它功能鍵是復用功能!*/硬鍵介紹:數碼管個位.十位.百位.千位.小數點分別接P0.0 P0.1 P0.2 P0.3 P0.4。蜂鳴器接P3.5腳,功能按鍵接P3.2 加按鍵接P3.3 減按鍵接P3.4以下是兩張圖片!!!#include <reg52.h>//頭文件#define uchar unsigned char//宏定義#define uint unsigned int//宏定義uchar shi,fen,nshi,nfen,ma

發表於 2020-12-17

51單片機+1602+DS18B20的溫度報警程序

51單片機做的溫度顯示,溫度顯示在LCD1602液晶屏上。然後按鍵可以調整溫度閾值,溫度高於或低於所設溫度,蜂鳴器就會響……單片機源程序如下:/***************************************************************************************                              基於單片機的實時溫度報警系統設計        &nbsp

發表於 2020-12-17

基於51單片機超聲波測距防近視檯燈程序

程序代碼 仿真圖單片機源程序如下:#include<reg52.h>#include<intrins.h>/*********************宏定義************************/#define uchar unsigned char#define uint unsigned int/************位定義*****************************/sbit Trig=P3^7; //超聲波模塊觸發位sbit LEDRED=P1^0;sbit LEDGREEN=P1^2;sbit speaker=P1^7;sbit person=P1^6;sbit

發表於 2020-12-09

STC89C51單片機+HX711稱重模塊電子秤程序

電子秤是基於STC89C51單片機,以及HX711稱重模塊,利用單片機控制A/D轉換,屏幕數據顯示,鍵盤實時輸入,設計方案能夠易於各種場合使用。單片機源程序如下:#include <reg52.h>#include <intrins.h>#include <string.h>#include "main.h"#include "HX711.h"#include "eeprom52.h"#define uchar unsigned char#define uint  unsigned intunsigned long HX711

發表於 2020-12-09

相關焦點

  • 51單片機---定時器 計數器
    8051系列單片機有兩個定時器:T0和T1,分別稱為定時器和定時器T1,這兩個定時器都是16位的定時器/計數器;8052系列單片機增加了第三個定時器/計數器T2;它們都有定時或事件計數功能,常用於時間控制、延時、對外部時間計數和檢測等場合
  • 51單片機計數器與定時器的區別
    在51單片機的學習過程中,我們經常會發現中斷、計數器/定時器、串口是學習單片機的難點,對於初學者來說,這幾部分的內容很難理解。
  • 單片機定時器/計數器基本原理
    在AT89S52晶片內包含有三個16位的定時器/計數器:T0、T1和T2,其核心是加1計數器。我們主要要求掌握T0和T1的結構和功能。學習中要注意從電路結構上來理解功能的實現。定時器/計數器方式寄存器TMOD和定時器/計數器控制寄存器TCON是用以設定定時器/計數器的工作方式、定時或計數功能,控制啟動或停止以及產生溢出中斷的重要模塊,應該對這兩個寄存器中的逐位的定義和功能進行學習和掌握。
  • 51單片機定時器/計數器的結構和原理
    定時器/計數器簡稱定時器,其作用主要包括產生各種時標間隔、記錄外部事件的數量等,是微機中最常用、最基本的部件之一。803l單片機有2個16位的定時器/計數器:定時器0(T0)和定時器1(T1)。
  • 單片機原理|定時器/計數器的工作原理及應用作業
    A、定時器T0採用方式1,定時5ms,每200次中斷後實現1s到B、定時器T0採用方式2,定時100us,每1000次中斷後實現1s到C、定時器T0採用方式0,定時10ms,每1000次中斷後實現1s到D、定時器T0採用方式3,定時100us,每1000次中斷後實現1s到我的答案:A
  • 單片機定時器計數器初值的計算
    1.計數器初值的計算把計數器計滿為零所需要的計數值設定為C,計數初值設定為TC,由此可得到公式:TC=M-C式中,M為計數器模值,該值和計數器工作方式有關。
  • 單片機中各種周期的關係與定時器原理
    在標準的51單片機中,一般情況下,一個機器周期等於12個時鐘周期,也就是機器周期=12*時鐘周期,(上面講到的原因)如果是12MHZ,那麼機器周期=1微秒。單片機工作時,是一條一條地從RoM中取指令,然後一步一步地執行。單片機訪問一次存儲器的時間,稱之為一個機器周期,這是一個時間基準。
  • 單片機兩大延時方法總結
    實現延時通常有兩種方法:一種是硬體延時,要用到定時器/計數器,這種方法可以提高CPU的工作效率,也能做到精確延時;另一種是軟體延時,這種方法主要採用循環體進行。本文引用地址:http://www.eepw.com.cn/article/201807/384512.htm1 、使用定時器/計數器實現精確延時單片機系統一般常選用11.059 2 MHz、12 MHz或6 MHz晶振。第一種更容易產生各種標準的波特率,後兩種的一個機器周期分別為1 μs和2 μs,便於精確延時。
  • 基於stm32的精確延時利用系統滴答systick
    利用系統滴答定時器來實現精確延時,需要以下五步:1、設置滴答定時器的時鐘,通過設置其控制寄存器,選擇外部時鐘,即為系統時鐘的八分之一,若系統時鐘為72M,則滴答定時器時鐘為
  • 51單片機定時器初值的計算
    我們學習的8051單片機的時鐘範圍是1.2MHz-12MHz。 在8051單片機中把一個時鐘周期定義為一個節拍(用P表示),二個節拍定義為一個狀態周期(用S表示)。機器周期在計算機中,為了便於管理,常把一條指令的執行過程劃分為若干個階段,每一階段完成一項工作。例如,取指令、存儲器讀、存儲器寫等,這每一項工作稱為一個基本操作。
  • 通過51單片機來控制直流電機
    );----------------------------------------------;名稱:51單片機來控制直流電機 ;主頻 6M晶震 51系列單片機;編譯環境:keil c51編譯通過;www.51hei.com單片機教程網原創,可以任意修改和作為學習測試用途;備註 :程序的關鍵部分是 T1定時中段程序裡面
  • 51單片機測變周期脈衝信號的簡便方法
    對連續變周期的脈衝信號周期的測量則相對困難些,許多測量人員都首先對這類信號進行二分頻後一路反相,然後用兩個定時/計數器分別測出兩路脈衝信號的正脈衝寬度得到周期,這種方法硬體開銷較大,軟體設計也較複雜。本文將介紹了一種用MCS-51單片機內部一個定時/計數器直接測量連續變周期脈衝信號周期的實用方法。
  • 定時器
    定時器是一項偉大的發明,它可以對相當多需要精準時間控制的工作變得簡單了許多。現在我們已經將定時器用在了軍事方面,製成了定時炸彈,定時雷管。       定時器主要分為五種類型:    1.接通延時類定時器:這類定時器主要運用在PLC中;是最常見最基本的定時器,我們稱為SD型定時器。
  • 6位LED顯示單片機控制電子鐘/計數器
    這是我們設計的單片機電子鐘/計時器學習板,它採用6位LED數碼管顯示時、分、秒,以24小時計時方式。可以通過按鍵實現時分調整、秒表/時鐘功能轉換、省電(關閉顯示)等功能。51單片機做的電子鐘在很多地方都有介紹, 對於單片機學習者來說這個程序基本上是一道門檻,掌握了電子鐘程序, 基本上可以說51單片機就掌握了80%。常見的電子鐘程序由顯示部分、計算部分、時鐘調整部分構成,本產品硬體上完全支持倒計時器,客戶只要自己修改程序就能實現倒計時功能。
  • 單片機定時器周期計算公式
    打開APP 單片機定時器周期計算公式 發表於 2018-01-22 15:59:10 定時器是單片機的重要功能模塊之一,在檢測、控制領域有廣泛應用。
  • 51單片機精確控制步進電機(有TB6600驅動)
    設備:51單片機開發板、TB6600驅動器、57BYG250B步進電機(二相)、直流開關電源。直流電源給驅動器供電,單片機給驅動器輸入脈衝,驅動器驅動步進電機。程序使用定時器中斷精確控制電機轉動(不考慮失步)。比如我採用16倍細分,則需給驅動輸入3200個脈衝,驅動才會使電機轉一圈,下面程序中1秒發送200個脈衝,則相應的電機16秒轉一圈。
  • 如何利用MCS-51單片機對周期波頻率進行測量
    本文介紹了用目前應用比較廣泛的MCS-51系列單片機對周期波頻率進行測量,並通過LED以數字形式直觀地示出頻率,實現測量的智能化,省去間接對頻率計算的麻煩與錯誤。文章對其測量原理,設計和實現作了說明,介紹了主要程序,並進行了誤差分析。 目前單片機廣泛應用到國民經濟建設和日常生活的許多領域,成為測控技術現代化不可缺少的重要工具。
  • 利用單片機PWM信號進行舵機控制[圖]
    脈衝計數可以利用51單片機的內部計數器來實現,但是從軟體系統的穩定性和程序結構的合理性看,宜使用外部的計數器,還可以提高CPU的工作效率。實驗後從精度上考慮,對於FUTABA系列的接收機,當採用1MHz的外部晶振時,其控制電壓幅值的變化為0.6mV,而且不會出現誤差積累,可以滿足控制舵機的要求。
  • 51單片機驅動步進電機__終極(完整版)
    在這裡介紹一下用51單片機驅動步進電機的方法。 這款步進電機的驅動電壓12V,步進角為 7.5度 . 一圈 360 度 , 需要 48 個脈衝完成!!! 該步進電機有6根引線,排列次序如下:1:紅色、2:紅色、3:橙色、4:棕色、5:黃色、6:黑色。
  • 基於EMP78P156單片機的RC測溫的實現
    以前做一個電熨鬥的項目,其中要使用到溫度的測量,但是為了節省成本,要用不帶AD的單片機來控制。測溫部分是利用RC來測溫,就是利用熱敏電阻結合RC電路來實現溫度的測量,可以精確到1℃。本電路採用了臺灣義隆單片機EM78P156來實現溫度的測量和控制。