avr移位算法详细解释 (1

2019-04-15 17:34发布

AVR移位算法详细解释 (1<

AVR移位算法详细解释 (1< 很多初学者都会被移位算法迷惑,移位算法形如 (1< // RXCIE=1;TXCIE=1;UDREIE=0;RXEN=1;TXEN=1 这样的写法对高手是福,这些代码里面说明了操作了寄存器的哪些位,能够看出它的操作的意义;对新手确是祸害,因为新手看不懂这样的程序。
回到开始的地方,解释一下,什么是移位算法: 如:A = (1<<2),1写成二进制就是0000 0001,这个一左移2位就是0000 0100,所以得到的数A为0000 0100,即0x04。 再如:B = (2<<4),2写成二进制就是0000 0010,这个一左移4位就是0010 0000,所以得到的数B为0010 0000,即0x20。 上面两个移位算法都是正确的,第一种写法,表示第三位为1其余都是0的数,数的时候是从0数起的,再比如(1<<0)表示的是0000 0001,(1<<7)表示的是1000 0000,但是第二种写法没有没有这种意义,移位也用于乘除法,左移一位乘以2,右移移位除以2,上面的第二种写法2左移四位得到的数是2×2×2×2×2=32,也就是上面的0x20。
我们再来看上面的这句话:UCSRC = (1< 我们在程序中包含的头文件iom16v.h类似的文件会有#define URSEL 7 这样的定义,1<