?? osc.c
字號:
/*------------------------------------------------------------
File Name: osc.c
Auther: Samuel
Revision: R1
History: R1 Jul.05, 2007 Creation
------------------------------------------------------------*/
#include "common.h"
#include "osc.h"
void Osc_Init(Osc_Init_Parameter_t Osc_Init_Parameter)
{
switch(Osc_Init_Parameter.Source_Select)
{
case EXTERNAL_OSC:
{
switch(Osc_Init_Parameter.External_Mode)
{
case DISABLE:
break;
case COMS_CLK:
break;
case COMS_CLK_DIV2:
break;
case RC_OR_C_DIV2:
break;
case CRYSTAL:
if(Osc_Init_Parameter.Frequency>6700000)
{
OSCXCN = Reg_Field_Set(OSCXCN, BIT2);
OSCXCN = Reg_Field_Set(OSCXCN, BIT1);
OSCXCN = Reg_Field_Set(OSCXCN, BIT0);
}
else
{
if(Osc_Init_Parameter.Frequency>2200000)
{
OSCXCN = Reg_Field_Set(OSCXCN, BIT2);
OSCXCN = Reg_Field_Set(OSCXCN, BIT1);
OSCXCN = Reg_Field_Clr(OSCXCN, BIT0);
}
else
{
if(Osc_Init_Parameter.Frequency>720000)
{
OSCXCN = Reg_Field_Set(OSCXCN, BIT2);
OSCXCN = Reg_Field_Clr(OSCXCN, BIT1);
OSCXCN = Reg_Field_Set(OSCXCN, BIT0);
}
else
{
if(Osc_Init_Parameter.Frequency>270000)
{
OSCXCN = Reg_Field_Set(OSCXCN, BIT2);
OSCXCN = Reg_Field_Clr(OSCXCN, BIT1);
OSCXCN = Reg_Field_Clr(OSCXCN, BIT0);
}
else
{
if(Osc_Init_Parameter.Frequency>95000)
{
OSCXCN = Reg_Field_Clr(OSCXCN, BIT2);
OSCXCN = Reg_Field_Set(OSCXCN, BIT1);
OSCXCN = Reg_Field_Set(OSCXCN, BIT0);
}
else
{
if(Osc_Init_Parameter.Frequency>30000)
{
OSCXCN = Reg_Field_Clr(OSCXCN, BIT2);
OSCXCN = Reg_Field_Set(OSCXCN, BIT1);
OSCXCN = Reg_Field_Clr(OSCXCN, BIT0);
}
else
{
if(Osc_Init_Parameter.Frequency>12000)
{
OSCXCN = Reg_Field_Clr(OSCXCN, BIT2);
OSCXCN = Reg_Field_Clr(OSCXCN, BIT1);
OSCXCN = Reg_Field_Set(OSCXCN, BIT0);
}
else
{
OSCXCN = Reg_Field_Clr(OSCXCN, BIT2);
OSCXCN = Reg_Field_Clr(OSCXCN, BIT1);
OSCXCN = Reg_Field_Clr(OSCXCN, BIT0);
}
}
}
}
}
}
}
OSCXCN = Reg_Field_Set(OSCXCN, BIT6);
OSCXCN = Reg_Field_Set(OSCXCN, BIT5);
OSCXCN = Reg_Field_Clr(OSCXCN, BIT4);
break;
case CRYSTAL_DIV2:
break;
default:
break;
}
Loop_Delay(256);
while (!(OSCXCN & 0x80));
OSCICN = Reg_Field_Set(OSCICN, BIT3);
OSCICN = Reg_Field_Set(OSCICN, BIT7);
OSCICN = Reg_Field_Clr(OSCICN, BIT2);
while (!(OSCXCN & 0x80));
OSCICN = Reg_Field_Clr(OSCICN, BIT7);
break;
}
case INTERNAL_OSC:
{
break;
}
default:
{
break;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -