52单片机定时器/计数器编程汇总

发布者:脑力驿站最新更新时间:2018-05-12 来源: eefocus关键字:52单片机  定时器  计数器 手机看文章 扫描二维码
随时随地手机看文章

/*----------------------------------------------------------------------
                            TMOD (89H)
                    T1                                      T0      
GATE    C/T`    M1    M0    GATE    C/T`    M1    M0
------------------------------------------------------------------------
GATE=0时,TR0=1,T0就开始定时/计数
GATE=1时,TR0=1,INT0`=1,T0才开始定时/计数
C/T`=0,计数;C/T`=1,定时
M1    M0    工作方式        功能说明
0     0     方式0      13位定时/计数器(0~8192)
0     1     方式1      16位定时/计数器(0~65536)
1     0     方式2      可自动重载的8位定时/计数器(0~256)
1     1     方式3      定时/计数器0分为两个8位的计数器,关闭T1
------------------------------------------------------------------------
                                   TCON (88H)
TF1     TR1      TF0     TR0      IE1      IT1      IE0     IT0
8FH     8EH     8DH     8CH     8BH    8AH    89H    88H
------------------------------------------------------------------------
TF0/TF1=1,定时/计数器T0/T1溢出
TR0/TR1=0,定时/计数器T0/T1停止计数
TR0/TR1=1,GATE=0,定时/计数器T0/T1开始计数
TR0/TR1=1,GATE=1,INT0`=1/INT1`=1,定时/计数器T0/T1开始计数
IT0/IT1=1,外部中断INT0`/INT1`为边沿触发
IT0/IT1=0,外部中断INT0`/INT1`为低电平触发
IE0/IE1,外部中断INT0`/INT1`有中断请求信号时,置1
------------------------------------------------------------------------
                                 IE (A8H)
EA       -         -         ES       ET1      EX1     ET0     EX0
AFH    AEH   ADH   ACH    ABH     AAH     A9H     A8H
EA=1:允许所有中断      EA=0:禁止所有中断
ES=1:允许串行口中断    ES=0:禁止串行口中断
ET1=1:允许T1中断       ET1=0:禁止T1中断
EX1=1:允许INT1`中断    EX1=0:禁止INT1`中断
ET0=1:允许T0中断       ET0=0:禁止T0中断
EX0=1:允许INT0`中断    EX0=0:禁止INT0`中断
----------------------------------------------------------------------*/
/*---------------------------------------------------------


                  定时器初始化程序


-----------------------------------------------------------*/
void Init_Timer()
{
TMOD |= 0x01;  
/* ---------------------------------------------------------------------------------
                        工作方式0    工作方式1   工作方式2    工作方式3
定时器0选用     0x00            0x01           0x02             0x03
定时器1选用     0x00            0x10           0x20             0x30
计数器0选用     0x04            0x05           0x06             0x07
计数器1选用     0x40            0x50           0x60             0x70
---------------------------------------------------------------------------------*/     
TH0=0x00;     //16位:(65536-X)/256 13位:(8192-X)/256 
TL0=0x00;     //16位:(65536-X)%256 13位:(8192-X)%256
EA=1;          //总中断打开
ET0=1;         //定时器0中断打开
TR0=1;         //定时器0开关打开
}
/*---------------------------------------------------------
                 定时器中断子程序
  
interrupt 0  指明是外部中断0 using 0 是第0组寄存器
interrupt 1  指明是定时器中断0 using 1 是第1组寄存器
interrupt 2  指明是外部中断1 using 2 是第2组寄存器
interrupt 3  指明是定时器中断1 using 3 是第3组寄存器
interrupt 4  指明是串行口中断
---------------------------------------------------------*/
void Timer_isr() interrupt 1 using 1
{
 TH0=0x00;   //需重新赋值,除工作方式2外
 TL0=0x00;
}

关键字:52单片机  定时器  计数器 引用地址:52单片机定时器/计数器编程汇总

上一篇:编写单片机的查表程序
下一篇:单片机多字节数相乘的实现方法(转贴)

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

