0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机定时器驱动

华仔的编程随笔 来源:华仔的编程随笔 作者:华仔的编程随笔 2023-04-23 09:16 次阅读

定时器TIMER0、TIMER1

RD8T37 系列单片机内部的 Timer0 和 Timer1 是两个 16 位定时器/计数器,它们具有计数方式和定时方式两种工作模式。特殊功能寄存器 TMOD 中有一个控制位 C/TX 来选择 T0 和T1 是定时器还是计数器。它们本质上都是一个加法计数器,只是计数的来源不同。定时器的来源为系统时钟或者其分频时钟,但计数器的来源为外部管脚的输入脉冲。只有在 TRx=1 的时候,T0 和 T1 才会被打开计数。

计数器模式下,P0.2/T0 和 P0.3/T1 管脚上的每一个脉冲,T0 和T1的计数值分别增加 1。定时器模式下,可通过特殊功能寄存器 TMCON 来选择T0和 T1 的计来源是 sys/12 或 fsys (fsys 为分频后的系统时钟)。

定时器/计数器 T0 有4 种工作模式,定时器/计数器 T1有 3 种工作模式(模式三不存在):

1.模式 0: 13 位定时器/计数器模式

2.模式 1: 16 位定时器/计数器模式

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

  1. 模式 3: 两个8 位定时器/计数器模式

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

T0 和 T1相关特殊功能寄存器

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毫秒溢出产生中断
	TL0 =(65536-1000)%256;  //1000us定时,即1毫秒溢出产生中断
	ET0 = 1;				 //开启定时器0中断
	EA = 1;				//开启全局中断
	TR0 = 1;				//定时器0开始计数;
}

定时器0中断函数:

void Timer0() interrupt 1
{
	//每次产生中断后初始化定时器初值, 1ms秒产生1次中断
	TH0=(65536-1000)/256;
	TL0=(65536-1000)%256;
	//500毫秒执行次LED1反转
	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毫秒溢出产生中断
	TL0 =(65536-1000)%256;  //1000us定时,即1毫秒溢出产生中断
	ET0 = 1;									//开启定时器0中断
	EA = 1;										//开启全局中断
	TR0 = 1;									//定时器0开始计数;
}

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

void Timer0() interrupt 1
{
	//每次产生中断后初始化定时器初值, 1ms秒产生1次中断
	TH0=(65536-1000)/256;
	TL0=(65536-1000)%256;
	//500毫秒执行次LED1反转
	count ++;
	if(count == 500)
	{
		LED1 = ~LED1;
		count = 0;
	}
	
}

下载到开发板后就实现P3.1闪灯了。

*附件:闪灯.zip

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6032

    文章

    44513

    浏览量

    632695
  • 计数器
    +关注

    关注

    32

    文章

    2253

    浏览量

    94339
  • 定时器
    +关注

    关注

    23

    文章

    3237

    浏览量

    114434
收藏 人收藏

    评论

    相关推荐

    单片机定时器中断应用案例

    定时器中断,顾名思义就是在规定的时间内发送中断请求,要实现定时器中断,单片机需要能够正确地计算时间,单片机是如何进行计时的呢?
    发表于 10-31 14:49 1796次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>定时器</b>中断应用案例

    单片机定时器的用法

    本章以CW32通用定时器为例介绍单片机定时器的用法。
    的头像 发表于 01-04 10:37 1340次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>定时器</b>的用法

    基于51单片机定时器2的操作与实现

    基于51单片机定时器2的操作与实现,51单片机定时器2的使用!
    发表于 02-22 17:53 12次下载

    52单片机有几个定时器?52单片机定时器1和52单片机定时器2程序对比

    52单片机有几个定时器?STC89C52RC其实是有三个定时器单片机,STC89C52RC共有3个定时器,分别是T0、T1、T2。而51
    发表于 11-10 14:30 3.5w次阅读

    单片机定时器知识课件

    单片机定时器基础知识与使用技巧。
    发表于 12-20 12:17 2次下载

    51单片机定时器工作原理

    51单片机定时器工作原理及用法
    的头像 发表于 03-14 13:51 9.5w次阅读

    ATmega16单片机教程之ATmega16单片机定时器的分析与设计应用概述

    本文档的主要内容详细介绍的是ATmega16单片机教程之ATmega16单片机定时器的分析与设计应用概述主要内容包括了:1、单片机定时器的基
    发表于 12-07 08:00 14次下载
    ATmega16<b class='flag-5'>单片机</b>教程之ATmega16<b class='flag-5'>单片机</b><b class='flag-5'>定时器</b>的分析与设计应用概述

    基于单片机定时器的设计方法

    单片机实现一个定时器只要对单片机里的特殊寄存进行设置就可以实现了,下面我与朋友们说说这个0到9.9秒定时器的设计方法。
    的头像 发表于 11-02 16:58 1w次阅读
    基于<b class='flag-5'>单片机</b>的<b class='flag-5'>定时器</b>的设计方法

    基于51单片机定时器

    设计思路。这样自己拿到任何型号的51单片机,只要有原理图,都可以自主设计。博主刚接触单片机,才疏学浅,可能会出现设计不足和错误,欢迎大家评论区交流。^ _ ^/********************************************************
    发表于 11-04 21:06 35次下载
    基于51<b class='flag-5'>单片机</b>的<b class='flag-5'>定时器</b>

    51单片机——定时器的原理和使用

    定时器的原理1.cpu时序的有关知识震荡周期:为单片机提供定时信号的震荡源的周期(由外部的晶振)状态周期:2个震荡周期,用s表示机械周期 6个状态周期,12个震荡周期 (12MHz的晶振1us)指令
    发表于 11-10 18:50 71次下载
    51<b class='flag-5'>单片机</b>——<b class='flag-5'>定时器</b>的原理和使用

    51单片机——定时器

    51单片机——定时器为什么使用定时器定时器原理?定时器设置中断配置源代码为什么使用定时器?之前
    发表于 11-11 16:36 40次下载
    51<b class='flag-5'>单片机</b>——<b class='flag-5'>定时器</b>

    51单片机定时器中断

    定时器介绍:51单片机定时器属于单片机的内部资源,其电路连接和运转均在单片机的内部完成定时器
    发表于 11-11 19:36 7次下载
    51<b class='flag-5'>单片机</b><b class='flag-5'>定时器</b>中断

    【MSP430单片机定时器

    【MSP430单片机定时器
    发表于 11-19 16:21 8次下载
    【MSP430<b class='flag-5'>单片机</b>】<b class='flag-5'>定时器</b>篇

    51单片机定时器/计数

    一、课前须知:1、51单片机有两组定时器/计数,因为既可以定时,也可以计数,所以称之为定时器/计数
    发表于 11-20 20:06 46次下载
    51<b class='flag-5'>单片机</b><b class='flag-5'>定时器</b>/计数<b class='flag-5'>器</b>

    51单片机定时器中断

    定时器介绍:51单片机定时器属于单片机的内部资源,其电路连接和运转均在单片机的内部完成定时器
    发表于 11-20 20:36 15次下载
    51<b class='flag-5'>单片机</b><b class='flag-5'>定时器</b>中断