單片機-定時器中斷

1、相關知識

振蕩周期=1/12us;? ? ?//振蕩周期又稱 S周期或時鐘周期(晶振周期或外加振蕩周期)。

狀態周期=1/6us;

機器周期=1us;

指令周期=1~4us;

①51單片機有兩組定時器/計數器,因為既可以定時,又可以計數,故稱之為定時器/計數器。

②定時器/計數器和單片機的CPU 是相互獨立的。定時器/計數器工作的過程是自動完成的,不需要CPU 的參與。

③單片機中的定時器/計數器是根據機器內部的時鐘或者是外部的脈沖信號對寄存器中的數據加 1

2、單片機定時/計數器結構? ? T0—P3.4? ? T1—P3.5

定時/計數器的實質是加 1 計數器(16 位),由高 8 位和低 8 位兩個寄存器 THx 和TLx組成。它隨著計數器的輸入脈沖進行自加 1,也就是每來一 個脈沖,計數器就自動加 1,當加到計數器為全 1 時,再輸入一個脈沖就使計數器回零,且計數器的溢出使相應的中斷標志位置 1,向 CPU 發出中斷請求(定時 /計數器中斷允許時)。如果定時/計數器工作于定時模式,則表示定時時間已到; 如果工作于計數模式,則表示計數值已滿。可見,由溢出時計數器的值減去計數初值才是加 1 計數器的計數值。

51 單片機定時器/計數器內部結構如下所示?

2.1、工作方式寄存器 TMOD

工作方式寄存器 TMOD 用于設置定時/計數器的工作方式,低四位用于 T0,高四位用于 T1。其格式如下:

GATE = 0 時:只需要用軟件使 TCON 中的 TR0 或 TR1 為 1,就可以啟動定時/計數器工作;

GATE=1 時,要用軟件使 TR0 或 TR1 為 1,同時外部中斷引腳 INT0/1 也為高電平 時,才能啟動定時/計數器工作。

C/T =0 為定時模式;? ? ?C/T =1 為計數模式

定時器——方式1? ? ? ?串口通信——方式2

2.2、控制寄存器 TCON

TCON 的低 4 位用于控制外部中斷。TCON 的高 4 位用于控制定 時/計數器的啟動和中斷申請。

TF0,TF1:定時/計數器中斷請求控制位,當計數溢出時設為1,響應中斷后設為0

TR0,TR1:定時/計數器中斷允許標志

3、單片機定時/計數器的工作方式

3.1 方式0? ? ? ??計數初值與計數個數的關系為:X=2 (13次方)-N

方式 0 為 13 位計數,由 TL0 的低 5 位(高 3 位未用)和 TH0 的 8 位組成。 TL0 的低 5 位溢出時向 TH0 進位,TH0 溢出時,置位 TCON 中的 TF0 標志,向 CPU 發出中斷請求。

?GATE=0 時,僅由TR0 控制與門的開啟;GATE=1時,由外中斷引腳信號INT0 和 TR0 共同控制與門的開啟

3.2 方式1(定時器使用)? ? ? ?計數初值與計數個數的關系為:X=2 (16次方)-N。

方式 1 的計數位數是 16 位,由 TL0 作為低 8 位,TH0 作為高 8 位

3.3 方式2?(串口通信使用)? ? ?計數初值與計數個數的關系為:X=2 (8次方)-N。

方式 2 為自動重裝初值的 8 位計數方式。工作方式 2 特別適合于用作較精確的脈沖信號發生器。

3.4 方式3

方式 3 只適用于定時/計數器 T0,定時器 T1 處于方式 3 時相當于 TR1=0, 停止計數。工作方式 3 將 T0 分成為兩個獨立的 8 位計數器 TL0 和 TH0。

4、定時器配置

①對 TMOD 賦值,以確定 T0 和 T1 的工作方式,如果使用定時器 0 即對 T0 配 置,如果使用定時器 1 即對 T1 配置。

②根據所要定時的時間計算初值,并將其寫入 TH0、TL0 或 TH1、TL1。

③如果使用中斷,則對 EA 賦值,打開總定時器中斷。

④使 TR0 或 TR1 置位,啟動定時/計數器定時或計數

如果我們想定時 1ms 的初值是多少呢?1ms/1us=1000。也就是要計數 1000 個,初值=65535-1000+1 (因為實際上計數器計數到 65536(2 的 16 次方)才溢出,所以后面要加 1) =64536=FC18H,所以初值即為 THx=0XFC,TLx=0X18

以定時器 0 為例介紹配置定時器工作方式 1、設定 1ms 初值,開啟定時器計數功能以及總中斷,

void time0_init(void)

{

????????TMOD|=0X01;//選擇為定時器 0 模式,工作方式 1? ? ?0X01方式1? ? 0X10——方式2

????????TH0=0XFC; //給定時器賦初值,定時 1ms

????????TL0=0X18;

????????ET0=1;//選擇使用定時器 0 中斷允許

????????EA=1;//打開總中斷

????????TR0=1;//打開定時器

}