PIC单片机入门_定时器TMR2详解与实例
1.前言 这里将介绍另一款定时器TMR2模块,TMR2与前面介绍的TMR0和TMR1相比,最大的差别是只能工作于定时模式,因此称它为“定时器TMR2”。 2.TMR2的特性 TMR2为8位宽,附带二个4位宽的分频器:一个“预分频器”和一个“后分频器”,一个可编程的8位周期寄存器PR2。其主要用途: 1. 可以用作时间定时器,但是不能作为计数器; 2. 可以为同步串行端口MSSP模块提供波特率时钟; 3. 可以与CCP模块配合使用,实现脉宽调制PWM功能。 TMR2的核心是一个可以由软件读/写的8位宽的计数器,它也是按递增计数,从某一初值(缺省为0)开始递增,直到与周期寄存器PR2中内容匹配之后,在下一次递增时则返回到00
[单片机]
PIC单片机入门_<font color='red'>定时器</font>TMR2详解与实例
简易一小时定时器 数码管显示
近些天图书馆收书,规定人离开座位不能超过15分钟不然就会把书收走,所以制作了一个计时器,用来指示人离开的时长,按照最简需求设计,计时时长为1小时,超出时间清零。 附带了一个按键,用于计时过程中的暂停,这样这个计时器可以当作秒表使用了,做个题什么的限制一下时间又不用占用手机。而且最关键的是小巧,看起来不会太蠢... 说明: 1.单片机使用STC15F104W,共有6个I/O 2.数码管为时钟样式的数码管,中间带有“:”的,焊接时按照最短路径焊接,移植程序请考虑修改smgduan 的段选值 3.程序定时器0初始值是在12MHz晶振下的初始值,移植程序时请注意修改 4.数码管采用74HC138+74HC59
[单片机]
简易一小时<font color='red'>定时器</font> 数码管显示
STM8S103之tim4普通定时器
本文以STM8S103F3P6编程为例,介绍STM8S103F3P6定时器4计时驱动PB5脚 电脑平台:Windows7 64位旗舰 编译软件:IAR 硬件平台:STM8S103F3P6 1.系统时钟初始化为内部16M CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //时钟 初始化时钟为1分频 16M 2.初始化定时器4设置PB5为输出 void Init_Timer4(void) { GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST); //初始化IO口 TIM4_DeInit()
[单片机]
STM32之通用定时器输入捕获模式
#include stm32f10x.h /* RCC时钟配置 */ void RCC_config() { ErrorStatus HSEStartUpStatus; /* RCC寄存器设置为默认配置 */ RCC_DeInit(); /* 打开外部高速时钟 */ RCC_HSEConfig(RCC_HSE_ON); /* 等待外部高速时钟稳定 */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus == SUCCESS) { /* 设置HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_
[单片机]
19课:单片机定时器、中断试验
我们在学单片机时我们第一个例程就是灯的闪烁,那是用延时程序做的,现在回想起来,这样做不很恰当,为什么呢?我们的主程序做了灯的闪烁,就不能再干其它的事了,难道单片机只能这样工作吗?当然不是,我们能用定时器来实现灯的闪烁的功能。 例1:查询方式 ORG 0000H AJMP START ORG 30H START: MOV P1,#0FFH ;关所 灯 MOV TMOD,#00000001B ;定时/计数器0工作于方式1 MOV TH0,#15H MOV TL0,#0A0H ;即数5536 SETB TR0 ;定时/计数器0开始运行 LOOP:JBC TF0,NEXT ;如果TF0等于1,则清TF0并转NEXT处 AJMP LOO
[单片机]
STM32——滴答定时器
时钟作为芯片的心脏,芯片依靠时钟维持运动的状态。 stm32的延时函数,依赖滴答定时器,独立的提供延时。 滴答定时器: 时钟是由HCLK经过8分频来作为小心脏的。假设HCLK时钟为72MHz,8分频后,滴答定时器频率为9MHz,即一个时钟周期为1/9us。 在我们使用滴答定时器进行us定时时,需要修改fac_us的值,假设设定HCLK时钟为72MHz,则fac_us应该设定为9,使delay_us()保持1us。 以下为SysTick定时器us的延时函数。 //nus为要延时的us数. void delay_us(u32 nus) { u32 temp; SysTick- LOAD=nus*fac_us; //时间加载
[单片机]
PIC12F508单片机学习之一——定时器
PIC12F508单片机是没有中断的,定时器只能是查询方式。 编译器用的XC8,编译环境IDE用的是MPLAB X IDE。 //*************************************************** // __________________ // VDD-| 1 8 |-VSS // GP5-| 2 27 |-GP0/DAT // GP4-| 3 26 |-GP1/CLK //GP3/RMCLR--| 4 25 |-GP2 // |________________| // 1
[单片机]
C8051F与80C51系列单片机的不同初始化
1 引言 近30年来,世界各主要电子元器件生产厂商纷纷推出自己各具特色的单片机产品。而在百花齐放的单片机家族中,80C5l系列一直扮演着重要的角色。该单片机在教学、科研等领域已经成为入门单片机并成为单片机应用的首选,该产品以其易读性好、扩展能力强而著称,从而成为广大从事单片机开发者最熟悉、最具代表的机型。但人们往往在熟悉80C51单片机之后又选择别的系列单片机开发产品,这是因为80C51具有运算速度慢、功耗大、内部资源少等不足,所以限制了其使用范围。Cygnal公司推出的C805lF系列单片机既弥补了80C51系列的不足,又与MCS—5l指令集兼容。C805lFxxx系列单片机是完全集成的混合信号系统级芯片,具有与8051指令集
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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