8051内部集成了2个16bits的计数器, 可以根据需要将其作为定时器使用. 这时, 定时器的计数频率为系统CLK/12. 如果CPU的晶振频率为12MHz, 那么定时器信号源的频率固定为12MHz/12 = 1MHz. 如果定时器的定时周期设定为50ms, 则需要50000个脉冲. 由于单片机定时器为加1计数器, 所以, 计数器初始值应设为65536 - 50000 = 15536 = 3CB0H. 另外, 还需要设置定时器工作模式寄存器TMOD, 如果使用定时器0, 16bits定时器方式, 则TMOD = 0x01.

定时器初始值计算解析:

若系统晶振频率为12MHz, 那么定时器信号源的频率固定为1MHz, 即每隔1 * 10^-6 s, 定时器内的值加1. 若定时器定时周期为50ms(=5*10^-2s), 那么这50ms就需要(5*10^-2)/(1*10^-6)=50000次加1计数.

#include

void delay()//用定时器0实现10ms精准定时

{

TMOD = 0x01;

TH0 = 0xd8;

TL0 = 0xf0;//65536 - 10000 = 55536

TF0 = 0;//置溢出标志位为0

TR0 = 1;//开启定时器0

while(TF0 == 0);

TR0 = 0;//暂停定时器0

}

void disp_digit()

{

int d = 60;//要显示的数字

unsigned char code DIG_CODE[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};

while(1)

{

//显示个位数

P2 = 0;// P2 = 0 -> (P24, P23, P22) = (0, 0, 0) -> 右数第一个数字点亮

P0 = DIG_CODE[d % 10];

delay();//10ms精准定时

//显示十位数

P2 = 1 << 2;//P2 = 0000 0100 -> (P24, P23, P22) = (0, 0, 1) -> 右数第二个数字点亮

P0 = DIG_CODE[d / 10];

delay();//10ms精准定时

}

}

int main()

{

disp_digit();

return 0;

}

单片机定时器精准定时_8051单片机(STC89C52)定时器实现10ms精准定时相关推荐

  1. 8051单片机(STC89C52)定时器实现10ms精准定时

    8051内部集成了2个16bits的计数器, 可以根据需要将其作为定时器使用. 这时, 定时器的计数频率为系统CLK/12. 如果CPU的晶振频率为12MHz, 那么定时器信号源的频率固定为12MHz ...

  2. 单片机定时器精准定时_PIC单片机的定时器精准计时的计算

    关于PIC单片机的定时器精准计时的计算 在此用了16C711单片机的TMR0做定时中断,希望实现精准计时,在程序中,TMR0用了晶振的32分频,初值#0FCH,因此POPBEAR兄弟计算出每个定时中断 ...

  3. 单片机定时器精准定时_单片机定时器,如何追求极致的精度?

    1.晶振频率的误差 假设你用的是这种常用的无源晶振 它的误差±20PPM可以理解为百万分之20,12Mh晶振的标称的误差±240hz,频率范围在11.9976Mhz--12.00024Mhz范围.软件 ...

  4. 单片机c语言1ms 2ms 4ms方波,定时器使用:利用单片机内部定时器0通过P1.0端口输出一定周期的方波信号。 - 试题答案网问答...

    相关题目与解析 使用定时/计数器0以工作方式2实现定时,在P1.0输出周期为200s的连续方波.已知晶振频率fosc=6MHz. 已知单片机的晶振频率为6MHz,下面程序用单片机内部定时器T0工作在方 ...

  5. 呼吸灯51单片机c语言编程,51单片机基于定时器实现呼吸灯(C8051F020单片机)

    一.实现思路 原理:利用PWM信号控制LED灯的亮暗程度,实现LED灯由暗到亮又由亮到暗的渐变过程. 方法:通过定时器设置LED所接引脚的高低电平持续时间,模拟出PWM波. 二.关键问题--PWM的频 ...

  6. 【蓝桥杯单片机组模块】14、STC15定时器2的PWM使用

    微信搜索:ReCclay,也可免费阅读博主蓝桥系列所有文章,后台回复"代码"即可获取蓝桥所有备赛代码!关注博主公众号,还可拥有加入博主粉丝群实时沟通技术难题.免费下载CSDN资源等 ...

  7. 51单片机——中断系统、外部中断、定时器中断、串口通信C语言入门编程

    目录 中断系统: 外部中断: 1.外部中断0.1:当触发时,LED状态取反 定时器中断: 1.定时器0.1:LED以1S为周期闪烁 串口通信: 1.串口中断:通过串口发送什么数据给单片机,单片机再通过 ...

  8. 基本定时器(STM32F4xx系列单片机)

    Crotex-M4基本定时器 定时器概述 STM32的定时器   STM32中的定时器曾在系统滴答定时器提到过,有内核级定时器系统滴答定时器.基本定时器.通用定时器.高级定时器. 而单片机中对应得定时 ...

  9. linux中的定时器检测按键,STM32单片机利用定时器实现按键采集

    工程项目结构如下图所示: 其中画红色方框部分为重要函数来进行讲解 TIMx.c #include "TIMx/TIMx.h" #include "LED/LED.h&qu ...

最新文章

  1. Laravel之Eloquent ORM
  2. 2018.07.17 洛谷P1368 工艺(最小表示法)
  3. Android--解析XML之PULL
  4. 语音预处理:服务器平台“部署”
  5. 1.3. PostgreSQL 官方 YUM 源安装
  6. 使用PYTORCH复现ALEXNET实现MNIST手写数字识别
  7. matlab敏感词输出代码,敏感词设置
  8. 取消一个正在执行的异步回发
  9. QT 中QPainter绘制文字、图片
  10. 和 Python 2.x 说再见!
  11. 高效神器!小目标检测迎来曙光!SSPNet金字塔网络!川大出品
  12. aix ip别名配置
  13. 如何实现BootStrapTable的动态表格
  14. 新手如何学习PLC编程?
  15. 微信小程序java后端_微信小程序访问后端服务器-微信小程序后端-微信小程序后端JAVA...
  16. 2合1笔记本 android,华为二合一笔记本支持Android可能是鸡肋
  17. js实现点击图片在屏幕中放大
  18. C ——进程内存(内存管理、内存分配(brk,sbrk、mmap、munmap)、内存常见错误)
  19. Opencv 图像拼接与融合简单方法Stitcher
  20. 蔚来汽车提前批智能座舱C++开发笔试复盘

热门文章

  1. 数据科学的完整学习路径—Python版
  2. qt中显示文件夹下的目录及文件的过滤
  3. LeetCode Climbing Stairs
  4. Button的使用(十):ImageButton
  5. mysql中case when then的用法
  6. Zookeeper 安装
  7. CentOS安装oracleJDK
  8. Linux环境搭建Hadoop伪分布模式
  9. Java中finalize方法用途何在?
  10. IIS不能下载.apk文件