频率脉冲的测量周期法.c

来自「在被测信号T内」· C语言 代码 · 共 40 行

C
40
字号
/*-------------------------------------
    测量周期法的基本原理:在被测信号T内,
对某一基准时间进行计数,基准时间与计数值
的乘积便是被测周期.
---------------------------------------*/

#include"at89x51.h"
#define uint unsigned int

uint count, period;
bit rflag = 0;		   //周期标志

void control(void)
{
	TMOD = 0x09;	 //T/C0为方式1,INT0 为1是启动定时器
	IT0 = 1;	    //脉冲方式(后沿负跳有效)进入中断
	TH0 = 0;TL0 = 0;
	P1_0 = 0; P1_0 = 1;	、//触发器清零
	TR0 = 1;  //启动T/C0
	EX0 = 1; //只开外部中断1
	EA = 1; //开总中断
}

void INT_0(void) interrupt 0 using 1 //INTO中断服务
{
	EA = 0;
	TR0 = 0;
	count = TL0 + TH0 * 256;//取计数值
	rflag = 1;			   //设标志
	EA = 1;
}

main()
{
	control();
	while(rflag == 0);	、//等待一个周期
	period = count * 2;	 //fosc = 6MHz,2us计数增1,周期值单位us
}

⌨️ 快捷键说明

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