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

📄 startcount.c

📁 基于8051F实现导纳分析仪,键盘,液晶,功能都全有,其中包含测频,测相,测高电平,测低电平,测幅.等多种算法思想.用C语言实现.绝对原创!
💻 C
字号:
/*===============================================================*/
/*函数名称: startCount.c                                        */
/*函数功能: 对frenum个脉冲进行计时                              */ 
/*入口参数: val-----------------------------------所计的脉冲数目*/ 
/*函数说明:  T4被配置在P0.0口上面,加外部脉冲时最好加个3 k的上拉电阻
                                                                 */                     
/*修改记录: 无修改记录                                          */
/*编写作者: t483-4-19chenyong                                   */
/*编写日期: 2007-4-06                                           */
/*===============================================================*/
#include"common.h"
extern ulong freTime;
extern bit isnewdata;
uchar tf2num;
//bit isfilter;
/*================================================================*/
/*开始计时                                                        */
/*================================================================*/
void startCount(uint val)  
{
//	 T4_Setvalue(1);
//	 while(!isfilter);          //等待上升沿的到来	 
	 T4_Setvalue(val);	        //设定要计数的脉冲个数
     T4CON|=0x04;
	 tf2num=0;
	 T2_Start();
	 isnewdata=0;
}
/*================================================================*/
/*计数器初始化说明:	计数器工作在自动重载模式下,采用系统时钟12分频
                    中断益处时需要软件对标志位清0,但是不能位寻址,只
					能进行字操作.计数时,不需时钟设置.
					C/T2(计数模式)--------------------------------1
					CP/RL4(自动重载)------------------------------0
                                                                  */
/*================================================================*/
void T4_Initial()               //T4为计数模式  
{
	 T4CON=0X02;                //CT4=1,T4为计数器模式,下降沿触发加1
	 EIE2|=0X04;                //T4中断使能
}
/*================================================================*/
/*定时器2初始化说明:定时器2工作在自动重载模式下,采用系统时钟12分频
                    中断益处时需要软件对标志位清0,
					C/T2(定时器模式)------------------------------0
					CP/RL2(自动重载)------------------------------0
                    T2M(系统时钟12分频)---------------------------0
					                                              */
/*================================================================*/
void T2_Initial()               //t2为定时器模式,采用系统时钟12分频 
{
	 T2CON=0X00;                //定时器模式,自动重载
	 CKCON=0x00;                //采用系统时钟12分频
	 RCAP2H=0x00;
	 RCAP2L=0x00;
	 TH2=0x00;
	 TL2=0x00;	                //定时初始化
	 IE|=0X20;                  //T2中断使能
}
/*================================================================*/
/*定时器2开始工作                                                 */
/*================================================================*/
void T2_Start()
{
	 TH2=0x00;
	 TL2=0x00;
	 TF2=0;
	 TR2=1;		               //启动定时器 
}
/*================================================================*/
/*设置计数器要计的脉冲数                                          */
/*================================================================*/
void T4_Setvalue(uint val)	   
{     
	 RCAP4H=(~val+1)/256;
	 RCAP4L=(~val+1)%256;
	 TH4=RCAP4H;
	 TL4=RCAP4L;	            //装载初始值
}
/*================================================================*/
/*中断服务函数                                                    */
/*================================================================*/
void T2_Service() interrupt 5
{                               //T2定时溢出处理
	 TF2=0;				   
	 tf2num++;
}
void T4_Service() interrupt 16 
{   
                                //frenum个频率计满,产生T4中断
	 TR2=0;
	 freTime=256*TH2+TL2;	    //计算所用时间
     T4CON=0x00;		        //关闭计数器
	 isnewdata=1;
//	 isfilter=1;
	 freTime+=65536L*tf2num;    //需要加上T2的溢出时间
	 freTime=freTime*0.344140206;
	//0.3441402此数据为经验值,对50个数据处理的结果
}
/*=============================end=================================*/

⌨️ 快捷键说明

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