找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5298|回复: 16
收起左侧

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

  [复制链接]
ID:445996 发表于 2019-6-3 18:27 | 显示全部楼层 |阅读模式
                                sh=(65536-(460830/f))/256
                                sl=(65536-(460830/f))%256
                                TH0=sh;
                                TL0=
直接给TH0用表达式不行吗

回复

使用道具 举报

ID:415123 发表于 2019-6-3 21:07 | 显示全部楼层
当然能啊,但先要将定时器停了,赋值后再打开
回复

使用道具 举报

ID:277550 发表于 2019-6-3 21:13 | 显示全部楼层
当然是可以的了,把结果计算出来,赋值就可以



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

使用道具 举报

ID:554215 发表于 2019-6-3 22:37 | 显示全部楼层
直接给当然可以。
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

ID:517466 发表于 2019-6-4 07:21 | 显示全部楼层
可以直接赋值啊。
回复

使用道具 举报

ID:65956 发表于 2019-6-4 08:02 | 显示全部楼层
可以的,你把事先算好的值赋上就可以了
回复

使用道具 举报

ID:554307 发表于 2019-6-4 08:33 | 显示全部楼层
可以赋值,只不过有限制,赋值范围是0-255,你得检查想要赋值的数据类型对不对
回复

使用道具 举报

ID:540100 发表于 2019-6-4 08:56 | 显示全部楼层
这还用问啊
回复

使用道具 举报

ID:142270 发表于 2019-6-4 16:13 | 显示全部楼层
换成16进制就好了,对中间变量表示懵
回复

使用道具 举报

ID:554828 发表于 2019-6-4 16:55 | 显示全部楼层
可以赋值,注意把SH的类型改为unsigned cahr
回复

使用道具 举报

ID:553825 发表于 2019-6-4 19:31 | 显示全部楼层
可以直接赋值的
回复

使用道具 举报

ID:47286 发表于 2019-6-4 22:23 | 显示全部楼层
可用直接写

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

使用道具 举报

ID:510365 发表于 2019-6-5 01:38 | 显示全部楼层
可以直接赋值
回复

使用道具 举报

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

使用道具 举报

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 单片机教程网

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