精华内容
下载资源
问答
  • 单片机定时器

    2015-03-07 00:35:38
    单片机定时器
  • 单片机定时器Timer.asm

    2020-04-04 19:47:33
    单片机定时器汇编程序,含注释,单片机定时器程序汇编含注释,单片机实现定时器含注释,汇编语言有注释单片机定时器汇编程序
  • 1-简介简介MSP430单片机定时器A结构及其应用范例。2-定时器模块在MSP430系列单片机中带有功能强大的定时器资源,这定时器在单片机应用系统中起到重要的作用。利用MSP430(以下称为430)单片机的定时器可以用来实现计时...

    1-简介

    简介MSP430单片机定时器A结构及其应用范例。

    2-定时器模块

    在MSP430系列单片机中带有功能强大的定时器资源,这定时器在单片机应用系统中起到重要的作用。利用MSP430(以下称为430)单片机的定时器可以用来实现计时,延时,信号频率测量,信号触发检测,脉冲脉宽信号测量,PWM信号发生。另外通过软件编写可以用作串口的波特率发生器。后面我们将用定时器A作为一个波特率发生器,来编写一个串口例程给初学者参考。以加强初学者对定时器A的理解和应用。

    5c988bcc87dfb46eb936adee230db213.png

    在430的大系列产品中,不同的子系列产品定时器资源有所不同;在F11X,F11X1中是不带定时器B资源的。430的定时器主要分为3部分模块:看门狗定时器,定时器A,定时器B。定时器A主要资源特点有16位定时计数器,其计数模式有4种。多种计数时钟信号供选择。3个可配置输入的捕获/比较功能寄存器和8种输出模式的3个可配置输出单片。以上各块定时器资源可作多种组合使用,以实现强大的功能。

    7e01c85caacc76cdbb55abe24c54997d.png

    定时器资源功能说明

    (1)看门狗定时器(WDT):主要用于程序在生错误时用作单片机系统复位重起的。另外,也可作为一个基本定时器使用。

    (2)定时器A:作基本定时器使用,结合捕获/比较功能模块可实现时序控制,可编程波形信号发生输出。可作串口波特率发生器使用。

    (3)定时器B:作基本定时器使用,与定时器A基本相同,但是功能方面有某些功能会比A增强些。详情请看关于定时器B应用范例。

    32b32a58f8b84a02ddb79bd47e174117.png

    3-定时器A模块结构

    4-定时器A--基础应用例程(1)

    //例程描述:利用定时器定时功能,实现P1.0方波输出。

    #include

    {

    WDTCTL = WDTPW + WDTHOLD; //停止看门狗WDT,不使用内部看门狗定时器。

    P1DIR |= 0x01; //设置P1.0口方向为输出。

    CCTL0 = CCIE; //设置捕获/比较控制寄存器中CCIE位为1,CCR0捕获/比较功能中断为允许。

    CCR0 = 50000; //捕获/比较控制寄存器CCR0初值为5000。

    TACTL = TASSEL_2 + MC_2; //设置定时器A控制寄存器TACTL,使时钟源选择为SMCLK辅助时钟。

    _BIS_SR(LPM0_bits + GIE); //进入低功耗模式LPM0和开中断

    }

    //定时器A 中断服务程序区

    #pragma vector=TIMERA0_VECTOR

    __interrupt void Timer_A (void)

    {

    P1OUT ^= 0x01; //P1.0取反输出

    CCR0 += 50000; //重新载入CCR0捕获/比较数据寄存器数据

    }

    //例程1结束--------------------------------------------------------------------------

    基础应用例程(2)

    //例程描述:利用定时器定时功能,实现P1.0方波输出。

    // 需要注意的是定时器中断程序,采用向量查询方式。

    #include

    void main(void)

    {

    WDTCTL = WDTPW + WDTHOLD; // 停止看门狗WDT

    P1DIR |= 0x01; // 设置P1.0口方向为输出。

    TACTL = TASSEL_2 + MC_2 + TAIE; // 时钟源选择为SMCLK,选择计数模式,定时器中断开

    _BIS_SR(LPM0_bits + GIE); //进入低功耗模式LPM0和开中断

    }

    // Timer_A3 中断向量(TAIV)处理

    #pragma vector=TIMERA1_VECTOR

    __interrupt void Timer_A(void)

    {

    switch( TAIV )

    {

    case 2: break; //CCR1不使用

    case 4: break; //CCR2不使用

    case 10: P1OUT ^= 0x01; //溢出

    break;

    }

    }

    展开全文
  • 单片机定时器单片机定时器单片机定时器单片机定时器单片机定时器
  • 简述AVR单片机定时器

    2020-08-21 05:23:38
    本文主要介绍了AVR单片机定时器
  • 单片机定时器中断实现长时间定时程序#include // 包含51单片机寄存器定义的头文件sbit D1=P2^0; //将D1位定义为P2.0引脚unsigned char Countor; //设置全局变量,储存定时器T0中断次数/****************************...

    1bfefd3cf57a67ffa6f1c17e8e98b670.gif

    单片机定时器中断实现长时间定时程序

    #include // 包含51单片机寄存器定义的头文件

    sbit D1=P2^0; //将D1位定义为P2.0引脚

    unsigned char Countor; //设置全局变量,储存定时器T0中断次数

    /**************************************************************

    函数功能:主函数

    **************************************************************/

    void main(void)

    {

    EA=1; //开总中断

    ET0=1; //定时器T0中断允许

    TMOD=0x01; //使用定时器T0的模式2

    TH0=(65536-46083)/256; //定时器T0的高8位赋初值

    TL0=(65536-46083)%256; //定时器T0的高8位赋初值

    TR0=1; //启动定时器T0

    Countor=0; //从0开始累计中断次数

    while(1) //无限循环等待中断

    ;

    }

    /**************************************************************

    函数功能:定时器T0的中断服务程序

    **************************************************************/

    void Time0(void) interrupt 1 using 0 //“interrupt”声明函数为中断服务函数,其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器

    {

    Countor++; //中断次数自加1

    if(Countor==20) //若累计满20次,即计时满1s

    {

    D1=~D1; //按位取反操作,将P2.0引脚输出电平取反

    Countor=0; //将Countor清0,重新从0开始计数

    }

    TH0=(65536-46083)/256; //定时器T0的高8位重新赋初值

    TL0=(65536-46083)%256; //定时器T0的高8位重新赋初值

    }

    db4dfef5e2a1b3d84757478671e516eb.png

    211049477317407b2815c899735fbd16.png

    为了方便大家更好的学习,畅学电子网特别增加了针对单片机和EDA的公众号,每天推送相关知识,希望能对你的学习有所帮助!

    5e5e7538a53657b130d72b9ce864f977.png

    4f5c89e36493ef257ccfe5cfd140c324.png

    展开全文
  • 本文主要介绍单片机芯片解密的相关基础知识:单片机计数器和单片机定时器。  一、计数概念的引入  在介绍单片机计数器和定时器之前,先从选票的统计谈起:画“正”。这就是计数,生活中计数的例程处处可见。例:...
  • 本文将单片机定时器学习方面的知识进行了汇总。
  • 本文将单片机定时器学习方面的知识进行了汇总。
  • 本文将单片机定时器学习方面的知识进行了汇总。
  • 本文主要讲了单片机定时器延时程序,下面来学习下
  • 单片机定时器、中断试验。
  • 振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。机器周期:1个机器周期含6个状态周期,12个振荡周期。指令...

    振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)

    状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。

    机器周期:1个机器周期含6个状态周期,12个振荡周期。

    指令周期:完成1条指令所占用的全部时间,它以机器周期为单位。

    例如:外接晶振为12MHz时,51单片机相关周期的具体值为:

    振荡周期=1/12us;状态周期=1/6us;机器周期=1us;指令周期=1~4us;

    51单片机有两组定时器/计数器,因为既可以定时,又可以计数,故称之为定时器/计数器。

    定时器/计数器和单片机的CPU是相互独立的。定时器/计数器工作的过程是自动完成的,不需要CPU的参与。

    51单片机中的定时器/计数器是根据机器内部的时钟或者是外部的脉冲信号对寄存器中的数据加1。

    有了定时器/计数器之后,可以增加单片机的效率,一些简单的重复加1的工作可以交给定时器/计数器处理。CPU转而处理一些复杂的事情。同时可以实现精确定时作用。

    定时/计数器实质上是一个加1计数器。它随着计数器的输入脉冲进行自加1,也就是每来一个脉冲,计数器就自动加1,,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使相应的中断标志位置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。

    可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。

    定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器THx和TLx组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。

    d1c8cdb6042aad2e93a8dd661f32fb36.png

    51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。

    1、工作方式寄存器TMOD

    工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。其格式如下

    a3e0e140c51cb345a920fb8c52cdf716.png

    GATE是门控位, GATE=0时,用于控制定时器的启动是否受外部中断源信号的影响。只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚INT0/1也为高电平时,才能启动定时/计数器工作。即此时定时器的启动条件,加上了INT0/1引脚为高电平这一条件。

    C/T :定时/计数模式选择位。C/T =0为定时模式;C/T =1为计数模式。

    M1M0:工作方式设置位。定时/计数器有四种工作方式。

    88f0ed43e8eb184281509b72fe25237d.png

    2控制寄存器TCON

    TCON的低4位用于控制外部中断,已在前面介绍。TCON的高4位用于控

    制定时/计数器的启动和中断申请。其格式如下:

    5bdbe6482105e11f03ee31543980e32d.png

    TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置TF1为1。CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态。所以,TF1可用作查询测试的标志。TF1也可以用软件置1或清0,同硬件置1或清0的效果一样。

    TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0。所以,用软件可控制定时/计数器的启动与停止。

    TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。

    TR0(TCON.4):T0运行控制位,其功能与TR1类同。

    定时/计数器的工作方式

    方式0

    方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。

    4fea0ea3909dda998769f9872639c6e8.png

    定时器模式时有:N=t/ Tcy

    计数初值计算的公式为:X=213-N。

    定时器的初值还可以采用计数个数直接取补法获得。

    计数模式时,计数脉冲是T0引脚上的外部脉冲。

    门控位GATE具有特殊的作用。当GATE=0时,经反相

    后使或门输出为1,此时仅由TR0控制与门的开启,与门输出

    1时,控制开关接通,计数开始;当GATE=1时,由外中断引

    脚信号控制或门的输出,此时控制与门的开启由外中断引脚

    信号和TR0共同控制。当TR0=1时,外中断引脚信号引脚的

    高电平启动计数,外中断引脚信号引脚的低电平停止计数。

    这种方式常用来测量外中断引脚上正脉冲的宽度。

    方式1

    方式1的计数位数是16位,由TL0作为低8位,TH0

    作为高8位,组成了16位加1计数器 。

    ac7706bbe78aaf37c9797b571ce6d7aa.png

    计数个数与计数初值的关系为:X=216-N

    方式2

    方式2为自动重装初值的8位计数方式。

    9bb481cc3f8f2b65e5c67103e24f1bc7.png

    计数个数与计数初值的关系为:X=28-N

    工作方式2特别适合于用作较精确的脉冲信号发生器。

    方式3

    方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。

    0b7d5e4fd62eff572f821fc99624e43b.png

    工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。

    初始化程序应完成如下工作:

    对TMOD赋值,以确定T0和T1的工作方式。

    计算初值,并将其写入TH0、TL0或TH1、TL1。

    中断方式时,则对EA赋值,开放定时器中断。

    使TR0或TR1置位,启动定时/计数器定时或计数。

    计数器初值的计算

    机器周期也就是CPU完成一个基本操作所需要的时间。

    机器周期=1/单片机的时钟频率。

    51单片机内部时钟频率是外部时钟的12分频。也就是说当外部晶振的频率输入到单片机里面的时候要进行12分频。比如说你用的是12MHZ的晶振,那么单片机内部的时钟频率就是12/12MHZ,当你使用12MHZ的外部晶振的时候。机器周期=1/1M=1us。

    而我们定时1ms的初值是多少呢,1ms/1us=1000。也就是要计数1000个数,初值=65535-1000+1(因为实际上计数器计数到66636才溢出)=64536=FC18H

    最后给大家推荐单片机学习的入门套件,目前比较流行的来源硬件arduino,功能强大,学习简单,是进入自动化以及未来人工智能物联网的很好学习工具。

    展开全文
  • 单片机定时器2

    2015-07-06 11:01:01
    单片机定时器2的使用,定时器2不同于定时器0和定时器1,具有额外第二功能,捕获定时等等。
  • 单片机定时器计数器

    2013-06-02 10:55:28
    单片机定时器计数器
  • 51单片机定时器中断汇编代码
  • 松翰单片机定时器程序
  • avr单片机定时器

    2014-04-10 19:00:03
    avr16位定时器是使用单片机定时器的重要资料
  • 本文主要讲了单片机定时器初值计算公式,下面一起来学习一下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,538
精华内容 3,015
关键字:

单片机定时器