0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)定時(shí)器驅(qū)動(dòng)

華仔的編程隨筆 ? 來(lái)源:華仔的編程隨筆 ? 作者:華仔的編程隨筆 ? 2023-04-23 09:16 ? 次閱讀

定時(shí)器TIMER0、TIMER1

RD8T37 系列單片機(jī)內(nèi)部的 Timer0 和 Timer1 是兩個(gè) 16 位定時(shí)器/計(jì)數(shù)器,它們具有計(jì)數(shù)方式和定時(shí)方式兩種工作模式。特殊功能寄存器 TMOD 中有一個(gè)控制位 C/TX 來(lái)選擇 T0 和T1 是定時(shí)器還是計(jì)數(shù)器。它們本質(zhì)上都是一個(gè)加法計(jì)數(shù)器,只是計(jì)數(shù)的來(lái)源不同。定時(shí)器的來(lái)源為系統(tǒng)時(shí)鐘或者其分頻時(shí)鐘,但計(jì)數(shù)器的來(lái)源為外部管腳的輸入脈沖。只有在 TRx=1 的時(shí)候,T0 和 T1 才會(huì)被打開(kāi)計(jì)數(shù)。

計(jì)數(shù)器模式下,P0.2/T0 和 P0.3/T1 管腳上的每一個(gè)脈沖,T0 和T1的計(jì)數(shù)值分別增加 1。定時(shí)器模式下,可通過(guò)特殊功能寄存器 TMCON 來(lái)選擇T0和 T1 的計(jì)來(lái)源是 sys/12 或 fsys (fsys 為分頻后的系統(tǒng)時(shí)鐘)。

定時(shí)器/計(jì)數(shù)器 T0 有4 種工作模式,定時(shí)器/計(jì)數(shù)器 T1有 3 種工作模式(模式三不存在):

1.模式 0: 13 位定時(shí)器/計(jì)數(shù)器模式

2.模式 1: 16 位定時(shí)器/計(jì)數(shù)器模式

3.模式 2: 8 位自動(dòng)重模式

  1. 模式 3: 兩個(gè)8 位定時(shí)器/計(jì)數(shù)器模式

在上述模式中,T0 和 T1 的模式 0、1、2 都相同,模式3 不同。

T0 和 T1相關(guān)特殊功能寄存器

image.png

定時(shí)器0 功能寄存器的宏定義:

/*TIMER*/	
sfr   TCON   = 0X88;  //定時(shí)器控制寄存器
sfr   TMOD   = 0X89;  //定時(shí)器工作模式寄存器
sfr   TL0    = 0X8A;  //定時(shí)器0低8位
sfr   TL1    = 0X8B;  //定時(shí)器1低8位
sfr   TH0    = 0X8C;  //定時(shí)器0高8位
sfr   TH1    = 0X8D;  //定時(shí)器1高8位

定時(shí)器0初始化

void Timer0Iint(void)
{
	TMOD |= 0x01;           // 配置定時(shí)器0為 16位定時(shí)器,  TH0、TL0全用 
	TH0 =(65536-1000)/256;   //1000us定時(shí),即1毫秒溢出產(chǎn)生中斷
	TL0 =(65536-1000)%256;  //1000us定時(shí),即1毫秒溢出產(chǎn)生中斷
	ET0 = 1;				 //開(kāi)啟定時(shí)器0中斷
	EA = 1;				//開(kāi)啟全局中斷
	TR0 = 1;				//定時(shí)器0開(kāi)始計(jì)數(shù);
}

定時(shí)器0中斷函數(shù):

void Timer0() interrupt 1
{
	//每次產(chǎn)生中斷后初始化定時(shí)器初值, 1ms秒產(chǎn)生1次中斷
	TH0=(65536-1000)/256;
	TL0=(65536-1000)%256;
	//500毫秒執(zhí)行次LED1反轉(zhuǎn)
	count ++;
	if(count == 500)
	{
		LED1 = ~LED1;
		count = 0;
	}
	
}

main.c代碼如下:

#include "RD8T37x_C.H"


