有几个例子:
1. BCSCTL2 = SELM_3 + DIVM_2 + SELS; 这个说明SELM选10,DIVM选01(/2),SELS选0
这样的解释正确吗?
2. P1DIR = ZERO_CROSSING_OUT + SEGMENT_OUT; (设置ZERO_CROSSING_OUT为Bit6, 设置SEGMENT_OUT为Bit0)
那这个该怎么解释呢?
3. DCOCLK = 0x60 + 0x00;
是否就等于0x60?
若能解答真的很谢谢,卡了很久了
Carter Liu:
这些个加法,并不是你说的寄存器的加法运算,而是普通的无符号数加法运算后对特殊功能寄存器进行赋值。
1. SELM_3 、 DIVM_2 、 SELS是宏定义,你找找它代表什么(应该是在头文件里面), 加在一起赋值给寄存器后看看对应的寄存器各个位处于什么状态;
2. ZERO_CROSSING_OUT 、 SEGMENT_OUT也是宏定义,同上解释;
3.是的,不需怀疑。
Haiqi Bian:
回复 Carter Liu:
我具体说一下过程,你看看我说得对不对:
1,BCSCTL2 = SELM_3 + DIVM_2 + SELS
SELMx位取10(XT2CLK when XT2 oscillator present on-chip. LFXT1CLK or VLOCLK when XT2 oscillator not present on-chip)
DIVMx位取01(/2)
SELS位0(DCOCLK)
所以最后BCSCTL2就是:10010000
2,ZERO_CROSSING_OUT和SEGMENT_OUT都是在头文件里自己定义的,分别是Bit6和Bit5
所以最后P1DIR就是:00(Z_C_O)(S_O)00000
你看看我这样做是不是就对了
很感谢啊!
Haiqi Bian:
回复 Carter Liu:
我具体说一下过程,你看看我说得对不对:
1,BCSCTL2 = SELM_3 + DIVM_2 + SELS
SELMx位取10(XT2CLK when XT2 oscillator present on-chip. LFXT1CLK or VLOCLK when XT2 oscillator not present on-chip)
DIVMx位取01(/2)
SELS位0(DCOCLK)
所以最后BCSCTL2就是:10010000
2,ZERO_CROSSING_OUT和SEGMENT_OUT都是在头文件里自己定义的,分别是Bit6和Bit5
所以最后P1DIR就是:00(Z_C_O)(S_O)00000
你看看我这样做是不是就对了
很感谢啊!
Haiqi Bian:
回复 Carter Liu:
啊呀,明白了!十分感谢!十分感谢!