51单片机定时器

一、定时/计时器T0的工作原理

        在定时方式1下,定时/计数器T0的核心是一个16位宽的,由计数脉冲触发的,按递增规律(及累加方式)工作的循环累加计时器(TH0+TL0)。从预先设定的初始值开始,每来1个计数脉冲就加1,当加到计数器全为1时,再输入1个脉冲,就会发生溢出现象,计数器回零。同时产生溢出中断请求信号(TF0置1)。如果定时/计数器工作于定时模式,则表示定时时间已到。

二、定时器T0初值计算(我这里用到的是12MHZ的晶振)

        初值=65536-计数

        计数=定时时间/(振荡周期 X 12)

        定时时间=振荡时间 X 12 X (65536-初值)

        最大定时时间+振荡周期 X 12 X65536=65.536ms

比如我们这里要用到的定时器初值是50ms则定义如下所示:

TH0 = (65536 - 50000) / 256; // 50ms
TL0 = (65536 - 50000) % 256;

三、实验(项目新建和烧录请看上一篇文章)

这里我们要实现一个基于 51 单片机的秒表程序。每5秒响一次蜂鸣器,每秒闪烁一次 LED 灯。

所以我们的代码如下所示:

#include <reg52.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit beep 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值