使用MCC学习PIC单片机 – NCO 数控振荡器

loading 分享 2026-7-19 下载文档

数控振荡器(NCO)是一个20位的定时器。它与普通的定时器工作原理不同。-普通的定时器每次加1,当累加值达到预设门限的时候,输出变化。

-NCO每次加一个固定值(预设值),当累加值达到最大值并产生溢出时,

输出变化

使用NCO来进行分频,输出信号频率值可以线性的改变。在MCC里面配置NCO,界面如下:

NCO的原理简图如下:

NCO输入时钟源多种时钟源,可供选择。

NCO工作模式

固定占空比模式:每次累加器溢出,产生一次电平翻转(图中D触发器构成的二分频电路)。输出信号频率为翻转频率的1/2,占空比固定为50%。

脉冲频率模式:输出脉冲宽度可选择,宽度为(1/2/4…/128)个输入时钟周期。输出信号周期为累加器溢出两次溢出的间隔周期。NCO输出方式:PIN脚输出产生中断驱动其他外设输出状态bit位MCC生成代码:代码在nco1.c文件中。

初始化NCO1CON,NCO1CLK,NCO1ACC和NCO1INC寄存器,使能NCO。voidNCO1_Initialize(void){

//SettheNCOtotheoptionsselectedintheGUI//ENdisabled;POLactive_hi;PFMPFM_mode;NCO1CON=0x01;

//CKSMFINTOSC_500KHz;PWS1_clk;NCO1CLK=0x03;//

NCO1ACCU=0x00;//

NCO1ACCH=0x00;//

NCO1ACCL=0x00;//

NCO1INCU=0x00;//

NCO1INCH=0x08;//

NCO1INCL=0x31;

//EnabletheNCOmoduleNCO1CONbits.EN=1;

//ClearingIFflagbeforeenablingtheinterrupt.PIR7bits.NCO1IF=0;

//EnablingNCO1interrupt.PIE7bits.NCO1IE=1;

}

查询输出状态

boolNCO1_GetOutputStatus(void){

//Returnoutputstatusonaccumulatoroverflowreturn(NCO1CONbits.OUT);}

当NCO累加器溢出时产生中断voidNCO1_ISR(void){

//CleartheNCO1interruptflagPIR7bits.NCO1IF=0;}


使用MCC学习PIC单片机 – NCO 数控振荡器.doc 将本文的Word文档下载到电脑
搜索更多关于: 使用MCC学习PIC单片机 – NCO 数控振荡器 的文档
相关推荐
相关阅读