8.STC15W408AS单片机定时器/计数器

发布者:Qingfang最新更新时间:2022-08-04 来源: csdn关键字:STC15W408AS  单片机  定时器  计数器 手机看文章 扫描二维码
随时随地手机看文章

一、定时器计数器简介

STC15W408AS只有定时器0和定时器2,工作工作位定时器或者计数器模式。定时器/计数器的核心部件是一个加法计数器,其本质是对脉冲进行计数。只是计数脉冲来源不同:如果计数脉冲来自系统时钟,则为定时方式,此时定时器/计数器每12个时钟或者每1个时钟得到一个计数脉冲,计数值加1;如果计数脉冲来自单片机外部引脚(T0为P3.4,T1为P3.5,T2为P3.1,T3为P0.7,T4为P0.5),则为计数方式,每来一个脉冲加1。


当定时器/计数器T0、T1及T2工作在定时模式时,特殊功能寄存器AUXR中的T0x12、T1x12和T2x12分别决定是系统时钟/12还是系统时钟/1(不分频)后让T0、T1和T2进行计数。


定时器/计数器0有4种工作模式:模式0(16位自动重装载模式),模式1(16位不可重装载模式),模式2(8位自动重装模式),模式3(不可屏蔽中断的16位自动重装载模式)。定时器T2的工作模式固定为16位自动重装载模式。T2可以当定时器使用,也可以当串口的波特率发生器和可编程时钟输出。


二、定时器/计数器的相关寄存器

 图片       

2.1 定时器/计数器0/1控制寄存器TCON

TCON为定时器/计数器T0、T1的控制寄存器,同时也锁存T0、T1溢出中断源和外部请求中断源等,TCON格式如下:


TCON : 定时器/计数器中断控制寄存器 (可位寻址)

图片       

TF0:T0溢出中断标志。T0被允许计数以后,从初值开始加1计数,当产生溢出时,由硬件置“1”TF0,向CPU请求中断,一直保持CPU响应该中断时,才由硬件清0(也可由查询软件清0)。


TR0: 定时器T0的运行控制位。该位由软件置位和清零。当GATE(TMOD.3)=0,TR0=1时 就允许T0开始计数,TR0=0时禁止T0计数。当GATE(TMOD.3)=1,TR0=1且INT0输       入高电平时,才允许T0计数,TR0=0时禁止T0计数。


2.2 定时器/计数器工作模式寄存器TMOD

定时和计数功能由特殊功能寄存器TMOD的控制位C/T进行选择,TMOD寄存器的各位信息如下表所列。可以看出,2个定时/计数器有4种操作模式,通过TMOD的M1和M0选择。2个定时/计数器的模式0、1和2都相同,模式3不同,各模式下的功能如下所述。


寄存器TMOD各位的功能描述

图片       

2.3 辅助寄存器AUXR

STC15系列单片机 1T 的8051单片机,为兼容传统8051,定时器0 , 复位后是传统8051的速度,即12分频,这是为了兼容传统8051。但也可不进行12分频,通过设置新增加的特殊功能寄存器AUXR,将T0,T1,T2 设置普通111条机器指令执行速度是固定的,快4到24倍,无法改变。


AUXR格式如下:


AUXR : 辅助寄存器

图片       

2.4 定时器T0和T1的中断控制寄存器:IE和IP

图片       

三、测试程序

3.1 定时器0模式0(16位自动重装载模式)

  图片         

#include "stc15.h"

#define uint unsigned int

 

uint t = 0;

 

void main()

{

  P1M0 = 0x02;

  P1M1 = 0x00;

 

// 定时器 0 

  AUXR |= 0x80;  // 定时器0 1T模式

  TMOD = 0x00;   // 定时器模式0 16位自动重载模式

  TL0 = 0xAE;

  TH0 = 0xFB;    // 计数值 100us@11.0592MHz

  TR0 = 1;       // 定时器开始计时

  ET0 = 1;       // 使能定时器1中断

  EA  = 1;       // 打开总中断

 

  while (1);

}

 

void tm1_isr() interrupt 1

{

  t = t + 1;

  if(t >= 100){ // 100 * 100us = 10ms P1.1端口取反输出

    t = 0;

    P11 = !P11;

  }

}


通过示波器可以测得波形搞好是50Hz,每个周期20ms。

图片

这里有个问题就是定时器的初始值的计算。


定时器定时时长(100us) = SYSclk/(65536 - [TH0,TL0]), SYSclk = 11.0592MHz。


这里计算得到[TH0,TL0] = 64430,转换为十六进制就是FBAE,则TH0 = FB,TL0 = AE。


3.2 定时器2作为计数器

#include "stc15.h"

 

void main()

{

  P1M0 = 0x02;

  P1M1 = 0x00;

    P11 = 0;       // 初始设置为0

  AUXR |= 0x1C;  //  定时器2 工作为计数器模式 P3.1为计数引脚  允许计数器运行

  T2L = 0x00;

  T2H = 0x00;

  while(1)

  {

    if(T2L==16) // 计数器到了16 就把P1.1口输出取反    

        { 

      T2L=0X00;

      P11 = !P11;

    }

  }

}


定时器0个定时器2都可以工作位定时器/计数器模式,这里为了区分就把定时器2作为计数器使用了。

关键字:STC15W408AS  单片机  定时器  计数器 引用地址:8.STC15W408AS单片机定时器/计数器

上一篇:9.STC15W408AS单片机EEPROM
下一篇:7.STC15W408AS单片机串口通信

推荐阅读最新更新时间:2024-11-11 16:03

