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

📄 interruptservice.c

📁 带时钟功能温度和湿度测量的仪器
💻 C
字号:
/*############################################################
文件名:  InterruptService.c
功能:    所有中断服务函数实现
单位:    浙江工商大学-信电学院
创建日期:2004-09-24
创建人:  Houseivan
修改人:  Houseivan
修改日期:2005-03-11
############################################################*/
#include"Includes.h"

/*检查是否需要提供系统中断服务*/
#if _SYS_INTERRUPT>0
	extern uchar data MeasureTimer;		//测量用定时器1s=50x20ms
	extern uchar data SampleTimer;		//系统数据刷新定时器1min=60x1s
	extern uchar data StoreTimer;		//存储采样定时器1Hour=60x1min
/*------------------中断函数声明地址区---------------------------------*/
#if _DETECT_TASK>0
	extern uint  data HumiCounter;		//湿度计数器
	extern uint  data TempCounter;		//温度计数器

/*############################################################
名称: HumidityCounter()
功能: 外部中断0用于代替counter1计数湿度脉冲 
注意: 必须设置成边沿触发方式
############################################################*/
void HumidityCounter() interrupt 0 
{                           
     HumiCounter++;
}

#endif

/*############################################################
名称: TemperatureCounter()
功能: 计数器0对温度频率进行计数
注意: 结果存放到TempCounter
void Temperature_Counter() interrupt 1 {}
############################################################*/

/*############################################################
名称: Extern1Service()
功能: 保留外部中断1
注意: 
void  Extern1Service() interrupt 2 {}
############################################################*/
//sbit	Wdog=P2^5;
//#define ClearWatchDog()		{Wdog=1; ; ; ; ; Wdog=0;}
/*############################################################
名称: Timer20ms()
功能: 20ms定时功能 
注意: 1000ms=40 x 25 ms
      最大定时时间:42666.666666666666666666666666667us=43ms
	  40ms fosc=18.432M 0x112c /12MHZ 0x63c0
############################################################*/
void Timer20ms() interrupt 3  
{   
	//EnterCritical();

	MeasureTimer++;
	if(MeasureTimer>_MEASURE_ALARM)		//==50这个值要被使用
	{
		MeasureTimer=0;
		SampleTimer++;		//一分钟定时器
		if(SampleTimer>_SAMPLE_ALARM)	//==60这个值要被使用
		{	
			SampleTimer=0;
			StoreTimer++;	//一个小时定时器
			if(StoreTimer>_STORE_ALARM)
				StoreTimer=0;
		}
	}
	ClearWatchDog();
	TH1=_TIMER1_H;          
	TL1=_TIMER1_L;
	//ExitCritical();            
}


/*############################################################
名称: ScomService()
功能: 串行中断服务函数
注意:  
void ScomService() interrupt 4
############################################################*/
/*############################################################
名称: BaudSetupTimer2()
功能: 串行中断服务函数
注意:  该设备在本系统中作为波特率发生器使用
############################################################*/
/*###########################################################
void BaudSetupTimer2() interrupt 5
{}
############################################################*/
/*----------------------------------------------------------------------*/
#endif

⌨️ 快捷键说明

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