⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pwm_pulse.c

📁 采用P89LPC932单片机测量脉冲宽度的子程序
💻 C
字号:
//**********************CCU_CAPTURE.C****************************
//程序功能:对一方波的每一次电平跳变进行捕获,并用捕获值计算方波的
//脉冲宽度,占空比,周期或其他。
//***************************************************************
#include "reg932.h"
#define	uchar	unsigned char
sbit	KEY1=P0^0;

uchar	Temp;
uchar	Int1;			//第一次捕获标志位
uchar	Int2;			//第二次捕获标志位
uchar	buff[];			

void	Display();
void	CCU_init();
//----------------------------------
//功能:CCU中断服务程序
//----------------------------------
void 	CCU_isr() interrupt 11{
	EA=0;

	Temp=TISE2;
	Temp&=0x07;
	
	if(Temp==0x06)		//判断是否为ICA捕获中断
	{
		if(Int1==1)		//判断是否为第二次中断
		{
			buff[2]=ICRAL;	//第二次捕获值低字节
			buff[3]=ICRAH;	//第二次捕获值高字节
			CCCRA=0x01;	//设置为上升沿捕获
			Int2=1;		//标志已经产生第二次中断
		}
		if(Int2==1)		//判断是否为第三次中断
		{
			TCR20=0x00;	//停止CCU定时器计时
			buff[4]=ICRAL;	//第三次捕获值低字节
			buff[5]=ICRAH;	//第三次捕获值高字节
		
			Display();
			Int1=0;		//清0 第一次捕获标志位
			Int2=0;		//清0 第二次捕获标志位
		}
		
		buff[0]=ICRAL;		//第一次捕获值低字节
		buff[1]=ICRAH;		//第一次捕获值高字节
		CCCRA=0x00;		//设置为下降沿捕获
		Int1=1;			//标志已经产生第一次中断
	}

	TIFR2=0;
	EA=1;
}
//----------------------------------
//功能:主函数
//----------------------------------
void	main()
{
	P2M1=0x00;
	P2M2=0x00;			//端口初始化
	
	while(1)		
	{
		if(KEY1==0)		//当KEY1按下,中断使能,系统开始工作。
		{
			while(!KEY1);	//等待按键松开
			CCU_init();	//调用CCU初始化模块
		}
	}
}
//----------------------------------
//功能:CCU初始化程序
//----------------------------------
void CCU_init()
{	
	TPCR2H=0x00;
	TPCR2L=0x05;		//CCU定时器5分频
	TOR2H=0x00;		
	TOR2L=0x00;		//设置定时器重装值

	CCCRA=0x10;		//设置捕获模式,上升沿捕获,捕获延迟0.
	TICR2=0x01;		//使能输入捕获通道A.
	ECCU=1;			//CCU中断使能。
	EA=1;
	TCR20=0x01;		//设置CCU基本定时器功能,递增计数
}
//----------------------------------
//功能:这里可构造您自己的数据处理函数
//----------------------------------
void Display()
{
	//......		这里请添加你自己的语句,例 高电平脉宽=(buff_3,buff_2)-(buff_1,buff_0)
	//......		对得到的数据进行处理,获取所需的值
	//......		并显示或者传送给上位机
}
//*************************************************************************************

⌨️ 快捷键说明

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