1.书写优化

我们所写过的下面这些

TH0=0XB8;

TL0=0X00;

或者

TH0=0X4C;

TL0=0X00;

如果代码没有注释我们根本不知道这是要定时多长时间,所以为了增加程序的可读性,我们重新优化这两处的书写。

首先要明白在程序书写中,以前说过,赋值给寄存器的值可以书写成十六进制的数也可以是十进制的数。大家知道,TH0填充的是高8位,TL0是低8位,那么如果这个16位的变量的十进制值是258,二进制的值就是

0000000100000010

所以高八位的值为1 (258/256=1)

低八位的值为2        (258%256=2)

“258/256=1”和“258%256=2”的意思以前已经讲解过了,

我们也可以认为“258/256=1”是0x0102(258)右移了8位等于0x0001,简化书写就是0x01。

而“258%256=2”是0x0102(258)舍去了高8位等于0x0002,简化书写就是0x02。

再比如,一个16位的变量的十进制值是47104,二进制的值就是

1011100000000000

所以高八位的值为184  (47104/256=184)

低八位的值为0             (47104%256=0)

那我们要定时20ms的话,给TH0和TL0赋值方式也可以为

TH0=184;

TL0=0;

我们再举一个例子,假设定时的时间为1ms。

算出要填充“16位的变量”的值为64614=0xFC66

按照之前的写法就是

TH0=0xFC;     (0xFC=252)

TL0=0x66;      (0x66=102)

而我们像下面这样写也可以达到相同的效果

TH0=( 65536-( 0.001/(12/11059200) ) )/256

TL0=( 65536-( 0.001/(12/11059200) ) )%256

因为

( 65536-( 0.001/(12/11059200) ) )/256 = 252

( 65536-( 0.001/(12/11059200) ) )%256 = 102

有了这个思路,我们就可以把赋初值的写法改为一串数字公式即可

比如我们定时的最小单位时间为1微秒,那么定时50000微秒(50毫秒)就可以这样写来给TH0和TL0赋初值

TH0=( 65536-( (50000/1000000)/(12/11059200) )/256;

TL0=( 65536-( (50000/1000000)/(12/11059200) )%256;

这里的(50000/1000000)代表定时的是0.05秒,也就是50毫秒。

如果要定时其他毫秒数, 数字公式中的其他数字我们不需要修改,只需要把50000改为想定时的时间就可以了,计算过程交给单片机算出来,我们也就不需要自己用计算器把最终值算出来再赋给TH0和TL0这么麻烦了。

我们再化简上式就是

TH0=( 65536-( (50000*110592)/120000) )/256;

TH0=( 65536-( (50000*110592)/120000) )%256;

定时器自动装载c语言,定时器初始化新写法相关推荐

  1. stm8s 定时器1 延时_STM8S_库函数_定时器自动装载TIM1

    大家好,我是单片机爱好者-MCU起航.这里说下使用库函数方式控制STM8S103F3P6片上的定时器1,也就是TIM1,这是个高级定时器. 首先,咱们看一下STM8S103F3P6上有几个定时器,打开 ...

  2. c语言定时器实验程序,C语言定时器实验.doc

    C语言定时器实验 实验三 C语言定时器实验 一.实验目的 1.进一步熟悉DSP的中断机制 2.在掌握中断服务程序编写的基础上进一步熟悉定时器的运用 3.进一步掌握如何编写DSP中断服务子程序 二.实验 ...

  3. 定时器中断程序 c语言,定时器中断函数的使用

    1.定时器与延时的区别 大家可能会觉得我们用延时函数照样可以实现上一讲代码的实验现象,但是定时器与延时的概念不同,延时函数需要占用CPU的使用权,正在延时的时候其他任务没有CPU的使用权就会拖慢执行效 ...

  4. c语言定时器作用,Go语言定时器实现原理及作用

    对于任何一个正在运行的应用,如何获取准确的绝对时间都非常重要,但是在一个分布式系统中我们很难保证各个节点上绝对时间的一致性,哪怕通过 NTP 这种标准的对时协议也只能把时间的误差控制在毫秒级,所以相对 ...

  5. c语言定时器定时1ms程序,STM32 Cubemx 配置定时器定时1mS

    最近才发现原来我把定时器里的配置参数代表的意义给搞混了,这里记录一下,防止以后自己忘记. 以建立一个定时1mS定时器为例: 1.先打开定时器 2.配置好时钟 3.配置定时器设置 重点来了,以前在这里我 ...

  6. 定时器计数器实验C语言程序,实验二 单片机定时器和计数器编程

    仲恺农业工程学院实验报告纸 信息学院 (院.系)专业班组单片机原理及接口技术课实验二单片机定时器/计数器编程 一.实验目的 1.掌握单片机定时器/计数器的工作方式: 2.掌握单片机定时器/计数器的编程 ...

  7. c语言定时器原理,软件定时器实现原理、测试及应用设计

    分析μC/OSII操作系统软件定时器的算法,以及影响定时器精度的抖动问题产生的原因:提出定时器管理任务处理器占用率的计算公式,并进行了实验测试.实验结果表明,μC/OSII软件定时器具有ms级的最小分 ...

  8. 51单片机c语言定时器程序,51单片机定时器设置入门与程序解析

    89C51单片机有两个计数器T0和T1,每个计数器都是由两个8位的RAM 单元组成的,即每个计数器都是16 位的计数器,最大的计数容量是216=65536,记住是从0-65535. 其次.提供给定时器 ...

  9. ABAP:利用SAP定时器自动刷新ALV

    ABAP:利用SAP定时器自动刷新ALV 曾于无意之中发现,SAP系统中有个名为CL_GUI_TIMER的类,测试下来发现还是挺好用的,比网上那些自动刷新的例子直观多了.这里我们就做个演示实例. 先做 ...

最新文章

  1. scala中Stream理解
  2. Android分享功能,微博、QQ、QQ空间等社交平台分享之入门与进阶
  3. Qt Creator构建并运行示例
  4. mysql 双缓冲_Mysql一些好的优化建议(二)
  5. sklearn自学指南(part13)--贝叶斯回归
  6. SAP Spartacus UI ConfigurableRoutesService router.resetConfig 的调用逻辑
  7. SDUT OJ -2892 A
  8. zblog php 侧边栏样式,ZBlogPHP免费主题Blogs如何修改侧边栏搜索框样式?
  9. flask学习笔记--蓝图
  10. 论文浅尝 | Reinforcement Learning for Relation Classification
  11. linux+读取初始化文件,Linux 初始化系统 SystemV Upstart
  12. python123.io简单编程题合集
  13. App Domains and dynamic loading
  14. html请求接口_Python 如何使用 HttpRunner 做接口自动化测试
  15. HoudahGeo 6 for Mac(地理位置信息软件)
  16. 域控服务器导出证书,证书服务器(CA)的备份和还原
  17. oracle dbms_utility.get_time,dbms_utility如何使用?
  18. 华为员工工资曝光:入职12年月薪31万,小编我瑟瑟发抖
  19. element-ui图标不显示问题(已解决)
  20. RK平台ME3630模块GPS移植调试

热门文章

  1. 活动报名 | 中科院信工所陈恺:人工智能安全攻防对抗
  2. VLDB‘22 HiEngine极致RTO论文解读
  3. GD32F310 (二) 按键轮询输入
  4. 神经网络和图神经网络,神经网络的图怎么画
  5. 计算机夯实基础学习顺序
  6. Vue_01_组件的使用
  7. python汉字拼音查询_python获取一组汉字的拼音首字母
  8. 服务器装什么操作系统好?
  9. URL 重写的常见用法
  10. XAMPP之Apache、MySQL不能正常启动的解决办法