/*****************************************
设定系统主时钟函数
*****************************************/
void SET_MAIN_CLOCK(source)
{
if(source) {
CLKCONCMD |= 0x40; /*RC*/
while(!(CLKCONSTA &0X40)); /*待稳*/
}
else {
CLKCONCMD &= ~0x47; /*晶振*/
while((CLKCONSTA &0X40)); /*待稳*/
}
}
谢谢啊!好的加分啊!
还是看不懂,虽然“与”可以判断当前系统时钟,但不懂怎么判断稳定?
从D6的解释为:0为32M晶振;1为RC震荡;即:更具的的CMD,硬件为将该为置相应值。
如果CMD为32M晶振,则时钟稳定后就将D6清0;如果为RC,则D6置1;
“&” 的意思是对应位同为“1”则为1;“!”的意思是后面为0则为真,后面不为0则为假。
那么:while(!(CLKCONSTA &0X40);表示D6为0时,此条语句一直执行,直到D6为1;当D6为1时,表示当前系统时钟为RC;
同理,while((CLKCONSTA &0X40);