ocmprj1.c

来自「《dsPIC通用数字信号控制器原理及应用》源码」· C语言 代码 · 共 47 行

C
47
字号
/*****************************************************************
**功能描述: RD2(OC3)输出比较,单比较匹配模式,电平交替翻转输出**
*****************************************************************/
#include "p30f6014.h"

/*系统初始化子程序,放在程序首部*/
void InitializeSys()
{
    INTCON1 = 0x0000; //关中断				
    INTCON2 = 0x0000;				
    IEC0 = 0x0000; //IECx中断禁止					
    IEC1 = 0x0000;
    IEC2 = 0x0000;			
}

/*输出比较模块配置子程序*/
void ConfigOC3()
{
    OC3CON = 0x0000; //Timer2是比较3的时钟源
    OC3R = 0x001a; //设置匹配值0x001a
    T2CON = 0x0000; //预分频1,16位定时器,使用内部时钟
    PR2 = 0x003a; //周期寄存器赋值0x003a,TMR2在0x003a处复位
    TMR2 = 0x0006; //TMR2初值0x0006
    IFS1bits.OC3IF = 0; //清除输出比较中断标志位
    IEC1bits.OC3IE = 1; //使能输出比较中断
    IPC4bits.OC3IP = 7; //设置中断优先级7
    IEC0bits.T2IE = 0; //不使能Timer2定时器中断
}

/*中断子程序:输出比较3中断,比较匹配时产生中断*/
void __attribute__((__interrupt__)) _OC3Interrupt()
{
    IFS1bits.OC3IF = 0;				//清除输出比较3中断标志位
}

main()
{
    InitializeSys();
    ConfigOC3();
    T2CONbits.TON = 1; //打开定时器2
    OC3CONbits.OCM = 3; //选择单比较匹配模式,电平交替翻转输出	
	while(1)
	{
	; //可编写其它程序
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?