PIC16F690 时钟初始化实例
时间:01-21 15:59 阅读:1859次
*温馨提示:点击图片可以放大观看高清大图
简介:在这里和大家分享一个PIC16F690时钟初始化的程序。
//时钟源选择
#define CLKS_INT (1<<1)//内部时钟
#define CLKS_CONFIG (0<<1)//由配置1决定时钟
//内部振荡频率选择
#define IRCF_31KLF (0<<4)
#define IRCF_125KMF (1<<4)
#define IRCF_500KMF (3<<4)
#define IRCF_1MHF (4<<4)
#define IRCF_2MHF (5<<4)
#define IRCF_4MHF (6<<4)
#define IRCF_8MHF (7<<4)
//--OSCSTAT--振荡器状态寄存器
#define HTS (1<<2)//中频内部振荡就绪
#define LTS (1<<1)//低频内部振荡就绪
#define SCS (1<<0)
//*************************************
// 函数名称:Init_Clk
// 函数功能:系统时钟初始化
// 入口参数:时钟分频
// 出口参数:无
//**************************************
void Init_Clk(uint8 Clocks,uint8 Frequency)
{
OSCCON = Clocks | Frequency ;
if(Clocks == CLKS_INT)//选择内部时钟时 等待时钟振荡稳定
{
if(Frequency == IRCF_31KLF)
{
while((OSCCON & LTS)==0);
}
else //if(Frequency >= IRCF_31KLF)
{
while((OSCCON & HTS)==0);
}
}
}
//----应用实例-----
//时钟初始化 设置内部8M
Init_Clk(CLKS_CONFIG,IRCF_8MHF) ;//8M OK