找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4708|回复: 16
打印 上一主题 下一主题
收起左侧

为什么单片机TH0和TL0不能直接赋值?

  [复制链接]
跳转到指定楼层
楼主
ID:445996 发表于 2019-6-3 18:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                                sh=(65536-(460830/f))/256
                                sl=(65536-(460830/f))%256
                                TH0=sh;
                                TL0=
直接给TH0用表达式不行吗

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:415123 发表于 2019-6-3 21:07 | 只看该作者
当然能啊,但先要将定时器停了,赋值后再打开
回复

使用道具 举报

板凳
ID:277550 发表于 2019-6-3 21:13 | 只看该作者
当然是可以的了,把结果计算出来,赋值就可以



~~~~~~~~~~~~~~~~
回复

使用道具 举报

地板
ID:554215 发表于 2019-6-3 22:37 | 只看该作者
直接给当然可以。
回复

使用道具 举报

5#
ID:511890 发表于 2019-6-3 23:03 | 只看该作者
可以呀,TH0是计时器/计数器T0的高位地址,TL0是T0的地位地址。当然是直接赋值的。不过它们是8位的,最大值只能到255。你代码里的sh如果是unsigned char类型的就没问题。
回复

使用道具 举报

6#
ID:388197 发表于 2019-6-4 00:19 | 只看该作者
当然可以直接赋,而且直接赋值只会更好.用这种表达式赋值一般是要改变中断阀值的时候,比如发占空比不为50%的PWM.
回复

使用道具 举报

7#
ID:517466 发表于 2019-6-4 07:21 | 只看该作者
可以直接赋值啊。
回复

使用道具 举报

8#
ID:65956 发表于 2019-6-4 08:02 | 只看该作者
可以的,你把事先算好的值赋上就可以了
回复

使用道具 举报

9#
ID:554307 发表于 2019-6-4 08:33 | 只看该作者
可以赋值,只不过有限制,赋值范围是0-255,你得检查想要赋值的数据类型对不对
回复

使用道具 举报

10#
ID:540100 发表于 2019-6-4 08:56 | 只看该作者
这还用问啊
回复

使用道具 举报

11#
ID:142270 发表于 2019-6-4 16:13 | 只看该作者
换成16进制就好了,对中间变量表示懵
回复

使用道具 举报

12#
ID:554828 发表于 2019-6-4 16:55 | 只看该作者
可以赋值,注意把SH的类型改为unsigned cahr
回复

使用道具 举报

13#
ID:553825 发表于 2019-6-4 19:31 | 只看该作者
可以直接赋值的
回复

使用道具 举报

14#
ID:47286 发表于 2019-6-4 22:23 | 只看该作者
可用直接写

TH0=0x01;
TL0=0x0d;
回复

使用道具 举报

15#
ID:510365 发表于 2019-6-5 01:38 | 只看该作者
可以直接赋值
回复

使用道具 举报

16#
ID:555266 发表于 2019-6-5 09:16 | 只看该作者
好像不行,我曾经定义一个全局 i=500; delay(i);就不能正常运行,虽然我还没找到原因,但你这个和我这个差不多!!!
回复

使用道具 举报

17#
ID:881491 发表于 2021-5-29 19:19 | 只看该作者
honey_teck 发表于 2019-6-3 21:07
当然能啊,但先要将定时器停了,赋值后再打开

正解,我想把TL和TH清零,结果赋值0没作用。听了你的建议把定时器TR=0后,在赋值就成功了。膜拜
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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