社区导航

 

搜索
楼主: QWE4562009

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

  [复制链接]

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-29 10:46 | 显示全部楼层
QWE4562009 发表于 2020-6-29 10:08 TH0都没参与计数,那TH0的值哪里来的呢?TH0的值给到TL0目的是为了什么

别再问 “为什么是每4次触发产生一次中断”。你如果愿意,8次也行,11次也行,100次也行,就是不能超过255次。


回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-29 10:48 | 显示全部楼层
QWE4562009 发表于 2020-6-29 10:30 可以用其他的变量给TL0赋值吗?TH0为什么一定要和TL0扯上关系呢?既然两个都是8位寄存器

TH0为TL0赋值是自动的,不必用指令干预。

你如果愿意,当然可以用一条指令为TL0赋值,只要你高兴。


回复

使用道具 举报

1799

TA的帖子

8

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2020-6-29 10:49 | 显示全部楼层
本帖最后由 wsmysyn 于 2020-6-29 10:52 编辑
QWE4562009 发表于 2020-6-29 10:30 可以用其他的变量给TL0赋值吗?TH0为什么一定要和TL0扯上关系呢?既然两个都是8位寄存器

你这个逻辑有问题,凭什么不同的寄存器不能有关系?

 

那是你没看到DPTR指针,DPH 和DPL两个8位寄存器,组成了16位数据指针,通过汇编指令movx 来寻址超过8bit的地址范围,实现寻址16bit,最大65536字节的空间。

 

那是因为CPU是8位的数据和指令总线宽度,最多一次只能处理8bit数据,超过8位的,电路上设计上通过手段来实现的,比如分多次写入,多个寄存器组合,比如定时器,16位宽,13位宽,DPTR1,DPTR2数据指针,就是这么来的。你可以把TH0和TL0当成16位宽的寄存器,8bit的CPU需要写16位数据,当然需要写2次才行。如果是16位的cpu,写一次就够了。

 

坐而言不如起而行

回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-29 10:50 | 显示全部楼层
QWE4562009 发表于 2020-6-29 10:31 TH0是一直给TL0赋值吗?还是是一个常量?

“TH0是一直给TL0赋值吗?还是是一个常量?”

哪有 “一直给TL0赋值这种事?若是 ”一直“ 赋值,单片机还做不做其它工作了?

注意:TH0是一个寄存器。

 


回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-29 11:28 | 显示全部楼层
maychang 发表于 2020-6-29 10:43 “TH0的值给到TL0目的是为了什么” 假定我们希望计数器每4次触发加1计数发生一次定时中断, ...

明白了。谢谢maychang老师


回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-29 11:29 | 显示全部楼层
maychang 发表于 2020-6-29 10:43 “TH0的值给到TL0目的是为了什么” 假定我们希望计数器每4次触发加1计数发生一次定时中断, ...

不同阶段的中断用不同的TH0初值都是可以的对吧?

点评

”不同阶段的中断用不同的TH0初值都是可以的对吧?“ 不知道什么是 ”不同阶段的中断“。  详情 回复 发表于 2020-6-29 11:34

回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-29 11:34 | 显示全部楼层
QWE4562009 发表于 2020-6-29 11:29 不同阶段的中断用不同的TH0初值都是可以的对吧?

”不同阶段的中断用不同的TH0初值都是可以的对吧?“

不知道什么是 ”不同阶段的中断“。

点评

就你说的第一次  第二次  ....  详情 回复 发表于 2020-6-29 11:41

回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-29 11:41 | 显示全部楼层
maychang 发表于 2020-6-29 11:34 ”不同阶段的中断用不同的TH0初值都是可以的对吧?“ 不知道什么是 ”不同阶段的中断& ...

就你说的第一次  第二次  ....

点评

我在40楼所说 ”第一次……第二次……“并不产生中断,只有TL0溢出(加1,从FFH变成00H)才产生中断。 而且,只有模式2中TL0才在溢出时产生中断,模式0和模式1中TL0溢出并不产生  详情 回复 发表于 2020-6-29 11:58

回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-29 11:58 | 显示全部楼层
QWE4562009 发表于 2020-6-29 11:41 就你说的第一次  第二次  ....

我在40楼所说 ”第一次……第二次……“并不产生中断,只有TL0溢出(加1,从FFH变成00H)才产生中断。

而且,只有模式2中TL0才在溢出时产生中断,模式0和模式1中TL0溢出并不产生中断。

点评

我的意思是说 第一次  第二次。。。。TH0赋给TL0的值是不是可以不一样  详情 回复 发表于 2020-6-29 13:39