定時器中斷實驗:通過定時器 0 中斷控制 D1 指示燈間隔 1 秒閃爍

#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
void delay_10us(u16 ten_us){
?? ?while(ten_us--);
}

sbit LED1=P2^0;

//初始化定時器0中斷的函數
void time0_init(){
?? ?TMOD|=0X01;//選擇定時器 0 模式,工作方式 1 ?為了不干擾定時器1
?? ?TH0=0XFC;//低8位 ?給定時器賦初值,定時1ms,相當于1000次脈沖
?? ?TL0=0X18;//高8位
?? ?ET0=1;//打開定時器 0 中斷允許
?? ?EA=1;//打開總開關
?? ?TR0=1;//打開定時器? ?
}

/*

//初始化定時器1中斷的函數
void time1_init(){
TMOD|=0X10;//選擇為定時器 0 模式,工作方式 2
TH0=0XFC; //給定時器賦初值,定時 1ms
TL0=0X18;
ET0=1;//打開定時器 0 中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時器,手動設置
}

*/

void main(){
?? ?time0_init();
?? ?while(1){??
?? ?}
}

//定義定時器中斷服務函數
void time0() interrupt 1{
?? ?static u16 i=0;//靜態變量,只初始化1次
?? ?TH0=0XFC;
?? ?TL0=0X18;
?? ?i++;
?? ?if(i==1000){

?? ??? ?//計時1s
?? ??? ?i=0;
?? ??? ?LED1=!LED1;? ? ? ??
?? ?}?
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65863.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65863.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65863.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【藍牙】win11 筆記本電腦連接 hc-06

文章目錄 前言步驟 前言 使用電腦通過藍牙添加串口 步驟 設置 -> 藍牙和其他設備 點擊 顯示更多設備 更多藍牙設置 COM 端口 -> 添加 有可能出現卡頓,等待一會 傳出 -> 瀏覽 點擊添加 hc-06,如果沒有則點擊 再次搜索 確定 添加成…

Android切換語言不退出App

1.需求 實現用戶選擇語言(未點擊下一步),更新當前界面UI,點擊下一步后,更新App的語言,并進行保存。 實現目標: 1.設置App的語言,本地進行保存 2.updateResources更新本地語言配置…

一鍵獲取Linux主機配置信息shell腳本,含網卡詳情,網卡綁定等

cat > /tmp/get_os_info.sh <<"EOF"#!/bin/bashexport LANG=en_US.UTF-8# 如果 cat /proc/1/cgroup | grep docker | wc -l 大于0 或 systemd-detect-virt 返回 docker,則為 docker容器,# 如果 virt-what 返回 kvm或vmware或hyperv或xen、xen-hvm、lxc 或…

2 XDMA IP中斷

三種中斷 1. Legacy 定義&#xff1a;Legacy 中斷是傳統的中斷處理方式&#xff0c;使用物理中斷線&#xff08;例如 IRQ&#xff09;來傳遞中斷信號。缺點&#xff1a; 中斷線數量有限&#xff0c;通常為 16 條&#xff0c;限制了可連接設備的數量。中斷處理可能會導致中斷風…

【算法】時間復雜度以及O(N^2)的排序

目錄 1.常數時間的操作 2.時間復雜度 2.1.以選擇排序為例 2.2.O(n^2)從何而來 2.3.冒泡排序 2.3.1.抑或運算 2.4.插入排序 3.二分法 3.1.局部最小 4.遞歸 4.1.遞歸行為時間復雜度的估計 1.常數時間的操作 一個操作如果和樣本的數據量無關&#xff0c;每次都是固定時…

2021 年 3 月青少年軟編等考 C 語言五級真題解析

目錄 T1. 紅與黑思路分析T2. 密室逃脫思路分析T3. 求逆序對數思路分析T4. 最小新整數思路分析T1. 紅與黑 有一間長方形的房子,地上鋪了紅色、黑色兩種顏色的正方形瓷磚。你站在其中一塊黑色的瓷磚上,只能向相鄰的黑色瓷磚移動。請寫一個程序,計算你總共能夠到達多少塊黑色的…

C# 或 .NetCore 如何使用 NPOI 導出圖片到 Excel 文件

今天在本文中&#xff0c;我們將嘗試使用NPOI庫將圖像插入到 Excel 文件的特定位置。請將以下邏輯添加到您的寫作方法中&#xff0c;在 Excel 文件中添加圖像&#xff08;JPEG、PNG&#xff09;,我已經有一個示例 jpeg 文件 - Read-write-excel-npoi.jpg &#xff0c;我們將嘗試…

【學習筆記】理解深度學習的基礎:機器學習

1. 機器學習基礎 1.1 機器學習的定義與重要性 定義&#xff1a;深度學習是機器學習的一種特定形式。為了深入理解深度學習&#xff0c;必須牢固掌握機器學習的基本原理。機器學習算法是一種能夠從數據中學習的算法&#xff0c;通過經驗E在任務T上提高性能度量P&#xff08;Mi…

Observability:將 OpenTelemetry 添加到你的 Flask 應用程序

作者&#xff1a;來自 Elastic jessgarson 待辦事項列表可以幫助管理與假期計劃相關的所有購物和任務。使用 Flask&#xff0c;你可以輕松創建待辦事項列表應用程序&#xff0c;并使用 Elastic 作為遙測后端&#xff0c;通過 OpenTelemetry 對其進行監控。 Flask 是一個輕量級…

使用Matplotlib顯示中文的方法

1 問題提出 使用圖1所示的代碼進行matplotlib繪圖時&#xff0c;因為其默認不支持中文&#xff0c;此時無法顯示正確內容&#xff0c;如圖2所示。 圖1 matplotlib繪圖繪圖代碼 圖2 matplotlib無法顯示中文 2 問題解決 2.1 設置全局字體 在圖1所示的代碼中&#xff0c;第13…

詳解opencv resize之INTER_LINEAR和INTER_AREA

一。先簡單介紹一下resize的用法 src&#xff1a;輸入圖&#xff0c; dst&#xff1a;輸出圖 dsize&#xff1a;輸出圖的寬高&#xff0c;如果dsize不為空&#xff08;即寬高都不是0&#xff09;&#xff0c;則以dsize為準進行resize。 fx, fy是放大縮小的比例&#xff0c;是…

UnityDemo-TheBrave-制作筆記

這是我跟著b站up主MStudio的視頻學習制作的&#xff0c;大體上沒有去做一些更新的東西&#xff0c;這里只是一個總的總結。在文章的最后&#xff0c;我會放上可以游玩該游戲的鏈接和exe可執行文件&#xff0c;不過沒有對游戲內容進行什么加工&#xff0c;只有基本的功能實現罷了…

使用LSTM預測股票收盤價

在金融數據預測中&#xff0c;LSTM&#xff08;長短期記憶網絡&#xff09;憑借其在時間序列數據建模中的優勢&#xff0c;成為了分析股票價格趨勢的熱門選擇。本篇博客將以完整的代碼實現為例&#xff0c;展示如何利用LSTM網絡對股票收盤價進行預測&#xff0c;并從數據處理到…

模擬SpringIOCAOP

一、IOC容器 Ioc負責創建&#xff0c;管理實例&#xff0c;向使用者提供實例&#xff0c;ioc就像一個工廠一樣&#xff0c;稱之為Bean工廠 1.1 Bean工廠的作用 先分析一下Bean工廠應具備的行為 1、需要一個獲取實例的方法&#xff0c;根據一個參數獲取對應的實例 getBean(…

預編譯SQL

預編譯SQL 預編譯SQL是指在數據庫應用程序中&#xff0c;SQL語句在執行之前已經通過某種機制&#xff08;如預編譯器&#xff09;進行了解析、優化和準備&#xff0c;使得實際執行時可以直接使用優化后的執行計劃&#xff0c;而不需要每次都重新解析和編譯。這么說可能有一些抽…

Centos9 + Docker 安裝 MySQL8.4.0 + 定時備份數據庫到本地

Centos9 + Docker 安裝 MySQL8.4.0 + 定時備份數據庫到本地 創建目錄,創建配置文件啟動容器命令定時備份MySQL執行腳本Linux每日定時任務命令文件內參數其他時間參數AT一次性定時任務創建目錄,創建配置文件 $ mkdir -p /opt/mysql/conf$ vim /opt/mysql/conf/my.cnf[mysql] #…

軟件測試預備知識⑥—搭建Web服務器

在軟件測試的廣闊領域中&#xff0c;搭建Web服務器是一項極為關鍵的技能。它不僅有助于模擬真實的應用環境&#xff0c;方便我們對Web應用進行全面且深入的測試&#xff0c;還能讓測試人員更好地掌控測試場景&#xff0c;提升測試效率與質量。接下來&#xff0c;讓我們一同深入…

計算機視覺算法實戰——打電話行為檢測

?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連? ??????? ??????????????? ?????? ? 1. 引言?? 隨著智能手機的普及&#xff0c;打電話行為檢測成為了計算機視…

事務的隔離級別和MDL

文章目錄 說明不同隔離級別可能發生的現象關鍵現象解釋MDL&#xff08;元數據鎖&#xff0c;Metadata Lock&#xff09;MDL 的作用MDL 的工作原理MDL 鎖的常見場景如何避免 MDL 阻塞 說明 本文章由大模型對話整理而來&#xff0c;如果有錯誤之處&#xff0c;請在評論區留言指正…

Linux第二課:LinuxC高級 學習記錄day01

0、大綱 0.1、Linux 軟件安裝&#xff0c;用戶管理&#xff0c;進程管理&#xff0c;shell 命令&#xff0c;硬鏈接和軟連接&#xff0c;解壓和壓縮&#xff0c;功能性語句&#xff0c;結構性語句&#xff0c;分文件&#xff0c;make工具&#xff0c;shell腳本 0.2、C高級 …