社区导航

 

搜索
查看: 595|回复: 62

[求助] 求余数不是%才对吗?还有TH0和TL0寄存器设置怎么都是256-t

  [复制链接]

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2020-6-28 15:11 | 显示全部楼层 |阅读模式

求余数不是%才对吗?还有TH0和TL0寄存器设置怎么都是256-t

此帖出自51单片机论坛
邮洽图片20200628150202.jpg

回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-28 15:30 | 显示全部楼层

“还有TH0和TL0寄存器设置怎么都是256-t”

TH0和TL0都是8位寄存器,向其中写入数据当然也只能写8位。

你所说的 “TH0和TL0寄存器设置怎么都是256-t”,仅限用于模式2,即自动重新装载的8位计数器。在此模式下,TL0参与计数,TH0并不参与计数,TH0仅仅是在TL0溢出时将本身内容重新装入TL0。

点评

TH0仅仅是在TL0溢出时将本身内容重新装入TL0---------------这句话理解起来怎么那么抽象?高位的原始值给到低位?这是什么鬼  详情 回复 发表于 2020-6-28 16:09
TL0和TH0不是一个字节的低位和高位吗?不是一个字节吗?  详情 回复 发表于 2020-6-28 16:08

回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-28 15:31 | 显示全部楼层

“求余数不是%才对吗?”

在你的问题中未见求余运算。

点评

那第一个框啥意思   详情 回复 发表于 2020-6-28 16:06

回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-28 16:06 | 显示全部楼层
maychang 发表于 2020-6-28 15:31 “求余数不是%才对吗?” 在你的问题中未见求余运算。

那第一个框啥意思 

点评

第一个框里面的 “MOD” 就是求余数。不同语言中求余符号不同(可能不是运算符而是个函数)。  详情 回复 发表于 2020-6-28 17:16
%是运算符,c/c++等编程语言,取余运算使用%表示 mod也不错,也是取余,其他高级语言使用mod,这时候mod可能就是函数了,不是运算符   这里这么写也只是一个伪代码,  详情 回复 发表于 2020-6-28 17:01

回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-28 16:08 | 显示全部楼层
maychang 发表于 2020-6-28 15:30 “还有TH0和TL0寄存器设置怎么都是256-t” TH0和TL0都是8位寄存器,向其中写入数据当然也只能 ...

TL0和TH0不是一个字节的低位和高位吗?不是一个字节吗?

点评

TL0和TH0是两个字节,千万别以为是一个字节。一个字节是8位,两个字节合起来,是16位。TH0和TL0合起来,可以构成16位计数器(模式1),或者13位计数器(模式0,此时TH0高三位未使用)。  详情 回复 发表于 2020-6-28 17:13
不是的,TL0和TH0,是两个寄存器,8位的。  详情 回复 发表于 2020-6-28 17:02

回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-28 16:09 | 显示全部楼层
maychang 发表于 2020-6-28 15:30 “还有TH0和TL0寄存器设置怎么都是256-t” TH0和TL0都是8位寄存器,向其中写入数据当然也只能 ...

TH0仅仅是在TL0溢出时将本身内容重新装入TL0---------------这句话理解起来怎么那么抽象?高位的原始值给到低位?这是什么鬼

点评

“高位的原始值给到低位?这是什么鬼” 千万别以为什么 “高位” 和 “低位”。这里只有两个寄存器TH0和TL0。 模式2,是在TL0计数发生溢出时,自动把TH0寄存器中的内容装入TL0  详情 回复 发表于 2020-6-28 17:36
你理解错了,这是两个8位寄存器,TH0用来存自动装载的计数值,自动转载模式下不参与计数,TL0参与计数,TL0计数为0的时候,自动从TH0把之前的计数值再拷贝回来,TL0再继续计数,循环往复,这应该理解TH0是什么作用了  详情 回复 发表于 2020-6-28 17:07

回复

使用道具 举报

3667

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2020-6-28 16:35 来自手机 | 显示全部楼层
定时器模式2为8位自动重装,所谓自动重装就是不需要软件介入,也就没有中断响应引起的计时偏差。你可能还是要在中断服务里做代码,但是每次触发中断的间隔是一样的,所以情况好的多。这种模式缺点就是可设置的定时范围小,比较适合短定时。新一点的51单片机都可以做16位自动重装就更简单了

