时钟电路——数字振荡器(DCO)
电路按信号方式可分为数字和模仿。
数字电路处理的是数字信号。数字电路又可分为组合逻辑电路与时序逻辑电路。时序电路能够完结组合电路的功用,反之则不建立。两者的区别是时序电路与信号的时刻有关,即有一个时钟信号。
在MSP430芯片中有3个时钟源,内部晶体振荡器(DCO)、外部低速时钟源(XT1)、外部高速时钟源(XT2)。DCO的作业能够不要外部不要外部器材的支撑,因而下降了电路的杂乱程度,可是它是根据RC的作业原理,作业频率不安稳。XT1、XT2需求外接一个晶振,所以作业频率安稳。选用两个外部晶振是让一个作业在高频一个作业在低频,高频晶体能够使程序履行速度快,低速晶体使芯片功耗下降。
//程序称号: Clock_DCO.C
//程序功用: 发生周期为 160 个体系时钟周期的方波信号,经过丈量方波信号频率取得 DCO 时钟频率
#include 430x14x.h> //包括称号界说和对应地址或数据的头函数
void int_clk(void); //声明体系时钟初始化函数
void delay(void); //声明延时函数
int main(void) //主函数
{
int_clk( ); //体系时钟初始化
WDTCTL=WDTPW+WDTHOLD; //封闭看门狗
//看门狗操控寄存器 WDTCTL 地址以及密码位 WDTPW 内容和
//使能位 WDTHOLD 内容在头函数 MSP430x14x.h 界说
//WDTPW 内容加 WDTHOLD 内容向 WDTCTL 赋值
P3SEL=0x00; //设置 P3 端口为数字输入 / 输出口
P3DIR=0xff; //设置 P3 端口为输出口
while(1) //重复履行
{
//发生周期为 160 个体系时钟周期的方波
P3OUT&=~BIT0; // P3.0 输出低电平
delay( ); //延时 75 个体系时钟周期,坚持方波信号低电平
P3OUT|=BIT0; // P3.0 输出高电平
delay( ); //延时 75 个体系时钟周期,坚持方波信号高电平
}
}
void delay(void) //延时函数
{
unsigned char i; //声明完成延时的整型数据类型循环变量
for(i=0; i<10; i++) //使用循环完成延时调整
{
_NOP( ); //发生一个MSP430体系时钟周期的延时
}
}
void int_clk(void) //体系时钟初始化函数
{
unsigned char i; //声明完成延时的循环变量
DCOCTL = 0x00; //设置数字操控振荡器的作业频率***
BCSCTL1 = 0x80; //封闭 XT2
//设置数字操控振荡器的作业频率***
BCSCTL2&=~DCOR; //挑选 MCLK 时钟源为 DCOCLK,分频比 1
//挑选 SMCLK 时钟源为 DCOCLK,分频比 1
//挑选芯片内部 DCO 电阻
do
{
IFG1&=~OFIFG; //铲除振荡器过错标志
for(i=0; i<100; i++) //使用循环完成延时调整
{
_NOP( ); //发生一个MSP430体系时钟周期的延时
}
}
while((IFG1 & OFIFG)!=0); //假如标志为1,持续等候
IFG1&=~OFIFG; //铲除振荡器过错标志
}
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/guandian/273061.html