isr.c

来自「水温控制系统,凌阳的61板做的」· C语言 代码 · 共 82 行

C
82
字号
#include "hardware.h"
#define P_IOB_Data         		(volatile unsigned int *)0x7005
#define P_INT_Ctrl				(volatile unsigned int *)0x7010
#define P_INT_Clear				(volatile unsigned int *)0x7011
#define ClearWDog				*(volatile unsigned int *)0x7012=1
#define P_ADC_MUX_Ctrl			(volatile unsigned int *)0x702B
#define P_ADC_MUX_Data			(volatile unsigned int *)0x702C

extern unsigned int  TempPress;		//  1:按下"输入温度";  0:没按
extern unsigned int  ResetPress;		//  1:按下"复位";  0:没按
extern unsigned int DispIt;			//  1:刷新LCD;  0:不刷新 (0.5s)
extern unsigned int ADOK;			//  1:AD转换完成;  0:没完成
extern unsigned int DingShi;		//  1:5分钟定时报音;  0:不定时报音
extern unsigned int DingShiTime;	//定时报音时间累计
extern unsigned int UpTime;			//上传时间累计
extern unsigned int  HeatTime;			//加热时间(毫秒)
extern unsigned int ADCDataSave[10];//读取的10次AD值

void ReadAD();		//读取10次AD,存在ADCDataSave[]

//=============================================
//函数: IRQ5
//说明: IRQ5_2Hz中断
//=============================================
void IRQ5(void) __attribute__ ((ISR));
void IRQ5(void)
{

if(*P_INT_Ctrl&0x0004)
	{ 
	ClearWDog;			//IRQ5_2Hz
	*P_INT_Clear=0x0004;
	
	ReadAD();
	
	DispIt=1;
	UpTime++;			//上传时间计数
	if(DingShi==1)DingShiTime++;		//定时报音计数
	}
else
	{ 
	*P_INT_Clear=0x0008;				//IRQ5_4Hz
	}
}


//=============================================
//函数: IRQ1
//说明: IRQ1_TMA中断,10ms
//=============================================
void IRQ1(void) __attribute__ ((ISR));
void IRQ1(void)
{
*P_INT_Clear=0x1000; //clear INT flag
if(HeatTime)
	HeatTime--;
if(HeatTime==0)
	*P_IOB_Data&=0xffdf;	//关继电器
}



//=============================================
//函数: ReadAD
//语法: void ReadAD(void)
//参数: 无
//说明: 读取10次AD,存在ADCDataSave[]
//=============================================
void ReadAD()
{
unsigned int i;
for(i=0;i<10;i++)
	{
	ClearWDog;
	while(!(*P_ADC_MUX_Ctrl&0x8000)); 		//wait,until ADC complete
	ADCDataSave[i]=*P_ADC_MUX_Data;
	ADCDataSave[i]&=0xffc0;
	}
ADOK=1;
}

⌨️ 快捷键说明

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