STC15W104 定时器实现灯的闪烁(定时器原理讲解)

这篇具有很好参考价值的文章主要介绍了STC15W104 定时器实现灯的闪烁(定时器原理讲解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一:STC15W104单片机有几个定时器

STC15W104单片机共有2个定时器,分别为定时器0、定时器2。

stc15f104w,51单片机,单片机,stm32,嵌入式硬件

二:定时器的作用

定时器是单片机中的一种常用外设,用于在一定时间间隔内产生中断。

定时器通常用于计时、测量时间间隔、生成PWM信号等应用中。
在STC15W104单片机中,定时器可以被配置为定时器/计数器模式。
在定时器模式下,定时器会在经过指定的时间间隔后产生中断信号;
在计数器模式下,定时器则会根据外部时钟输入进行计数,当计数值达到指定阈值时,定时器会产生中断信号。定时器的使用需要配置相应的寄存器,具体使用方法可参考相关的数据手册。

三:定时器的工作模式

定时器的工作模式可以通过相应的寄存器进行配置,具体而言,可以通过以下寄存器进行配置:

  • TCON:定时器控制寄存器,用于配置定时器的工作模式、中断标志位等。
  • TMOD:定时器模式寄存器,用于配置定时器的工作模式、计数值计量单位、计数/定时器选择等。
  • THx/TLx:定时器高/低位计数寄存器,用于存储定时器计数值的高8位/低8位。

在定时器模式下,定时器的工作流程如下:

  1. 首先,需要配置TMOD寄存器,以选择定时器的工作模式(0/1/2/3)和计数值计量单位(12位/16位)。
  2. 然后,需要配置THx/TLx寄存器,以设置定时器的初始计数值。
  3. 接下来,需要启动定时器,以开始计时。在启动定时器时,需要设置TCON寄存器中的相应位,以使定时器开始工作。
  4. 当定时器计数值达到设定的阈值时,定时器会产生中断信号,此时会将TCON寄存器中的中断标志位置位,从而触发中断服务程序。

在计数器模式下,定时器的工作流程与定时器模式类似,唯一的区别在于定时器计数值的来源不同。在计数器模式下,定时器会根据外部时钟输入进行计数,因此需要将外部时钟输入与定时器相连接。

分频模式

在STC15W104单片机的定时器中,定时器0和定时器1支持外部时钟源的分频功能。
分频功能可以将外部时钟源的频率除以指定的系数,从而降低定时器的计数速度。分频系数可以通过相应的寄存器进行配置,具体而言,可以通过以下寄存器进行配置:

  • TMOD中的高4位(M1、M0):用于选择分频系数。
  • AUXR中的低2位(T0x12、T1x12):用于选择分频系数的倍频。

其中,TMOD寄存器的M1、M0位用于选择分频系数,具体配置方法如下:

  • M1=0,M0=0:不分频。
  • M1=0,M0=1:分频2。
  • M1=1,M0=0:分频4。
  • M1=1,M0=1:分频8。

AUXR寄存器的T0x12、T1x12位用于选择分频系数的倍频,具体配置方法如下:

  • T0x12=0,T1x12=0:不倍频。
  • T0x12=0,T1x12=1:倍频2。
  • T0x12=1,T1x12=0:不倍频。
  • T0x12=1,T1x12=1:不倍频。

通过分频功能,可以有效地降低定时器的计数速度,从而适应不同的计时需求。

四:定时器定时时间的计算

ISP软件寻找例程

stc15f104w,51单片机,单片机,stm32,嵌入式硬件

程序源码

/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC15F4K60S4 系列 定时器0的16位自动重装载模式举例---------------*/
/* --- Mobile: (86)13922805190 -------------- -------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966-------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.GXWMCU.com --------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序        */
/* 如果要在文章中应用此代码,请在文章中注明使用了STC的资料及程序        */
/*---------------------------------------------------------------------*/

//本示例在Keil开发环境下请选择Intel的8058芯片型号进行编译
//若无特别说明,工作频率一般为11.0592MHz


#include "reg51.h"

typedef unsigned char BYTE;
typedef unsigned int WORD;

//-----------------------------------------------

#define FOSC 11059200L

#define T1MS (65536-FOSC/1000)      //1T模式
//#define T1MS (65536-FOSC/12/1000) //12T模式

sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;

sfr AUXR = 0x8e;                    //Auxiliary register
sbit P10 = P1^0;

//-----------------------------------------------

/* Timer0 interrupt routine */
void tm0_isr() interrupt 1
{
    P10 = ! P10;                    //将测试口取反
}

//-----------------------------------------------

/* main program */
void main()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;
    P6M0 = 0x00;
    P6M1 = 0x00;
    P7M0 = 0x00;
    P7M1 = 0x00;

    AUXR |= 0x80;                   //定时器0为1T模式
//  AUXR &= 0x7f;                   //定时器0为12T模式

    TMOD = 0x00;                    //设置定时器为模式0(16位自动重装载)
    TL0 = T1MS;                     //初始化计时值
    TH0 = T1MS >> 8;
    TR0 = 1;                        //定时器0开始计时
    ET0 = 1;                        //使能定时器0中断
    EA = 1;

    while (1);
}


