RM新时代网站-首页

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

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

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

單片機定時器驅(qū)動

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

定時器TIMER0、TIMER1

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

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

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

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

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

3.模式 2: 8 位自動重模式

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

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

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

image.png

定時器0 功能寄存器的宏定義:

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

定時器0初始化

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

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

void Timer0() interrupt 1
{
	//每次產(chǎn)生中斷后初始化定時器初值, 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;  // 配置定時器0為 16位定時器,  TH0、TL0全用 
	TH0 =(65536-1000)/256;   //1000us定時,即1毫秒溢出產(chǎn)生中斷
	TL0 =(65536-1000)%256;  //1000us定時,即1毫秒溢出產(chǎn)生中斷
	ET0 = 1;									//開啟定時器0中斷
	EA = 1;										//開啟全局中斷
	TR0 = 1;									//定時器0開始計數(shù);
}

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

void Timer0() interrupt 1
{
	//每次產(chǎn)生中斷后初始化定時器初值, 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;
	}
	
}

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

*附件:閃燈.zip

審核編輯:湯梓紅

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

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634629
  • 計數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2256

    瀏覽量

    94476
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3246

    瀏覽量

    114715
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    單片機定時器的用法

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

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

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

    51單片機課件定時器

    51單片機課件定時器
    發(fā)表于 05-10 11:24 ?3次下載

    52單片機有幾個定時器?52單片機定時器1和52單片機定時器2程序?qū)Ρ?/a>

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

    51單片機定時器工作原理

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

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

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

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

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

    基于51單片機定時器

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

    51單片機——定時器的原理和使用

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

    51單片機——定時器

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

    51單片機定時器中斷

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

    【MSP430單片機定時器

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

    51單片機定時器/計數(shù)

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

    51單片機定時器中斷

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