sbit LED1 = P3^1;
sbit LED2 = P3^2;
static uint32_t count = 0;

void LED_Init(void)
{
	P3CON |= 0x06; //P31輸出
}

void Timer0Iint(void)
{
	TMOD |= 0x01;  // 配置定時(shí)器0為 16位定時(shí)器,  TH0、TL0全用 
	TH0 =(65536-1000)/256;   //1000us定時(shí),即1毫秒溢出產(chǎn)生中斷
	TL0 =(65536-1000)%256;  //1000us定時(shí),即1毫秒溢出產(chǎn)生中斷
	ET0 = 1;									//開(kāi)啟定時(shí)器0中斷
	EA = 1;										//開(kāi)啟全局中斷
	TR0 = 1;									//定時(shí)器0開(kāi)始計(jì)數(shù);
}

void main(void)
{
	LED_Init();
	Timer0Iint();
	while(1);
}

void Timer0() interrupt 1
{
	//每次產(chǎn)生中斷后初始化定時(shí)器初值, 1ms秒產(chǎn)生1次中斷
	TH0=(65536-1000)/256;
	TL0=(65536-1000)%256;
	//500毫秒執(zhí)行次LED1反轉(zhuǎn)
	count ++;
	if(count == 500)
	{
		LED1 = ~LED1;
		count = 0;
	}
	
}

下載到開(kāi)發(fā)板后就實(shí)現(xiàn)P3.1閃燈了。

