1、寄存器说明
定时器2是一个16位的向上计数器,由高8位寄存器(TH2)和低8位寄存器(TL2)组成。通过配置寄存器
RCMP2H和RCMP2L,设置 (T2CON.0)后,定时器2能工作在比较模式和自动重载模式下。 定时
器2具有3通道输入捕获模块,可用于测量输入脉冲宽度或周期。 3通道捕获结果分别存放在寄存器C0H
及 C0L, C1H 及 C1L, C2H 及 C2L中。定时器2的时钟来自系统时钟的分频,总共具有8级分频,可适用
于更多应用需求。当TR2 (T2CON.2) 置 1,定时器使能; TR2置0时,定时器关闭。
2、示例代码
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_define.h"
long int temp[10];
int i=0;
/************************************************************************************************************
* Timer2 Capture interrupt subroutine
************************************************************************************************************/
void Capture_ISR (void) interrupt 12
{
clr_CAPF0; //清除CAP0 通道中断标志
temp[i]=(C0H*256)+C0L;
if(i<10) i++;
clr_TF2;//清除定时器2溢出标志
}
void main (void)
{
Set_All_GPIO_Quasi_Mode;
P00_Input_Mode;//将P00设置为输入模式
P00 = 1;
set_ENF0;//打开0通道噪声滤波
TIMER2_CAP0_Capture_Mode;//采用CAP0组捕获信道
// TIMER2_CAP1_Capture_Mode;
// TIMER2_CAP2_Capture_Mode;
IC3_P00_CAP0_BothEdge_Capture;//设定P00通过CAP0通道,双边沿触发
// IC3_P00_CAP0_FallingEdge_Capture;//下降沿触发
// IC3_P00_CAP0_RisingEdge_Capture;//上升沿触发
set_ECAP;//使能输入捕获中断(位于拓展中断中)
set_TR2; //定时器2计数使能
set_EA;
//-----------------------------产生125K的PWM---------------------------------------------
PWM5_P03_OUTPUT_ENABLE;//使能PWM5,通过P03引脚输出
clr_PWMTYP;//边沿对齐模式
clr_PWMMOD0;//设置为独立输出模式
clr_PWMMOD1;
PWM_CLOCK_DIV_8;//8分频模式
PWMPH = 0x00;
PWMPL = 0x0f;
set_SFRPAGE;//PWM4 and PWM5 duty seting is in SFP page 1
PWM5H = 0x00;
PWM5L = 0x08;
clr_SFRPAGE;
set_LOAD;//载入周期和占空比
set_PWMRUN;//开始输出PWM
while(1)
{
}
}
3、测试与说明
官方其实将输入捕获这部分的宏写的很好了,实在没理由去一个个配置寄存器,建议直接使用宏定义,以下是捕获125KhzPWM的输出结果。测试成功。