回复

使用道具 举报

3667

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2020-6-28 16:38 来自手机 | 显示全部楼层
对TL0的赋值只影响定时器的第一个计时周期,忽略也可以

点评

你好  TH0仅仅是在TL0溢出时将本身内容重新装入TL0,这个怎么理解?  详情 回复 发表于 2020-6-28 18:52

回复

使用道具 举报

1797

TA的帖子

8

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2020-6-28 17:01 | 显示全部楼层
QWE4562009 发表于 2020-6-28 16:06 那第一个框啥意思 

%是运算符,c/c++等编程语言,取余运算使用%表示

mod也不错,也是取余,其他高级语言使用mod,这时候mod可能就是函数了,不是运算符

 

这里这么写也只是一个伪代码,

坐而言不如起而行

回复

使用道具 举报

1797

TA的帖子

8

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2020-6-28 17:02 | 显示全部楼层
QWE4562009 发表于 2020-6-28 16:08 TL0和TH0不是一个字节的低位和高位吗?不是一个字节吗?

不是的,TL0和TH0,是两个寄存器,8位的。

点评

既然是两个不同的寄存器  为何TH0要和TL0扯上关系呢  详情 回复 发表于 2020-6-28 18:53
坐而言不如起而行

回复

使用道具 举报

1797

TA的帖子

8

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2020-6-28 17:07 | 显示全部楼层
QWE4562009 发表于 2020-6-28 16:09 TH0仅仅是在TL0溢出时将本身内容重新装入TL0---------------这句话理解起来怎么那么抽象?高位的原始值给 ...

你理解错了,这是两个8位寄存器,TH0用来存自动装载的计数值,自动转载模式下不参与计数,TL0参与计数,TL0计数为0的时候,自动从TH0把之前的计数值再拷贝回来,TL0再继续计数,循环往复,这应该理解TH0是什么作用了吧。。

点评

TH0不参与计数  那它的作用怎么理解   详情 回复 发表于 2020-6-28 18:54
坐而言不如起而行

回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-28 17:13 | 显示全部楼层
QWE4562009 发表于 2020-6-28 16:08 TL0和TH0不是一个字节的低位和高位吗?不是一个字节吗?

TL0和TH0是两个字节,千万别以为是一个字节。一个字节是8位,两个字节合起来,是16位。TH0和TL0合起来,可以构成16位计数器(模式1),或者13位计数器(模式0,此时TH0高三位未使用)。


回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-28 17:16 | 显示全部楼层
QWE4562009 发表于 2020-6-28 16:06 那第一个框啥意思 

第一个框里面的 “MOD” 就是求余数。不同语言中求余符号不同(可能不是运算符而是个函数)。


回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-28 17:36 | 显示全部楼层
QWE4562009 发表于 2020-6-28 16:09 TH0仅仅是在TL0溢出时将本身内容重新装入TL0---------------这句话理解起来怎么那么抽象?高位的原始值给 ...

“高位的原始值给到低位?这是什么鬼”

千万别以为什么 “高位” 和 “低位”。这里只有两个寄存器TH0和TL0。

模式2,是在TL0计数发生溢出时,自动把TH0寄存器中的内容装入TL0寄存器。

点评

是在TL0计数发生溢出时,自动把TH0寄存器中的内容装入TL0寄存器。-----把TH0寄存器中的内容装入TL0寄存器-----------再王TL0装数那不是更加的溢出了?一般都是小容器往大容器装,这里怎么反过来了  详情 回复 发表于 2020-6-28 18:56

回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-28 18:52 | 显示全部楼层
huo_hu 发表于 2020-6-28 16:38 对TL0的赋值只影响定时器的第一个计时周期,忽略也可以

你好  TH0仅仅是在TL0溢出时将本身内容重新装入TL0,这个怎么理解?


回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-28 18:53 | 显示全部楼层
wsmysyn 发表于 2020-6-28 17:02 不是的,TL0和TH0,是两个寄存器,8位的。

