单片机定时器工作模式1

发布者:等放假的zr0最新更新时间:2017-01-11 来源: eefocus关键字:单片机  定时器  工作模式1 手机看文章 扫描二维码
随时随地手机看文章

通过前面的定时器理论了解到,使用一个定时器,要经过下面四步:


1、设置定时器/计数器的工作模式TMOD(常用的是模式1:TMOD=0x01);

2、装入预置数到THx和TLx中(THx=TLx=MAX(8192/65536/256)-计数次数);

3、如果工作在中断方式,则需要开定时器/计数器的中断TCON中的标志位:TF0/TF1=0/1;

4、启动定时器/计数器:TR0/TR1=1;



//1、设置定时器/计数器的工作模式TMOD(常用的是模式1:TMOD=0x01);

//2、装入预置数到THx和TLx中(THx=TLx=MAX(8192/65536/256)-计数次数);

//3、如果工作在中断方式,则需要开定时器/计数器的中断TCON中的标志位:TF0/TF1=0/1;

//4、启动定时器/计数器:TR0/TR1=1;

// 内容:通过定时让LED灯闪烁

#include 


sbit LED=P0^2;    //定义LED端口


//定时器初始化子程序

void Init_Timer0(void)

{

    TMOD = 0x01;      //使用模式1,16位定时器

    TH0=0x00;          //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出

    TL0=0x00;

    EA=1;             //总中断打开 89C52必需要有

    ET0=1;            //定时器中断打开

    TR0=1;            //使用定时器0

}


main()//主程序

{

    Init_Timer0();

    while(1);

}


//定时器中断子程序

//interrupt和using都是C51的关键字。C51中断过程通过使用interrupt关键字和中断号(0到31)来实现。

//using关键字用来指定中断服务程序使用的寄存器组。

//用法是:using后跟一个0到3的数,对应着4组工作寄存器。

void Timer0_isr(void) interrupt 1 using 1

{

    TH0=0x00;          //重新赋值

    TL0=0x00;

    LED=~LED;        //指示灯反相,可以看到闪烁

}


65536 * 1us = 65.536ms,也就是说上面的程序每经过65.536ms改变P0^2的状态。


那么如何实现1s的精确定时呢,在工作方式1下,我们将计数初什设置为0x3CB0(15536),当计数到上限65536时,经过了50000个脉冲,即 50000 * 1us = 50ms,如果经过这样的计时20次,就正好达到了1s,为验证是否正确,可将上面的代码修改如下:



//1、设置定时器/计数器的工作模式TMOD(常用的是模式1:TMOD=0x01);

//2、装入预置数到THx和TLx中(THx=TLx=MAX(8192/65536/256)-计数次数);

//3、如果工作在中断方式,则需要开定时器/计数器的中断TCON中的标志位:TF0/TF1=0/1;

//4、启动定时器/计数器:TR0/TR1=1;

// 内容:通过定时让LED灯闪烁

#include 


sbit LED=P0^2;    //定义LED端口

unsigned int tm=0;


//定时器初始化子程序

void Init_Timer0(void)

{

    TMOD = 0x01;      //使用模式1,16位定时器

    TH0=0x3C;          //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出

    TL0=0xB0;

    EA=1;             //总中断打开 89C52必需要有

    ET0=1;            //定时器中断打开

    TR0=1;            //使用定时器0

}


main()//主程序

{

    Init_Timer0();

    while(1);

}


//定时器中断子程序

//interrupt和using都是C51的关键字。C51中断过程通过使用interrupt关键字和中断号(0到31)来实现。

//using关键字用来指定中断服务程序使用的寄存器组。

//用法是:using后跟一个0到3的数,对应着4组工作寄存器。

void Timer0_isr(void) interrupt 1 using 1

{

    TH0=0x3C;          //重新赋值      3CB0 = 15536

    TL0=0xB0;

    tm = tm + 1;

    if (tm == 20)       // 20次达到1s

    {

      tm = 0;

      LED=~LED;        //指示灯反相,可以看到闪烁

    }

}

编译下载到单片机后,测试和预期一致,LED亮灭的状态分别持续1s。


关键字:单片机  定时器  工作模式1 引用地址:单片机定时器工作模式1

上一篇:单片机控制数码管闪烁
下一篇:以中断方式实现1s定时

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

高速DS80C320单片机软核设计
  1 引言   DS80C320单片机是DALLAS公司推出的一款基于51框架的高性能单片机。   它有如下一些优点:   ⅰ,具有与51系列完全一致的指令系统,能充分兼容所有基于51系列开发的程序;   ⅱ,具有比8051更加齐全的外设。相比8051单片机,DS80C320增加了定时器2以及一个增强型串口等;   ⅲ,具有比8051更好的效率;DS80C320的一个指令周期是4个CLK,8051则是12个,这个区别尤其是在处理简单指令的时候优势明显,例如单周期指令的处理,DS80C320只需要4个CLK,而8051需要12个,据DALLAS公司的统计表明,在相同时钟频率下,DS80C320每条指令的执行速度是8051
