时钟初始化代码

附上时钟初始化代码,仅供参考。 
/************************************************************************ 
*函数原型: void InitClock( unsigned char Out_In, unsigned char High_Low, unsigned char Dev) 
*功能: 时钟初始化处理程序 
Out_In 
0--内部时钟
1--外时钟 
High_Low 
0--低速 
1--高速
Dev 1 2 4 8 16 
************************************************************************/ 
void InitClock(unsigned char Out_In,unsigned char High_Low,unsigned char Dev) 
{ 
	prcr = 0x01; //关闭和时钟相关的保护寄存器,允许修改时钟 
	switch(Dev) 
		{
		case 1: cm16=0;cm17=0;cm06=0;break; //f1 
		case 2: cm16=1;cm17=0;cm06=0;break; //f2 
		case 4: cm16=0;cm17=1;cm06=0;break; //f4 
		case 8: cm16=0;cm17=0;cm06=1;break; //f8 
		case 16:cm16=1;cm17=1;cm06=0;break; //f16 
		default:break;
		} 
		if(High_Low) //高速时钟 
		{ 
			hra00 = 1; //高速内部振荡器振荡
			hra01 = 1; //使用内部高速振荡器时钟(FRING-Fast)作为内部时钟(FRING) 
		} else //低速时钟 
		{ 
			cm14=0; //低速内部振荡器振荡 
			hra01 = 0; //使用内部低速振荡器时钟(FRING-Fast)作为内部时钟(FRING)
		} 
		if(Out_In) //使用外部时钟 
		{ 
			cm13 = 1; //XIN-XOUT引脚连接内部起振电路 
			cm15 = 1; //XIN-XOUT引脚使用高驱动能力 
			cm05 = 0; //开始振荡
			asm("NOP\nNOP\nNOP\nNOP"); 
			asm("NOP\nNOP\nNOP\nNOP"); 
			asm("NOP\nNOP\nNOP\nNOP"); 
			ocd2 = 0; //使用主时钟作为系统时钟 
		} else //使用内部时钟 
		{ 
			asm("NOP\nNOP\nNOP\nNOP"); 
			ocd2 = 1; //使用内部时钟作为系统时钟
		} 
		prcr = 0; //打开保护寄存器
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值