既然是两个不同的寄存器  为何TH0要和TL0扯上关系呢

点评

模式0和模式1,TL0计数(每次加1)。当TL0溢出(FFH再加1,成为00H)时,向TH0进位,即TH0加1。 TH0和TL0的关系,就在于此——TL0溢出时TH0加1。注意只有模式0和模式1才是这样,其它模式没有这个关系。  详情 回复 发表于 2020-6-28 19:48
你最好看一下芯片的手册,或者单片机的教材,把所有的寄存器都看一下,看一下含义,   TH0,TL0是两个寄存器,但是不同的模式设定,这两个寄存器的意义是不一样的 有16bit的定时器,这时候TH0是装高8  详情 回复 发表于 2020-6-28 19:38

回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-28 18:54 | 显示全部楼层
wsmysyn 发表于 2020-6-28 17:07 你理解错了,这是两个8位寄存器,TH0用来存自动装载的计数值,自动转载模式下不参与计数,TL0参与计数,T ...

TH0不参与计数  那它的作用怎么理解 

点评

我都说的那么明显了,还没懂是什么作用么   TL0参与计数,数值肯定会变化的,比如从设定值向下计数到0,之后自动装载计数值,那他从哪里装载之前计数值呢??不就是从TH0拷贝么,就可以了,TH0作用就是这  详情 回复 发表于 2020-6-28 19:30

回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-28 18:56 | 显示全部楼层
maychang 发表于 2020-6-28 17:36 “高位的原始值给到低位?这是什么鬼” 千万别以为什么 “高位” 和 “低位 ...

是在TL0计数发生溢出时,自动把TH0寄存器中的内容装入TL0寄存器。-----把TH0寄存器中的内容装入TL0寄存器-----------再王TL0装数那不是更加的溢出了?一般都是小容器往大容器装,这里怎么反过来了

点评

模式2,TL0是计数器,其工作是每次计数时内容加1。这和TH0内容装入TL0完全是两回事。TH0内容装入TL0,并不做加法(更不做减法),当然也就没有什么溢出。  详情 回复 发表于 2020-6-28 19:43
“把TH0寄存器中的内容装入TL0寄存器-----------再王TL0装数那不是更加的溢出了?” 把TH0寄存器内容装入TL0,TL0中原来的内容就消失了,或者说被掩盖掉了,变成了TH0当中的内容。  详情 回复 发表于 2020-6-28 19:40
TH0和TL0,两个寄存器一样大。 再重复一次:千万别以为什么 “高位” 和 “低位”。把你所认为的 “高位” 和 “低位” 忘掉!  详情 回复 发表于 2020-6-28 19:37
Sign! TH0是个8位寄存器,TL0也是个8位寄存器。TH0内容装入TL0,怎么会溢出?  详情 回复 发表于 2020-6-28 19:35

回复

使用道具 举报

1797

TA的帖子

8

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2020-6-28 19:30 | 显示全部楼层
QWE4562009 发表于 2020-6-28 18:54 TH0不参与计数  那它的作用怎么理解 

我都说的那么明显了,还没懂是什么作用么

 

TL0参与计数,数值肯定会变化的,比如从设定值向下计数到0,之后自动装载计数值,那他从哪里装载之前计数值呢??不就是从TH0拷贝么,就可以了,TH0作用就是这个。。。

坐而言不如起而行

回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-28 19:35 | 显示全部楼层
QWE4562009 发表于 2020-6-28 18:56 是在TL0计数发生溢出时,自动把TH0寄存器中的内容装入TL0寄存器。-----把TH0寄存器中的内容装入TL0寄存器 ...

Sign!

TH0是个8位寄存器,TL0也是个8位寄存器。TH0内容装入TL0,怎么会溢出?

点评

t=100  那就是定时100us?还是100ms?在这里 256也是时间长度吗  详情 回复 发表于 2020-6-30 10:20

回复

使用道具 举报

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

关闭

站长推荐上一条 1/8 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

词云| Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-7-10 20:50 , Processed in 0.546741 second(s), 41 queries , Gzip On, MemCache On.

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