Cortex-M3 (NXP LPC1788)之看门狗定时器对Flash编程的影响
这两天在学习窗口式看门狗模块,之前一直调试的很happy,今天早上突然就进入不了调试模式,而且无法擦除Flash,无法下载程序。郁闷了半天,以为是Keil软件和Ulink出了问题,在另外个电脑上重载,问题依旧。准备用ISP进行尝试,使用FlashMagic软件,进行读取芯片的ID,一直报警autobaud错误,进他提示的网页看下也没有什么有用的信息。 仔细看了数据手册,在Flash存储器章节看到如下信息。引导加载器(boot loader)控制芯片复位后的初始化操作,并提供对Flash存储器进行编程的工具。包括ISP,通过引导加载器软件和UART0串口片上Flash存储器进行编程或在编程。IAP,应用终端用户的应用代
[单片机]
51单片机数据操作和指令类型
MCS-51单片机指令系统包括111条指令,按功能可以划分为以下5类 数据传送指令(29条) 算术运算指令(24条) 逻辑运算指令(24条) 控制转移指令(17条) 位操作指令(17条)
[单片机]
8051单片机的寄存器是什么样的
CPU中使用寄存器来临时存储信息,这些信息可以是要处理的数据,也可以是指向要获取的数据的地址。在8051单片机中,有一种数据类型是8位,从MSB(最高有效位)D7到LSB(最低有效位)D0。对于8 位数据类型,任何大于 8 位的数据类型都必须在处理之前分成 8 位块。 8051中使用最广泛的寄存器是 A(累加器)、B、R0-R7、DPTR(数据指针)和 PC(程序计数器)。所有这些寄存器都是 8 位的,除了 DPTR和 PC。 一、8051中的存储寄存器 我们将在这里讨论以下类型的存储寄存器: 1.累加器; 2.寄存器; 3.B寄存器; 4.数据指针 (DPTR); 5.程序计数器 (PC); 6.堆栈指针 (SP)。 (
[单片机]
8051<font color='red'>单片机</font>的寄存器是什么样的
单片机学习之二十:E2PROM芯片24C02的读写程序
E2PROM芯片 24C02的读写程序 一、实验目的: 给24C02的内部RAM写入一组数据,数据从24C02内部RAM的01h开始存放。然后再把这组数据读出来,检验写入和读出是否正确。 在这里我们给24C02中写入0、1、2的段码,然后把它读出来,送到数码管显示。 二、理论知识准备: 上面两个实验主要学习的是利用单片机的串口进行通讯,本实验要介绍的是基于I2C总线的串行通讯方法,下面我们先介绍一下I2C总线的相关理论知识。 (一)、I2C总线概念 I 2C总线是一种双向二线制总线,它的结构简单,可靠性和抗干扰性能好。目前很多公司都推出了基于I 2C总线的外围器件,例如我们学习板上的 24C02芯片,就是一个带
[单片机]
<font color='red'>单片机</font>学习之二十:E2PROM芯片24C02的读写程序
MCU SOURCE FILE_键盘
#include atmel/AT89X52.H #include intrins.h #define uchar unsigned char #define uint unsigned int #define cmd P0 //定义LCM的数据接口,请根据实际情况修改 #define lcmbusy P0_7 //定义LCM数据接口的第8位所在的端口,请根据实际情况修改 #define RS P3_4 //定义LCM的RS引脚所在的端口,请根据实际情况修改 #define RW P3_3 //定义LCM的RW引脚所在的端口,请根据实际情况修改 #define EN P3_2 //定义LCM的EN引脚所在的端
[单片机]
PIC系列单片机介绍
1) PIC最大的特点是不搞单纯的功能堆积,而是从实际出发,重视产品的性能与价格比,靠发展多种型号来满足不同层次的应用要求。 初档8位单片机:PIC12C5XXX/16C5X系列 PIC16C5X系列是最早在市场上得到发展的系列,因其价格较低,且有较完善的开发手段,因此在国内应用最为广泛;而PIC12C5XX是世界第一个八脚低价位单片机可用于简单的智能控制等一些对单片机体积要求较高的地方,前景十分广阔。 中档8位单片机:PIC12C6XX/PIC16CXXX系列 PIC中档产品是Microchip近年来重点发展的系列产品,品种最为丰富,其性能比低档产品有所提高,增加了中断功能,指令周期可达到200ns,带A/D,内部E2P
[单片机]
51单片机实验1——串行通信(TX/RX)
仿真电路图如下: 代码如下: #include reg51.h #define uint unsigned int #define uchar unsigned char uint code segcode ={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D, 0x07, 0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71}; uchar code weicode ={0x0e,0x0d,0x0b,0x07}; uchar disbuf ={0,0,0,0}; //定义并初始化数码管数据缓冲区 void delayms(uint x) //延时1ms函数 {
[单片机]
51<font color='red'>单片机</font>实验1——串行通信(TX/RX)
[单片机框架][bsp层][cx32l003][bsp_crc] 硬件CRC配置和使用
循环冗余校验(CRC)计算单元是根据固定的生成多项式得到任意字节数据的 CRC 计算结果。在应用中, CRC 技术主要应用于核实数据传输或者数据存储的正确性和完整性。 本模块算法遵从 ISO/IEC13239 的定义,采用 16 位长度的 CRC,计算多项式为: 计算初始值为 0xFFFF。 本模块功能包括: ⚫ CRC 编码和 CRC 校验 ⚫ 3 种位宽访问方式:8 位、16 位、32 位 ⚫ 8 位位宽下输入数据示例为 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 ⚫ 16 位位宽下输入数据示例为 0x1100, 0x3322, 0x5544, 0x7766 ⚫ 32
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved