51单片机-定时器初始化新写法

发布者:Serendipity66最新更新时间:2021-10-14 来源: eefocus关键字:51单片机  定时器  初始化 手机看文章 扫描二维码
随时随地手机看文章

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)

8.2.png

那我们要定时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;

关键字:51单片机  定时器  初始化 引用地址:51单片机-定时器初始化新写法

上一篇:51单片机-定时器中断函数的使用
下一篇:51单片机-隐形漏洞

推荐帖子

【已送】赠送松鼠的STM32开发板
板子是松鼠的STM32,没有JLINKJTAG,有点旧,功能还能用。现在我用不到了,特将此送给需要的坛友们!~要求:1,邮费自理2,写明用途3,写出开发心得请详细阐述申请板子、申请缘由,所做项目,愿意分享的内容,以及在这方面的经历吧。这样我们好有个凭据把这些发送出去。用自己的努力来争取一下吧!截至日期为6月1日,需要的可以跟帖填写申请。板子功能:1个RS232接口2路PWM输出1个CAN接口1个SD卡座1个2032电池座1个模拟电位器1个PT100
billbot501 淘e淘
转让TI CC3200-LAUNCHXL、MSP-EXP430F5529开发板
1.TI原装SimpleLinkWi-FiCC3200LaunchPad-CC3200-LAUNCHXL开发板,主控CC3200无线MCU为业界第一款具有内置Wi-Fi连接的微控制器,TI官网有详细的开发资料供参考。仅开发板1块,无其他配件。(采用1根USB-A接口micro-USB电缆与PC联机编程、调试)。二手物品,实物拍摄,成色如图,要求高者慎拍。链接:https://item.taobao.com/item.htm?id=5410391065222.TI原
zhoupxa 淘e淘
mos管烧坏
状况:只出现mos管烧坏ds短路(三路mos全部烧毁,工作了一个月左右,根据负载大小,时间有所不同)描述:三相同步电机的一路(整图是三路),负载大概在2000w到4000w不等。问题:烧坏原因有哪些?希望给出一些完善建议?(gs并电阻二极管等)猜测是电机的反向电动势击穿mos的寄生二极管mos管烧坏这种故障分析比较难了,确认驱动没问题,把温升测一测,然后就耐压,电流,慢慢摸索吧。设备的多种工作状态多试试,比如高温过载,重载和轻载之间快速转换的过程散热处理,还有瞬态拟制二极管参
冰魄3009 模拟电子
单片机语言C51应用实战集锦
一本不错的书单片机语言C51应用实战集锦好书分享,不错,谢谢,先收下!!!好书分享,不错,谢谢新手来看看,谢谢lz不是吧。付了新币,下载都这么卡的呢好书当然得好好学习学习啦6好书分享,不错,谢谢芯币扣除了文件没下完芯币扣除了文件没下完单片机语言c51应用实战集锦謝謝学习了谢谢!!!
piaoshi1003 51单片机
正激式变压器开关电源 开关电源原理与设计(连载13)
1-6.正激式变压器开关电源正激式变压器开关电源输出电压的瞬态控制特性和输出电压负载特性,相对来说比较好,因此,工作比较稳定,输出电压不容易产生抖动,在一些对输出电压参数要求比较高的场合,经常使用。1-6-1.正激式变压器开关电源工作原理所谓正激式变压器开关电源,是指当变压器的初级线圈正在被直流电压激励时,变压器的次级线圈正好有功率输出。图1-17是正激式变压器开关电源的简单工作原理图,图1-17中Ui是开关电源的输入电压,T是开关变压器,K是控制开关,L是储能滤波电感,C是储能
noyisi112 电源技术
动态数码管显示~~~求助!!
题目要求:实现2位数码管显示秒和十秒。系统上电显示60?;然后每秒钟计数减1,到00秒后自动停止计数,并不段闪烁提示...AT89S51,共阴极数码管,动态扫描,定时器延时,汇编编写....希望那位耐心的大虾帮帮忙~~~小弟不胜感激......急需!!!!急需!!!!急需!!!!急需!!!!谢谢!!! 动态数码管显示~~~求助!!操,不要为了个简单的课程设计或者毕业设计发这种不要尊严的帖我顶!!!小莫真是尽显英雄本色啊!!回复沙发的帖子不要脏话连篇污染环境请楼主自重
wtingo 单片机
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved