日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

51单片机中的定时器

發(fā)布時(shí)間:2025/4/5 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 51单片机中的定时器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

    • 1 51單片機(jī)中的定時(shí)器介紹
      • 1.1 定時(shí)器的初步認(rèn)識
      • 1.2 定時(shí)器的寄存器
      • 1.3 使用定時(shí)器的方法
      • 1.4 定時(shí)時(shí)間的計(jì)算
    • 2 定時(shí)器模式1
      • 2.1 定時(shí)器模式1原理分析
      • 2.2 使用查詢的方式使用定時(shí)器

1 51單片機(jī)中的定時(shí)器介紹

1.1 定時(shí)器的初步認(rèn)識

時(shí)鐘周期:

  • 時(shí)鐘周期 T 是時(shí)序中最小的時(shí)間單位,具體計(jì)算的方法就是 1/時(shí)鐘源頻率,如果晶振是 11.0592M,那么對于我們這個(gè)單片機(jī)系統(tǒng)來說,時(shí)鐘周期=1/11059200 秒。

機(jī)器周期:

  • 我們的單片機(jī)完成一個(gè)操作的最短時(shí)間。機(jī)器周期主要針對匯編語言而言,在匯編語言下程序的每一條語句執(zhí)行所使用的時(shí)間都是機(jī)器周期的整數(shù)倍,而且語句占用的時(shí)間是可以計(jì)算出來的,而 C 語言一條語句的時(shí)間是不確定的,受到諸多因素的影響。 51單片機(jī)系列,在其標(biāo)準(zhǔn)架構(gòu)下一個(gè)機(jī)器周期是 12 個(gè)時(shí)鐘周期,也就是 12/11059200 秒。現(xiàn)在有不少增強(qiáng)型的 51 單片機(jī),其速度都比較快,有的 1 個(gè)機(jī)器周期等于 4 個(gè)時(shí)鐘周期,有的 1個(gè)機(jī)器周期就等于 1 個(gè)時(shí)鐘周期,也就是說大體上其速度可以達(dá)到標(biāo)準(zhǔn) 51 架構(gòu)的 3 倍或 12倍。

定時(shí)器:

  • 打開定時(shí)器后,定時(shí)器"存儲寄存器"的值經(jīng)過一個(gè)機(jī)器周期自動加1,也就是說,機(jī)器周期是定時(shí)器的計(jì)數(shù)周期。

1.2 定時(shí)器的寄存器

定時(shí)值存儲寄存器:

  • 存儲定時(shí)器的計(jì)數(shù)值的。

    定時(shí)器控制寄存器TCON:


    定時(shí)器模式寄存器TMOD:

1.3 使用定時(shí)器的方法

第一步:設(shè)置特殊功能寄存器 TMOD,配置好工作模式。
第二步:設(shè)置計(jì)數(shù)寄存器 TH0 和 TL0 的初值。
第三步:設(shè)置 TCON,通過 TR0 置 1 來讓定時(shí)器開始計(jì)數(shù)。
第四步:判斷 TCON 寄存器的 TF0 位,監(jiān)測定時(shí)器溢出情況。

1.4 定時(shí)時(shí)間的計(jì)算

我們的晶振是 11.0592M,時(shí)鐘周期就是 1/11059200,機(jī)器周期是 12/11059200,假如要定時(shí) 20ms,就是 0.02 秒,要經(jīng)過x 個(gè)機(jī)器周期得到 0.02 秒,我們來算一下 x*12/11059200=0.02,得到 x= 18432。 16 位定時(shí)器的溢出值是 65536(因 65535 再加 1 才是溢出),于是我們就可以這樣操作,先給 TH0 和 TL0一個(gè)初始值,讓它們經(jīng)過 18432 個(gè)機(jī)器周期后剛好達(dá)到 65536,也就是溢出,溢出后可以通過檢測 TF0 的值得知,就剛好是 0.02 秒。那么初值 y = 65536 - 18432 = 47104,轉(zhuǎn)成 16 進(jìn)制就是0xB800,也就是 TH0 = 0xB8, TL0 = 0x00。


2 定時(shí)器模式1

2.1 定時(shí)器模式1原理分析

模式示意圖如下:

2.2 使用查詢的方式使用定時(shí)器

下面程序的主要功能是讓小燈以0.5Hz的頻率閃爍。

#include <reg52.h>sbit LED = P0 ^ 0; sbit ADDR0 = P1 ^ 0; sbit ADDR1 = P1 ^ 1; sbit ADDR2 = P1 ^ 2; sbit ADDR3 = P1 ^ 3; sbit ENLED = P1 ^ 4;void main() {unsigned char cnt = 0; //定義一個(gè)計(jì)數(shù)變量,記錄 T0 溢出次數(shù)ENLED = 0; //使能 U3,選擇獨(dú)立 LEDADDR3 = 1;ADDR2 = 1;ADDR1 = 1;ADDR0 = 0;TMOD = 0x01; //設(shè)置 T0 為模式 1TH0 = 0xB8; //為 T0 賦初值 0xB800TL0 = 0x00;TR0 = 1; //啟動 T0while (1){if (TF0 == 1) //判斷 T0 是否溢出{TF0 = 0; //T0 溢出后,清零中斷標(biāo)志TH0 = 0xB8; //并重新賦初值TL0 = 0x00;cnt++; //計(jì)數(shù)值自加 1if (cnt >= 50) //判斷 T0 溢出是否達(dá)到 50 次{cnt = 0; //達(dá)到 50 次后計(jì)數(shù)值清零LED = ~LED; //LED 取反: 0-->1、 1-->0}}} }

參考資料:

  • 手把手教你學(xué)51單片機(jī):C語言版
  • 總結(jié)

    以上是生活随笔為你收集整理的51单片机中的定时器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。