定时器控制LED灯每隔一秒闪灭

什么是晶振

晶振(晶体震荡器),又称数字电路的“心脏”,是各种电子产品里面必不可少的频率元器件。数字电 路的所有工作都离不开时钟,晶振的好坏、晶振电路设计的好坏,会影响到整个系统的稳定性。

什么是时钟周期

时钟周期也称为振荡周期,定义为时钟频率的倒数。时钟周期是计算机中最基本的、最小的时间单 位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟周期是一个时间的量。更小的时钟周 期就意味着更高的工作频率

什么是机器周期

机器周期也称为CPU周期。在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶 段(如取指、译码、执行等),每一阶段完成一个基本操作。完成一个基本操作所需要的时间称为 机器周期。一般情况下,一个机器周期由若干个时钟周期组成

当晶振频率是11.0592MHz的时候,等于11059.2KHz = 11059200Hz 机器周期 = 12 x 时钟周期 =12 x (1/时钟频率) 秒 = 12 / 时钟频率 秒 = 12 / 11059200 秒 = 12 000 000 / 11059200 微秒 = 1.085 微秒

在TH0/1和TL0/1寄存器中加1,默认是从0开始数数,最多能数65536下,累计计时71ms

从56320数到65536差不多为10ms

定时器控制LED灯每隔一秒闪灭_第1张图片

定时器控制LED灯每隔一秒闪灭_第2张图片

#include "reg52.h"

sbit led = P3^6;

void main()
{
    int cnt = 0;
    led = 1;
    
    //1. 配置定时器0工作模式位16位计时
    TMOD = 0x01;
    //2. 给初值,定一个10ms出来
    TL0=0x00;
    TH0=0xDC;
    //3. 开始计时
    TR0 = 1;
    TF0 = 0;
    
    while(1){
        if(TF0 == 1)//当爆表的时候,硬件会修改bit5(TF0)位上面的数据,改成1
        {
            TF0 = 0;//不用中断,必须软件清零
            cnt++;  //统计爆表的次数
            //重新给初值
            TL0=0x00;
            TH0=0xDC;
            if(cnt == 100){//爆表100次,经过了1s
                cnt = 0;  //当100次表示1s,重新让cnt从0开始,计算下一次的1s
                led = !led;//每经过1s,翻转led的状态
            }
        }
    }
}

你可能感兴趣的:(51跟32单片机,单片机,51单片机,c语言)