历史上的今天
今天是:2024年08月24日(星期六)
2021年08月24日 | 51单片机-定时器初始化新写法
2021-08-24 来源:eefocus
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单片机-隐形漏洞
史海拾趣
|
WIN XP驱动程序无法实现自动安装,请各位大侠指点迷津!多谢! 我们开发了一个USB MODEM,想开发一个驱动程序的自动安装程序。但是发现在先连接上USB设备是再安装驱动程序可以成功;但是如果不插USB设备,安装完成后,插入USB she设备后,驱动程序无法实现自动安装,WIN XP会弹出“驱动设备安装“对 ...… 查看全部问答> |
|
TI北京研讨会随想:DM8168——新一代高性能多媒体处理器 2010年8月9日,全球最大的芯片供应商德州仪器 (TI)在新世纪日航饭店举行了“TI技术研讨会(北京)“站的活动。整个研讨会分五个主题会场。在MCU/DSP主题讨论会上,TI公司DSP业务发展经理郑小龙先生介绍了TI最新的媒体处理器TMS320DM8168。 DM8168 ...… 查看全部问答> |
|
我想学习MSP430,可是不知道买什么开发板?上次参加活动获得MSP430 LaunchPad 发现不会玩,好是困惑。帖子上关于如何学习MSP430的回复很少,望好心者提供建议 … 查看全部问答> |
|
最近正在学习tiny6410,今天将开发板上电后不小心碰了一下地引脚,被电了一下,只是有点麻麻的感觉。于是用万用表测量。首先使用直流档,测得地和人体的电位差为40mv。接下来用交流档,测得地和人体的电位为75V。然后将排插的开关断开,用万用表交 ...… 查看全部问答> |
|
尽管电压测量已经单独被用于许多便携式产品估算电池的剩余电量,但是这种方法可能存在高达 50% 的误差。电池电压和电量之间的关系会随放电率、温度和电池老化程度而有所不同。例如,相比相同电量损耗的低放电率,高放电率会带来更大的压降。当电池 ...… 查看全部问答> |




