N76E003 输入捕获

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的输出结果。测试成功。
捕获结果

猜你喜欢

转载自blog.csdn.net/u014798590/article/details/86330036