回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-29 13:39 | 显示全部楼层
maychang 发表于 2020-6-29 11:58 我在40楼所说 ”第一次……第二次……“并不产生中断,只有TL0溢出( ...

我的意思是说 第一次  第二次。。。。TH0赋给TL0的值是不是可以不一样

点评

我在40楼所说 ”第一次……第二次……“ TH0并不会将其内容赋值给TL0,只有TL0溢出(加1,从FFH变成00H)时,TH0才会将其内容赋值给TL0。赋值后TH0内容并不变化,仍是原来内容。  详情 回复 发表于 2020-6-29 14:19

回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-29 14:19 | 显示全部楼层
QWE4562009 发表于 2020-6-29 13:39 我的意思是说 第一次  第二次。。。。TH0赋给TL0的值是不是可以不一样

我在40楼所说 ”第一次……第二次……“ TH0并不会将其内容赋值给TL0,只有TL0溢出(加1,从FFH变成00H)时,TH0才会将其内容赋值给TL0。赋值后TH0内容并不变化,仍是原来内容。

点评

这两个问题maychang老师帮忙解答下 谢谢  详情 回复 发表于 2020-6-29 14:30

回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-29 14:30 | 显示全部楼层
maychang 发表于 2020-6-29 14:19 我在40楼所说 ”第一次……第二次……“ TH0并不会将其内容赋值给TL0 ...

这两个问题maychang老师帮忙解答下 谢谢

邮洽图片20200629142827.jpg

点评

第二个问题:响应中断,在中断程序中完成你所需要的操作后,如果未将TF2清零,则退出中断后因TF2仍置位,将再一次进入中断。所以在退出中断之前必须用一条指令将TF2清零。  详情 回复 发表于 2020-6-29 14:56
第一个问题:TF2置位确实是改变了寄存器,不过TF2置位是硬件自动完成,不必你操作。  详情 回复 发表于 2020-6-29 14:53

回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-29 14:53 | 显示全部楼层
QWE4562009 发表于 2020-6-29 14:30 这两个问题maychang老师帮忙解答下 谢谢

第一个问题:TF2置位确实是改变了寄存器,不过TF2置位是硬件自动完成,不必你操作。


回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-29 14:56 | 显示全部楼层
QWE4562009 发表于 2020-6-29 14:30 这两个问题maychang老师帮忙解答下 谢谢

第二个问题:响应中断,在中断程序中完成你所需要的操作后,如果未将TF2清零,则退出中断后因TF2仍置位,将再一次进入中断。所以在退出中断之前必须用一条指令将TF2清零。

点评

在中断程序的最后面加上TF2 = 0 ,就怎样?  详情 回复 发表于 2020-6-29 15:12

回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-29 15:12 | 显示全部楼层
maychang 发表于 2020-6-29 14:56 第二个问题:响应中断,在中断程序中完成你所需要的操作后,如果未将TF2清零,则退出中断后因TF2仍置位, ...

在中断程序的最后面加上TF2 = 0 ,就怎样?

点评

此指令(应该说是语句)将清除中断申请标志。退出中断后就不会再次进入中断。  详情 回复 发表于 2020-6-29 15:46

回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-29 15:46 | 显示全部楼层
QWE4562009 发表于 2020-6-29 15:12 在中断程序的最后面加上TF2 = 0 ,就怎样?

此指令(应该说是语句)将清除中断申请标志。退出中断后就不会再次进入中断。

点评

TF2 = 0   这么写是否可以    详情 回复 发表于 2020-6-29 16:25

回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-29 16:25 | 显示全部楼层
maychang 发表于 2020-6-29 15:46 此指令(应该说是语句)将清除中断申请标志。退出中断后就不会再次进入中断。

TF2 = 0   这么写是否可以  

点评

对51单片机的C语言我不大熟悉。如果是汇编语言,应该是 CLR  TF2。 问问参与此帖的其他网友吧。  详情 回复 发表于 2020-6-29 16:41

回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-29 16:41 | 显示全部楼层
QWE4562009 发表于 2020-6-29 16:25 TF2 = 0   这么写是否可以  

对51单片机的C语言我不大熟悉。如果是汇编语言,应该是 CLR  TF2。

问问参与此帖的其他网友吧。


回复

使用道具 举报

1026

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

 楼主| 发表于 2020-6-30 10:20 | 显示全部楼层
maychang 发表于 2020-6-28 19:35 Sign! TH0是个8位寄存器,TL0也是个8位寄存器。TH0内容装入TL0,怎么会溢出?

t=100  那就是定时100us?还是100ms?在这里 256也是时间长度吗

点评

不知道你说的t=100是指什么,没办法回答。 至于 “在这里 256也是时间长度吗” 就更不知道指的是什么了。  详情 回复 发表于 2020-6-30 10:27

回复

使用道具 举报

1万

TA的帖子

0

TA的资源

超级版主

Rank: 6Rank: 6

发表于 2020-6-30 10:27 | 显示全部楼层
QWE4562009 发表于 2020-6-30 10:20 t=100  那就是定时100us?还是100ms?在这里 256也是时间长度吗

不知道你说的t=100是指什么,没办法回答。

至于 “在这里 256也是时间长度吗” 就更不知道指的是什么了。

点评

 SCON既 可字节寻址 ,也 可位寻址 ,字 节地址为 98H,位 地址为 98H~9FH。 SCON各 位的定义如下 --------------这个位地址可以和字节地址一样?  详情 回复 发表于 2020-6-30 11:06
那256-t是啥含义  详情 回复 发表于 2020-6-30 11:04

回复

使用道具 举报

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

关闭

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

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

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

GMT+8, 2020-7-13 00:23 , Processed in 0.547996 second(s), 40 queries , Gzip On, MemCache On.

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