然后程序进行移植修改

下面是我们修改好的程序文章来源地址https://www.toymoban.com/news/detail-636538.html

到了这里,关于STC15W104 定时器实现灯的闪烁(定时器原理讲解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学习笔记|定时器|STC中断|定时器时间计算|STC32G单片机视频开发教程(冲哥)|第十一集:定时器的作用和意义

    什么是定时器:定时器-与非网 上节课的一段代码: TimeCount++然后一个延时1毫秒,每运行1ms,变量就会加一。 系统已经运行了多少个毫秒。 实际使用时的代码如下, 判断按键有沿有按下的时候,我们等待按键松开,还有一个while循环。 如果没有松开,会一直死在这一行。所以,

    2024年02月09日
    浏览(44)
  • STC8学习5 - 定时器

    定时器也可以做为计数器,其实他们本质上的原理是一样的,定时器是计数单片机内部的系统时钟,每1个或者12个时钟脉冲,就加一。计数器则是记录外部输入脉冲。 1. 定时器0有四种工作模式,这里使用的是定时器0的16位可重新装载模式,16位(0x0000~0xFFFF)即可以从0数到

    2024年02月06日
    浏览(28)
  • STC89C52定时器的简介

    针对于STC89C52RC而言,这个芯片内部包含了三个定时器——T0、T1和T2,他们的中断优先级分别是1、3和5。 怎么还有一个定时器2呢?博主也是今天整理这篇博客的时候,翻阅芯片手册才发现的。如果说,我们经常用的T0和T1叫做通用定时器的话,那么T2我愿称之为高级定时器。今

    2024年02月05日
    浏览(34)
  • STC89C52RC的定时器/计数器

    目录 一、STC89C52RC的定时器/计数器 二、定时器/计数器的工作方式如何选择 三、使用Timer0实现1秒定时 四、使用Timer1实现计数器功能 STC89C52RC芯片内置了2个定时器/计数器(Timer0和Timer1),这两个模块可以用于实现定时和计数功能。 这两个定时器/计数器模块的主要特性如下:

    2024年02月07日
    浏览(34)
  • [STC32F12K54入门第二步]Timer定时器

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STC32F和STC32G的定时器都是16位的。而且寄存器地址是一样的,程序也是通用的。寄存器地址我也不讲了,想知道的自己查数据手册或者看我写的STC32G12K128的定时器内容。 Timer.h Timer.c 100ms让P21的LED灯电平变

    2024年02月11日
    浏览(36)
  • RT-Thread 15. list_timer与软定时器

    1. 代码 2. list_timer结果 3. 解释 0x0000012c: 300个时钟周期,即处于rt_thread_mdelay(3000); 0x00000032: 50个时钟周期,即处于rt_thread_mdelay(500); 4.增加软定时器 //usrtimer.c 5. MSH命令开启软件定时器 timer_static_sample()会执行,timer1和timer2会开始工作。输入list_timer,发现多了timer1、timer2

    2024年01月19日
    浏览(32)
  • STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4

    STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4 Proteus 仿真小实验: STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4 功能: 硬件组成:STC15W4K32S4单片机 +LCD12864显示器+4x4矩阵键盘+HX711电子秤 1.单片机通过HX711读取称重传感器数据计算出重量,重量乘于单价可以

    2024年02月12日
    浏览(31)
  • 蓝桥杯单片机学习6——定时器/计数器&定时器实现秒表功能

    上一期我们学习了外部中断的相关内容,现在我接着来学习定时器。 定时器/计数器是一种能够对内部时钟信号或者外部输入信号进行计数,当计数值达到设定要求时,向CPU提出中断请求,从而实现定时或计数功能的外设。定时器的基本工作原理是进行计数。 举个栗子 :你可

    2024年02月04日
    浏览(38)
  • flink中使用外部定时器实现定时刷新

    我们经常会使用到比如数据库中的配置表信息,而我们不希望每次都去查询db,那么我们就想定时把db配置表的数据定时加载到flink的本地内存中,那么如何实现呢? 1.在open函数中进行定时器的创建和定时加载,这个方法对于所有的RichFunction富函数都适用,包括RichMap,RichFilter,

    2024年02月06日
    浏览(34)
  • 定时器的实现原理

    定时器的主要用途是执行定时任务。 定时任务在很多场景都需要用到,比如游戏的 Buff 实现,Redis 中的过期任务,Linux 中的定时任务,电商未支付订单的关闭等等。 定时器需要支持如下几个操作: 创建定时器 添加定时任务 取消定时任务 执行到期任务(查找) 以下为常见实

    2024年02月11日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包