*附件:閃燈.zip

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6030

    文章

    44489

    瀏覽量

    631997
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2253

    瀏覽量

    94287
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3232

    瀏覽量

    114331
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)定時(shí)器中斷應(yīng)用案例

    定時(shí)器中斷,顧名思義就是在規(guī)定的時(shí)間內(nèi)發(fā)送中斷請(qǐng)求,要實(shí)現(xiàn)定時(shí)器中斷,單片機(jī)需要能夠正確地計(jì)算時(shí)間,單片機(jī)是如何進(jìn)行計(jì)時(shí)的呢?
    發(fā)表于 10-31 14:49 ?1710次閱讀
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>定時(shí)器</b>中斷應(yīng)用案例

    單片機(jī)定時(shí)器的用法

    本章以CW32通用定時(shí)器為例介紹單片機(jī)定時(shí)器的用法。
    的頭像 發(fā)表于 01-04 10:37 ?1310次閱讀
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>定時(shí)器</b>的用法

    基于51單片機(jī)定時(shí)器2的操作與實(shí)現(xiàn)

    基于51單片機(jī)定時(shí)器2的操作與實(shí)現(xiàn),51單片機(jī)定時(shí)器2的使用!
    發(fā)表于 02-22 17:53 ?12次下載

    52單片機(jī)有幾個(gè)定時(shí)器?52單片機(jī)定時(shí)器1和52單片機(jī)定時(shí)器2程序?qū)Ρ?/a>

    52單片機(jī)有幾個(gè)定時(shí)器?STC89C52RC其實(shí)是有三個(gè)定時(shí)器單片機(jī),STC89C52RC共有3個(gè)定時(shí)器,分別是T0、T1、T2。而51
    發(fā)表于 11-10 14:30 ?3.5w次閱讀

    單片機(jī)定時(shí)器知識(shí)課件

    單片機(jī)定時(shí)器基礎(chǔ)知識(shí)與使用技巧。
    發(fā)表于 12-20 12:17 ?2次下載

    51單片機(jī)定時(shí)器工作原理

    51單片機(jī)定時(shí)器工作原理及用法
    的頭像 發(fā)表于 03-14 13:51 ?9.5w次閱讀

    ATmega16單片機(jī)教程之ATmega16單片機(jī)定時(shí)器的分析與設(shè)計(jì)應(yīng)用概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是ATmega16單片機(jī)教程之ATmega16單片機(jī)定時(shí)器的分析與設(shè)計(jì)應(yīng)用概述主要內(nèi)容包括了:1、單片機(jī)定時(shí)器的基
    發(fā)表于 12-07 08:00 ?14次下載
    ATmega16<b class='flag-5'>單片機(jī)</b>教程之ATmega16<b class='flag-5'>單片機(jī)</b><b class='flag-5'>定時(shí)器</b>的分析與設(shè)計(jì)應(yīng)用概述

    基于單片機(jī)定時(shí)器的設(shè)計(jì)方法

    單片機(jī)實(shí)現(xiàn)一個(gè)定時(shí)器只要對(duì)單片機(jī)里的特殊寄存進(jìn)行設(shè)置就可以實(shí)現(xiàn)了,下面我與朋友們說(shuō)說(shuō)這個(gè)0到9.9秒定時(shí)器的設(shè)計(jì)方法。
    的頭像 發(fā)表于 11-02 16:58 ?1w次閱讀
    基于<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>定時(shí)器</b>的設(shè)計(jì)方法

    基于51單片機(jī)定時(shí)器

    設(shè)計(jì)思路。這樣自己拿到任何型號(hào)的51單片機(jī),只要有原理圖,都可以自主設(shè)計(jì)。博主剛接觸單片機(jī),才疏學(xué)淺,可能會(huì)出現(xiàn)設(shè)計(jì)不足和錯(cuò)誤,歡迎大家評(píng)論區(qū)交流。^ _ ^/********************************************************
    發(fā)表于 11-04 21:06 ?35次下載
    基于51<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>定時(shí)器</b>

    51單片機(jī)——定時(shí)器的原理和使用

    定時(shí)器的原理1.cpu時(shí)序的有關(guān)知識(shí)震蕩周期:為單片機(jī)提供定時(shí)信號(hào)的震蕩源的周期(由外部的晶振)狀態(tài)周期:2個(gè)震蕩周期,用s表示機(jī)械周期 6個(gè)狀態(tài)周期,12個(gè)震蕩周期 (12MHz的晶振1us)指令
    發(fā)表于 11-10 18:50 ?71次下載
    51<b class='flag-5'>單片機(jī)</b>——<b class='flag-5'>定時(shí)器</b>的原理和使用

    51單片機(jī)——定時(shí)器

    51單片機(jī)——定時(shí)器為什么使用定時(shí)器?定時(shí)器原理?定時(shí)器設(shè)置中斷配置源代碼為什么使用定時(shí)器?之前
    發(fā)表于 11-11 16:36 ?40次下載
    51<b class='flag-5'>單片機(jī)</b>——<b class='flag-5'>定時(shí)器</b>

    51單片機(jī)定時(shí)器中斷

    定時(shí)器介紹:51單片機(jī)定時(shí)器屬于單片機(jī)的內(nèi)部資源,其電路連接和運(yùn)轉(zhuǎn)均在單片機(jī)的內(nèi)部完成定時(shí)器
    發(fā)表于 11-11 19:36 ?7次下載
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>定時(shí)器</b>中斷

    【MSP430單片機(jī)定時(shí)器

    【MSP430單片機(jī)定時(shí)器
    發(fā)表于 11-19 16:21 ?8次下載
    【MSP430<b class='flag-5'>單片機(jī)</b>】<b class='flag-5'>定時(shí)器</b>篇

    51單片機(jī)定時(shí)器/計(jì)數(shù)

    一、課前須知:1、51單片機(jī)有兩組定時(shí)器/計(jì)數(shù),因?yàn)榧瓤梢?b class='flag-5'>定時(shí),也可以計(jì)數(shù),所以稱之為定時(shí)器/計(jì)數(shù)
    發(fā)表于 11-20 20:06 ?46次下載
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>定時(shí)器</b>/計(jì)數(shù)<b class='flag-5'>器</b>

    51單片機(jī)定時(shí)器中斷

    定時(shí)器介紹:51單片機(jī)定時(shí)器屬于單片機(jī)的內(nèi)部資源,其電路連接和運(yùn)轉(zhuǎn)均在單片機(jī)的內(nèi)部完成定時(shí)器
    發(fā)表于 11-20 20:36 ?15次下載
    51<b class='flag-5'>單片機(jī)</b><b class='flag-5'>定時(shí)器</b>中斷