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

📄 digairpress.c

📁 51单片机C语言应用程序设计实例精讲.rar
💻 C
字号:
/*****************************************/
/* Copyright (c) 2005, 通信工程学院      */
/* All rights reserved.                  */
/* 作    者:戴 佳						 */
/*****************************************/

#include "DigAirPress.h"

void display();

/* 定时器0中断 */
void timer0() interrupt 1 using 1
{
	uint x,y;
	uint fo;

	ET0 = 0;				// 关闭定时器0中断
	count++;
	if (count == 10)			// 500ms
	{
		TR1 = 0;			// 停止计数器1
		count = 0;
		x = TH1;
		y = TL1;
		
		/* 计算频率值,由于是500ms所以需乘以2 */
		fo = (x*256+y)*2;
		
		/* 根据推算出来的公式 P=20fo/K+9 计算气压值 */
		PressVal = (uint)(20*(float)(fo)/K+9);	

		/* 显示函数,将计算出的PressVal值通过5位数码管(4位数字和1位小数点)
		显示出来,显示精度为0.1,即保留小数点后一位。此函数本例中略去。 */	
		display();
		
		/* 计数器1清0 */
		TH1 = 0;
		TL1 = 0;		
    }

	/* 重置TH0和TL0 */
	TH0 = -50000/256;
	TL0 = -50000%256;

	ET0 = 1;				// 打开定时器0中断
	TR1 = 1;				// 启动计数器1

	return;
}

/* 主程序 */
void main(void)
{
	EA = 1;
	ET0 = 1;			// 打开定时器0中断
	
	/* 设置T1为16位计数器,T0为16位定时器 */
	TMOD = 0x51;
	
	/* 定时器0为50ms定时 */
	TH0 = -50000/256;
	TL0 = -50000%256;
	
	/* 定时器1从0开始计数 */
	TH1 = 0;
	TL1 = 0;

	TR0 = 1;			// 启动定时器0
	TR1 = 1;			// 启动计数器1

	count = 0;
	
	/* 开始无限循环,等待中断到来 */
	while (1);		

}

void display(void)
{
	//本例中略去
}

⌨️ 快捷键说明

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