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;
上一篇: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 单片机
设计资源 培训 开发板 精华推荐
- LTC2281IUP 演示板,双路 HSADC,VDD = +3V,125Msps 10 位 70MHz
- XL4015可调电源模块
- ADR430B 2.048 Vout 超低噪声 XFET 电压基准的典型应用,具有灌电流和拉电流能力
- STM32F103C8T6核心板最小系统板(已验证)
- LT1171CQ、2.5A 背光 CCFL 电源的典型应用
- 使用 Aimtec 的 AM3G-1215SH30Z 的参考设计
- 基于 AD8065 的具有暗电流补偿的 2MHz 带宽 PIN 光电二极管前置放大器
- 用于音频的 4 通道 D 类音频功率放大器
- LTC2945IMS 轨到轨双向电流和功率监视器的典型应用
- LTM8052MPV ±5A、2.5V、2 象限稳压器的典型应用
- MPS 送福利 | 商城上线送单,送京东卡,8000元好礼等你拿!
- 技术直播【安森美功率器件在新能源市场中的应用】(9:30入场)
- e络盟限时福利|《e选》产品低至5折起,下单百元返现中!
- 下载赢好礼!30张京东卡等你拿!
- 【抢楼赢礼】聊聊“我眼中的ADI实验室电路”
- 有奖报名 | 安富利邀您云逛展2023中国国际工业博览会
- 帮助他人,成就自己:EEWORLD月度问答榜(第5期)
- 【泰有聊】第三期:参与泰克揭秘探头行动,瓜分2019元新年红包
- 有奖直播:超小型封装 TI MSPM0 MCU 可优化设计空间,实现更多可能
- 有奖测评 | 英飞凌新品情报站:最新 5V XENSIVTM PAS CO2 传感器 套件测评