关于编程中的一些小技巧

主要用来收集在学习过程中遇到的一些小技巧。

一、单片机中读写地址时为什么要对256求模和求余

定时器工作在16位计数模式的时候有两个个参数TH跟TL
这2个参数都是8位(0-255)的,不能直接接受16位(0-65535)数据
为了使高8位赋值到TH里面就要采用除以256的方法,等效于>>8(2的8次方=256),就相当于把高字8位移动到低8位的位置了
余数是为了把低8位赋值到TL里面,当不能被256整除留下的余数范围只有0-255以内。所以可以直接赋值给TL了。
所以
所以
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
等效于
TH0=(65536-50000)>>8;
TL0=(65536-50000)&0x00ff;

问:为什么是除以256和取余呢,为什么不是减呢

答:简单的原理。 十进制运算中如果我要分离18 取出十位1只要18/10即可获得 取出个位8还是18/10,但是这次取的是余数8 在单片机里面只有二进制 像(65536-50000)这样十进制的最终还是会被转换成二进制写到单片机里面 二进制也是一样的道理要取出高8位 只要除以2八次方也就是256,不就得到高8位的值了 低8位再取余数不就行了

原地址:单片机中断装初值时为什么要对256求模和求余_百度知道 (baidu.com)

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值