[单片机]
高速DS80C320<font color='red'>单片机</font>软核设计
单片机内部结构是什么样的?
一、单片机内部结构分析 我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗?原来在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为ROM。 二、几个基本概念 1、
[单片机]
<font color='red'>单片机</font>内部结构是什么样的?
基于PIC单片机的热水控制器设计
本文介绍了用PIC16C57单片机设计的一种多功能热水控制器,具有自动和手动加水、设置水温、实时显示水量及温度和报警功能,并且具有结构简单、可靠性高、成本低等特点。   关键词: PIC单片机;DS1820数字温度传感器;热水控制器   引言   当前市场上的热水控制器基本上采用双金属片温控,控温精度低、可靠性差、功能单一。随着微电子技术的发展,单片微处理器功能日益增强,价格低廉,在各方面得到广泛应用。在热水控制器中应用单片机,具有设计简单、可靠性高、功能易扩展等优点。   热水控制器主要实现对水温的控制,并满足不同用户的个性需求。因此一个较完善的控制器应具有以下功能:   水温的测量与显示;   水量的测量与显
[应用]
赛普拉斯扩展Traveo汽车用MCU系列产品
赛普拉斯半导体公司扩展其车用产品组合,以帮助汽车厂商将此前属于豪华车型的高科技系统移植到主流车型中。赛普拉斯车用产品组合包括微控制器(MCU)、电源管理IC(PMIC)、内存、触摸感应解决方案等一系列丰富的差异化产品,能够为顶尖汽车厂商客户打造各类增值系统。 赛普拉斯此次扩展的重头戏是推出了其首个采用40nm工艺节点的Traveo微控制器(MCU)系列,用以提升汽车仪表系统和车身电子系统的性能和成本效益。该系列MCU集成了高达4MB的高容量嵌入式闪存、步进电机控制和薄膜晶体管(TFT)显示控制,具备高级声音输出功能并支持现今仪表系统要求的所有车载网络标准。此外,该系列中的一款全新MCU专为高端车身和网关系统而优化。40nm工艺还
[嵌入式]
学习pic单片机经验
刚接触pic单片机 使用的是MPLAB IDE 对于配置字的要求可以通过软件进行设置 也可以用__CONFIG();进行设置 但是发现官网上用的是MOLAB X IDE 对于配置字的格式要求 变成了#pragma 当然也可以通过软件的窗口 pic存储器视图 配置字 对配置字进行设置 XC8对于中断的格式也有了变化 __interrupt(优先级) #pragma config FOSC = INTRC_CLKOUT// Oscillator Selection bits (INTOSC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, I/O function on RA7/O
[单片机]
stm32 系统滴答定时器
使用步骤: 1.设置SysTick定时器的时钟源。 2.设置SysTick定时器的重装初始值 --中断要打开中断使能 3.清零SysTick定时器当前计数器的值 4.打开SysTick定时器 库函数:SysTick.c 初始化函数: void SysTick_Init(u8 SYSCLK) { SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); fac_us = SYSCLK / 8; //SYSCLK的8分频保存1us所需的计数次数 fac_ms = (u16)fac_us*1000; //每个ms需要的systick时钟数
[单片机]
浅谈分析51,AVR,PIC单片机的区别
我觉得51比较好。因为51是比较标准的复杂指令单片机,通过学习51可以比较全面掌握单片机和通用CPU知识,达到触类旁通的目的(Z80也不错,可惜有些过时了,开发工具也很落后)。而PIC是一种精简指令系统,虽然机器码好懂,但是局限性较大,就是说会过分偏重理解MicroChip的设计思想。其实全面掌握单片机技术较用精某一种芯片来得划算(不要被某一个公司捆住思想)。 类似PIC的芯片很多,比如AVR、MSP430、Z8等,掌握51的结构和指令系统之后理解这些单片机的原理就很容易。而反过来也许就要各个击破。 还有一些理由: 就芯片而言:51单片机有非常低廉的价格和数不胜数的衍生芯片系列,这些产品从低速(1MPS)到高速(30MPS)几乎涵
[单片机]
以C8051F340单片机为核心的USB数据采集系统设计
1引言 电子设备运行状态的稳定性直接影响到现代企业的生产, 设备发生故障后高昂的维修费以及设备停机后给企业生产带来的损失, 使得各个企业纷纷采取措施, 降低设备的故障率。通过数据采集系统准确的获取设备运行特征数据, 并对数据进行分析,判断设备的运行状态是否良好, 达到提前预防故障出现、减少停机检修的目的。实际应用中对数据采集系统的可靠性, 准确性和便携性要求很高。目前常用的数据传输网络(如RS232 /RS485, CAN 等)已经不能满足大量采集数据和高速实时数据传输的要求。而USB传输具有高速可靠传输的优势, 具有成本低、可靠性高、维护方便等优点。本文以带有片上USB 和高速AD转换器的C8051F340为核心控制器件, 利用
[单片机]
以C8051F340<font color='red'>单片机</font>为核心的USB数据采集系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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