主要用来收集在学习过程中遇到的一些小技巧。
一、单片机中读写地址时为什么要对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位再取余数不就行了