xj_1232005 发表于 2008-6-20 22:50:35

to 傻孩子与各位大虾:PRR |= 1<<PRUSART0; 是对PRUSART0的控制位置位,

<<这个移位运算符表达式为: x << n .表示将x 以二进制方式向左移动n位。
不管是<< 还是>> 都是以右边的操作数来指定移位的位数。
所以PRR |= 1<<PRUSART0 应该如何解释呢

在傻孩子版主的书里第347页虽然讲了一些,但是对PRR |= 1<<PRUSART0没有做进一步语法诠释,我不太清楚,故请帮忙做一下解释。谢谢

Gorgon_Meducer 发表于 2008-6-20 23:20:03

请你把347页后面所有和位运算有关的内容看完……然后再看这个问题……

xj_1232005 发表于 2008-6-21 00:53:43

|= 的优先级低于 <<
所以 PRR |= 1<<PRUSART0 应该先执行 1 <<PRUSART0
但是 << 右边是移位的位数, <<的左边 是所要被移位的操作数,
但是在语法上就感觉不对了,怎么样把 1 移 PRUSART 位呢?这才是我的问题。或者说我想知道 PRUSART的定义,有可能会有帮助。
我知道 它等同于
PRR |= BIT(PRUSART0)
但是为什么?

另,我已看完 第11章。里面没有我想要的答案。

honami520 发表于 2008-6-21 01:28:59

这个,在头文件里都有定义,好比PD0其实就是0,PD1就是1。1用2进制表示就是00000001,那么将1《PD0就是将1左移PD0位,也就是左移0位。如果是1《PD7,就是将1左移7位,也就是10000000。这么说,应该清楚了吧!

Gorgon_Meducer 发表于 2008-6-21 03:46:31

to 【2楼】 xj_1232005
    请问你有仔细阅读这句话么?书中已经说了在iom48v.h中有关于PRUSART0的定义了啊。
您有打开iom48v.h这个文件做确认了么?谢谢您的提醒,下一版书中,我会在这里加入一个
强调性的旁批,提醒大家去对应的文件确认该宏的实质。
http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_320182.JPG
(原文件名:未命名.JPG)

xj_1232005 发表于 2008-6-21 12:49:24

谢谢3楼【3楼】 honami520
谢谢【4楼】 Gorgon Meducer 傻孩子
明白了。
谢谢
页: [1]
查看完整版本: to 傻孩子与各位大虾:PRR |= 1&lt;&lt;PRUSART0; 是对PRUSART0的控制位置位,