你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

TL0=(65536-50000)%256; 这两个是什么意思呢?

[复制链接]
gaosmile 发布时间:2020-9-19 15:03

  TL0=(65536-50000)%256; 这两个是什么意思呢??为什么要是256,是固定的吗???在知道里看到了答案,可是还是不大懂,

  这是网上的:

  标准答案:定时器0设置于模式1时,计数寄存器为16位模式,由高8位TH0和低8位TL0两个8位寄存器组成,当设定计算值为65536-50000=15536(D)时,转换为十六进制就是3CB0(H),此时,TH0=3C,TL0=B0分别装入即可,为了免除这些计算步骤,很多编程者采用“TH0=(65536-50000)/256;TL0=(65536-50000)%256“的编程方式,去让单片机自己去计算结果,那么为什么要介入256呢?其实并不难理解,做一下10——16进制的换算就知道了,256(D)=0100(H),这里01就是高8位的数据,00就是低8位的数据,通俗点说,15536(D)里有多少个256,就相当于高8位有多少数值,就是除的关系了,商存入高8位寄存器后余下的数存入低8位即可,取商计算就是TH0=(65536-50000)/256;而取余计算就是TL0=(65536-50000)%256 。

  答案:定时器工作于模式一时,计数器是16位的,16位的二进制可以表示0~2^16(65535),计数器时向上计数的,一个一个数的加,首先要设置它的计数初值(不设置默认为0),如果要它每数50000次溢出一次产生中断,那么初值就是2^16-50000+1=15536,现在将15536这个初值装到TH0和TL0中就行了,但是由于51是8位单片机,每次只能处理8位数据,所以就要将15536分成高8位和低8位分别给TH0和TL0,15536/256就是将高八位取出,15536%256就是将低八位取出,类似于十进制中25/10=2.。..。.5,将十位2和个位5取出一样。说白了就是数制的转换。


+ a! G- l; ~( m2 n, J$ @0 H
收藏 评论0 发布时间:2020-9-19 15:03

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版