学习17-51单片机定时器实验的方法和技巧

一 主要涉及到的知识点:

1.1 定时器的介绍:

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

周期)。

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

期或时钟周期。

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

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

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

        振荡周期=1/12us;

        状态周期=1/6us;

        机器周期=1us;

        指令周期=1~4us;

1.2 单片机定时/计数器结构:

        上图中的 T0 和 T1 引脚对应的是单片机 P3.4 和 P3.5 管脚。51 单片机定时/

计数器的工作由两个特殊功能寄存器控制。TMOD 是定时/计数器的工作方式寄存

器,确定工作方式和功能;TCON 是控制寄存器,控制 T0、T1 的启动和停止及

设置溢出标志。

1.2.1 工作方式寄存器 TMOD:

        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:工作方式设置位。定时/计数器有四种工作方式。

1.3 定时器配置:

        TMOD定时器的工作方式选择, 为什么是TMOD 或等于 TMOD, 原因是,如果直接等于,相当于写死了,所以这里需要或等于.

        TH0和TL0是定时器初始值赋值的高四位和低四位, 这里是怎么得到的这个16机制的, 好比你的单片机51晶振是12赫兹的,换算后是FC18,这是1ms的换算, 这里怎么换算就不赘述了,可以使用小工具换算.

        EA 是打开总定时器, ET0和TR0分别是中断允许,以及打开定时器.

二 代码分析:

        1. 定义定时器中断初始化函数,里边就是开启定时器以及一些其他的设置,这里上表已经详细解释了.

        2. 这里主要分析一下使LED1闪烁的函数代码,这里要注意变量哪里一定要,定义静态变量,还有判断是否等于1000后进入语句里,一定要将i=0;不然下一次会在原来的基础上进行++; 那样永远进入不了if判断这里要注意下. 其他的代码注释很详细的说明了.

        

三 源代码:

//51单片机定时器实验

#include "reg52.h"

sbit LED1 = P2^0;

typedef unsigned char u8;
typedef unsigned int  u16;

//函数的定义—————————–

//定时器的初始化函数定义
void time0_init(void)
{
    TMOD |= 0X01;  //选择为定时器0模式,工作方式1
    TH0 = 0XFC;    //给定时器赋初值,定时1ms
    TL0 = 0X66;

    ET0 = 1; //打开定时器0中断允许
    EA = 1;  //打开总中断
    TR0 = 1; //打开定时器
}

//通过定时器中断实现LED1的闪烁
void time0() interrupt 1
{
     static u16 i = 0; //定义静态变量,下次循环保留上次值
    TH0 = 0XFC;    //给定时器赋初值,定时1ms
    TL0 = 0X66;

    i++; //每次进来i++;
    if(i == 1000) //判断i==1000    ,也就是1秒进入判断为真
    {
        i= 0; //将i赋值为零,原因是如果这次i==1000后出去后,因为i为静态变量会保留上次的值,因此这里要赋值0
         LED1 = !LED1;    
    }

}

//主函数
int main()
{
    time0_init(); //通过外部中断进行计时
    while(1)
    {
        
    }
}

作者:ZL1392010

物联沃分享整理
物联沃-IOTWORD物联网 » 学习17-51单片机定时器实验的方法和技巧

发表评论