2万

帖子

0

TA的资源

超级版主

21
 
QWE4562009 发表于 2020-10-14 15:42 这个预装值是怎么来的  

当然,其数值必须由你自己根据所需要的波特率计算出来。计算时必须考虑实际使用的石英晶体频率以及SMOD位数值。

此帖出自51单片机论坛
 

回复

2万

帖子

0

TA的资源

超级版主

22
 
QWE4562009 发表于 2020-10-14 15:44 溢出之后要怎么处理?溢出就是装满的意思吧  就是65535满了?

加1之后成为0,就是溢出。正如你做小学一年级算术,9加1等于10,满10进1,个位为0完全一样。

此帖出自51单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

23
 
QWE4562009 发表于 2020-10-14 15:44 溢出之后要怎么处理?溢出就是装满的意思吧  就是65535满了?

溢出之后不必管它,硬件会自动处理。

此帖出自51单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

24
 
QWE4562009 发表于 2020-10-14 15:44 溢出之后要怎么处理?溢出就是装满的意思吧  就是65535满了?

前面已经说了,8位重装工作状态,高8位不参与计数,只有低8位计数。

所以,不是加1后为65536,而是TL1加1后为256,即00。

 

此帖出自51单片机论坛
 
 
 

回复

3397

帖子

0

TA的资源

五彩晶圆(中级)

25
 
maychang 发表于 2020-10-13 15:42 QWE4562009 发表于 2020-10-13 15:02 我看了下  但是真的没看懂 有人说直接 用时钟频率/分频数/定时 ...

溢出就计数一次?

此帖出自51单片机论坛

点评

29楼说的是定时器1低8位(即TL1)溢出,由一个不可见的计数器计数。每次TL1溢出,这个不可见的计数器计数一次。    详情 回复 发表于 2020-10-14 16:19
TL1溢出,溢出的这位(进位)由另一个计数器计数,这个计数器不可寻址,即不能由程序读出,也就是 “不可见” 的。这个不可见的计数器,将TL1溢出16分频或者32分频(倒底是16分频还是32分频,由SMOD决定),即  详情 回复 发表于 2020-10-14 16:16
 
 
 

回复

3397

帖子

0

TA的资源

五彩晶圆(中级)

26
 
maychang 发表于 2020-10-13 15:42 QWE4562009 发表于 2020-10-13 15:02 我看了下  但是真的没看懂 有人说直接 用时钟频率/分频数/定时 ...

为什么每两个时钟周期才产生一次溢出呢

此帖出自51单片机论坛

点评

”为什么每两个时钟周期才产生一次溢出呢“ 因为你的预装值是FEH(十进制254),第一个时钟,加1成为FFH(十进制255),第二个时钟,加1成为00H(十进制256)。如果你的预装值是其它数,那就是(100H-预装数)  详情 回复 发表于 2020-10-14 16:24
 
 
 

回复

3397

帖子

0

TA的资源

五彩晶圆(中级)

27
 
maychang 发表于 2020-10-13 15:59 QWE4562009 发表于 2020-10-13 15:02 我看了下  但是真的没看懂 有人说直接 用时钟频率/分频数/定时 ...

你这个26us是  如何计算的  

此帖出自51单片机论坛

点评

256-230?  详情 回复 发表于 2020-10-15 18:28
”你这个26us是  如何计算的 “ 你自己搬着手指头数吧。  详情 回复 发表于 2020-10-14 16:25
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

28
 
QWE4562009 发表于 2020-10-14 16:05 溢出就计数一次?

TL1溢出,溢出的这位(进位)由另一个计数器计数,这个计数器不可寻址,即不能由程序读出,也就是 “不可见” 的。这个不可见的计数器,将TL1溢出16分频或者32分频(倒底是16分频还是32分频,由SMOD决定),即为波特率。

此帖出自51单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

29
 
QWE4562009 发表于 2020-10-14 16:05 溢出就计数一次?

29楼说的是定时器1低8位(即TL1)溢出,由一个不可见的计数器计数。每次TL1溢出,这个不可见的计数器计数一次。

 

此帖出自51单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

30
 
QWE4562009 发表于 2020-10-14 16:08 为什么每两个时钟周期才产生一次溢出呢

”为什么每两个时钟周期才产生一次溢出呢“

因为你的预装值是FEH(十进制254),第一个时钟,加1成为FFH(十进制255),第二个时钟,加1成为00H(十进制256)。如果你的预装值是其它数,那就是(100H-预装数)个时钟TL1产生一次溢出。

此帖出自51单片机论坛

点评

那为什么是100H呢  详情 回复 发表于 2020-10-15 18:21
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

31
 
QWE4562009 发表于 2020-10-14 16:11 你这个26us是  如何计算的  

”你这个26us是  如何计算的 “

你自己搬着手指头数吧。

此帖出自51单片机论坛
 
 
 

