找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1819|回复: 8
收起左侧

单片机定时器初始化写法

[复制链接]
ID:1084208 发表于 2023-7-1 09:27 | 显示全部楼层 |阅读模式
请问TL1 = 0XDB
TH1 =0XFE


TL1 = (65535-800)》8
TH1 = (65535-800)
第一种写法怎么理解,请大伙给我讲讲,我目前只会第二种
回复

使用道具 举报

ID:213173 发表于 2023-7-1 11:34 | 显示全部楼层
常见10进制赋值写法
TH1 =(65536-800)/256;
TL1 =(65536-800)%256;

转换16进制
65536-800=64736=0xFCE0

用16进制赋值写法
TH1 = 0xFC;//高8位
TL1 = 0xE0;//低8位
回复

使用道具 举报

ID:883242 发表于 2023-7-1 13:19 | 显示全部楼层
第一种写法是人算的。

第二种写法是让编译器去算。

两种写法生成的机器码完全一样,第二种对于人类来说,可读性更高。
回复

使用道具 举报

ID:584814 发表于 2023-7-5 08:31 | 显示全部楼层
综合一下楼上:
1、用10进写喜闻乐见:
高八位:TH1 = ( 65536 - 800 ) / 256 ;
低八位:TL1 = ( 65536 - 800 ) % 256;
2、利用高位溢出可写成:
高八位:TH1 = ( 65536 - 800 )  / 256  ;
低八位:TL1 = ( 65536 - 800 ) ;
3、换个写法就是:
高八位:TH1 = ( 65536 - 800 ) >> 8 ;
低八位:TL1 = ( 65536 - 800 ) ;
4:跳过减法运算写成:
高八位:TH1 = 64736 >> 8;
低八位:TL1 = 64736;
5、换成16进制就是:
高八位:TH1 = 0xFCE0 >> 8 ;
低八位:TL1 = 0xFCE0 ;
5、减少运算直接赋值:
高八位:TH1 = 0xFC ;
低八位:TL1 = 0xE0 ;  
怎么写结果都一样。感觉用1比较清楚,用5比较清爽
回复

使用道具 举报

ID:69038 发表于 2023-7-5 09:10 | 显示全部楼层
man1234567 发表于 2023-7-5 08:31
综合一下楼上:
1、用10进写喜闻乐见:
高八位:TH1 = ( 65536 - 800 ) / 256 ;

把1做成宏,在5中直接调用。两全齐美!
回复

使用道具 举报

ID:1053359 发表于 2023-7-5 10:47 | 显示全部楼层
TL1 = 0xDB 和 TH1 = 0xFE 是十六进制表示的数值,它们对应着特定的寄存器 TL1 和 TH1 的值。这些寄存器通常用于定时器操作。

第一种写法 TL1 = 0xDB 使用了直接赋值的方式,将 TL1 寄存器的值设置为十六进制数 0xDB,即十进制的 219。同样地,TH1 = 0xFE 将 TH1 寄存器的值设置为十六进制数 0xFE,即十进制的 254。

而第二种写法 TL1 = (65535-800) >> 8 和 TH1 = (65535-800) 则是利用了十进制数进行计算并赋值。

首先,(65535-800) 会得到 64735,这是一个十进制的数值。然后,(65535-800) >> 8 将这个数值右移 8 位,相当于除以 256(2的8次方),丢弃了低 8 位的数值。这样得到的结果是 253,即十进制的 253。最后,该值被赋给 TL1 寄存器。

同样地,(65535-800) 的结果作为十进制数直接赋值给 TH1 寄存器,得到的结果是 64735,即十进制的 64735。

需要注意的是,这两种写法实际上设置了相同的数值到 TL1 和 TH1 寄存器中,只是表达方式不同。第一种写法直接使用十六进制数赋值,而第二种写法基于一个计算式来设置值。这两种写法在功能上是等效的
回复

使用道具 举报

ID:149799 发表于 2023-8-3 07:34 | 显示全部楼层
到底是65536-800还是65535-800,迷惑。
回复

使用道具 举报

ID:1090458 发表于 2023-8-3 09:17 | 显示全部楼层
王秋冬 发表于 2023-8-3 07:34
到底是65536-800还是65535-800,迷惑。

65535,不过两个基本没区别
回复

使用道具 举报

ID:382454 发表于 2023-8-3 17:02 | 显示全部楼层
找一个学习板最快
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表