回复

217

帖子

0

TA的资源

一粒金砂(高级)

32
 

模式1和模式3的波特率:
Baud = (2^SMOD) / 32 * (T1溢出率);

T1的溢出率 = SYSclk / 12 / (256 - TH1); 

TH1初值:
(SMOD = 0): TH1 = TL1 = 256 - (SYSclk / 12 / 2 / 16 / 波特率);
(SMOD = 1): TH1 = TL1 = 256 - (SYSclk / 12 / 16 / 波特率);

此帖出自51单片机论坛

点评

TH1初值: (SMOD = 0): TH1 = TL1 = 256 - (SYSclk / 12 / 2 / 16 / 波特率); (SMOD = 1): TH1 = TL1 = 256 - (SYSclk / 12 / 16 / 波特率); -----------你这里的公式  详情 回复 发表于 2020-10-19 11:58
也就是先预设初值  然后得到溢出率  然后得到实际波特率?那要怎样才能得到理想或者无线接近理想的波特率呢  详情 回复 发表于 2020-10-15 18:31
这个经典   收藏了  谢谢陆总  详情 回复 发表于 2020-10-15 18:29
TH1 = 256 - (SYSclk * 2^SMOD) / (baudrate * 12 * 32);  详情 回复 发表于 2020-10-15 14:04
 
 
 

回复

217

帖子

0

TA的资源

一粒金砂(高级)

33
 
LuJianchang 发表于 2020-10-15 13:18 模式1和模式3的波特率: Baud = (2^SMOD) / 32 * (T1溢出率); T1的溢出率 = SYSclk / 12 / (256 - TH1 ...

TH1 = 256 - (SYSclk * 2^SMOD) / (baudrate * 12 * 32);

此帖出自51单片机论坛

点评

我们的目的是计算实际的波特率是吗?然后用(实际的波特率-理想波特率)/理想波特率*100%???TH1 = 256 - (SYSclk * 2^SMOD) / (baudrate * 12 * 32);--------你这个不是有两个未知数吗?如何把初值计算出来  详情 回复 发表于 2020-10-19 11:57
 
 
 

回复

3397

帖子

0

TA的资源

五彩晶圆(中级)

34
 
maychang 发表于 2020-10-14 16:24 ”为什么每两个时钟周期才产生一次溢出呢“ 因为你的预装值是FEH(十进制254),第一个时钟, ...

那为什么是100H呢

此帖出自51单片机论坛

点评

TL1是8位计数器,100H(十进制256)刚好8位装不下。  详情 回复 发表于 2020-10-15 19:45
 
 
 

回复

3397

帖子

0

TA的资源

五彩晶圆(中级)

35
 
QWE4562009 发表于 2020-10-14 16:11 你这个26us是  如何计算的  

256-230?

此帖出自51单片机论坛

点评

256-230,自己看看是多少?  详情 回复 发表于 2020-10-15 19:45
 
 
 

回复

3397

帖子

0

TA的资源

五彩晶圆(中级)

36
 
LuJianchang 发表于 2020-10-15 13:18 模式1和模式3的波特率: Baud = (2^SMOD) / 32 * (T1溢出率); T1的溢出率 = SYSclk / 12 / (256 - TH1 ...

这个经典   收藏了  谢谢陆总

此帖出自51单片机论坛
 
 
 

回复

3397

帖子

0

TA的资源

五彩晶圆(中级)

37
 
LuJianchang 发表于 2020-10-15 13:18 模式1和模式3的波特率: Baud = (2^SMOD) / 32 * (T1溢出率); T1的溢出率 = SYSclk / 12 / (256 - TH1 ...

也就是先预设初值  然后得到溢出率  然后得到实际波特率?那要怎样才能得到理想或者无线接近理想的波特率呢

此帖出自51单片机论坛

点评

先计算出TH1初值,然后再倒回去计算,然后你会发现为什么51系列的单片机常用晶振为11.059Mhz而非12Mhz,从你发的图里也能看得出来。  详情 回复 发表于 2020-10-16 08:52
“那要怎样才能得到理想或者无线接近理想的波特率呢” 倒回去计算。 石英晶体频率采用11.0952MHz,就是倒回去计算出来的。  详情 回复 发表于 2020-10-15 19:50
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

38
 

TL1是8位计数器,100H(十进制256)刚好8位装不下。

此帖出自51单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

39
 

256-230,自己看看是多少?

此帖出自51单片机论坛
 
 
 

回复

2万

帖子

0

TA的资源

超级版主

40
 
QWE4562009 发表于 2020-10-15 18:31 也就是先预设初值  然后得到溢出率  然后得到实际波特率?那要怎样才能得到理想或者无线接近理 ...

“那要怎样才能得到理想或者无线接近理想的波特率呢”

倒回去计算。

石英晶体频率采用11.0952MHz,就是倒回去计算出来的。

此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表