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

📄 vectors08.c

📁 为日本瑞萨苏州分公司做的一个温控系统
💻 C
字号:
//-------------------------------------------------------------------------*
//文件名:vectors08.c                                                       *
//功  能:用于定义中断矢量表                                                *
//-------------------------------------------------------------------------*
//头文件
#include "GP32C.H"          //包含头文件
#include "Type.h"           //类型别名定义
#include "EnDisInt.h"       //开放或禁止MCU各模块中断头文件
#include "LCD.h"            //包含LCD驱动头文件
#include "Show.h"           //包含LCD显示头文件
#include "H08SCI.h"         //包含SCI发送接收头文件
#include "Flash.h"

//定时器相应寄存器定义  
#define TOFBit     7        //定时器溢出标志位

//全局变量声明
extern INT8U LcdShowBuff[64];  //外部定义64个字节的LCD显示缓冲区
extern INT16U ADValue[11];  //11路A/D采集数据
extern INT16U Temper;       //设定温度
extern INT16U CurtTmp;      //当前温度
extern INT16U CurtTime;     //当前时间
extern INT16U Time;         //定时时间
extern INT8U ScdTim;        //中断秒数
extern INT16U MntTim;       //中断分数
extern const INT16U BigNumCode[10][32];
extern const INT8U  Tmin;
extern const INT8U  Tmax;
extern const INT16U  TADmin;
extern const INT16U  TADmax;
extern const INT8U  MCUno;
extern INT8U FlashFlag;
extern unsigned char N,FlashData[8]; 
extern INT16U ADCurtTmp;


//内部函数
//串行接收中断处理函数
#pragma interrupt_handler isrSCIRe
void isrSCIRe(void)
{
   INT8U data[4];
   INT8U Tmin,Tmax;
   
   DisableMCUInterrupt();
   SCIReN(1,data);
   if(data[0]==MCUno)        //1#
   {
      SCIReN(3,data);
      switch(data[0])
      {
         case 'R':        //读数据
               SCISend1(CurtTmp>>8);
               SCISend1(CurtTmp);
               SCISend1(Temper>>8);
               SCISend1(Temper);
               SCISend1(CurtTime>>8);
               SCISend1((INT8U)CurtTime);
               SCISend1(Time>>8);
               SCISend1(Time);
               break;
         case 'T':        //校准当前温度值
               
                FlashData[0]=Tmin;
                FlashData[1]=data[2];
                FlashData[2]=TADmin>>8;
                FlashData[3]=TADmin;
                FlashData[4]=ADCurtTmp>>8;
                FlashData[5]=ADCurtTmp;
                FlashData[6]=MCUno;
                N=7;
                FlashFlag=1;
               break;
         case 'M':        //更改MCU号
               FlashData[0]=Tmin;
               FlashData[1]=Tmax;
               FlashData[2]=TADmin>>8;
               FlashData[3]=TADmin;
               FlashData[4]=TADmax>>8;
               FlashData[5]=TADmax;
               FlashData[6]=data[2];
               N=7;
               FlashFlag=1;
               break;
      }
   }
/*/////////////////////////////
   else if(data[0]==0xAA)
   {
     SCIReN(1,data);
     SCISend1(data[0]);
     SCISend1(0xFF);
   }
/////////////////////////////////////*/   
   EnableMCUInterrupt();
}

 
//定时器1溢出中断处理函数
#pragma interrupt_handler isrTIMER1
void isrTIMER1(void)
{
    DisableMCUInterrupt();   //禁止总中断
    //1 计时加热时间
    if(ScdTim<60)
       ScdTim++;             //秒计数
    else 
    {
       MntTim++;             //分计数
       ScdTim=0;
    } 
       
    //2 LCD显示每1s刷新一次
    //将需要显示的各数据转换成LCD可显示的格式,并放入LcdShowBuff中
    InBuff(CurtTmp,Temper,CurtTime,Time,LcdShowBuff); 
    //显示LcdShowBuff中的数据 
    LcdShCh(LcdShowBuff);
    //在Lcd上显示自定义32*16点阵的字符
    LcdShBigNum(0,0,(INT16U *)BigNumCode,CurtTmp);
    
    //3 清除定时器溢出标志位
    T1SC&=~(1<<TOFBit);
    EnableMCUInterrupt();    //开放总中断
}

//未定义的中断处理函数,本函数不能删除
#pragma interrupt_handler isrDummy  
void isrDummy(void) 
  {
  }

//中断矢量表,需定义中断函数,可修改下表中的相应项目
//(interrupt service routine,isr 中断处理程序)
#pragma abs_address:0xffdc    //中断向量表起始地址
void (* const _vectab[])(void) = {            
	isrDummy,		//时基中断 
	isrDummy,		//AD转换中断      
	isrDummy, 	    //键盘中断    
	isrDummy,		//SCI TC/TE 
	isrSCIRe,	    //SCI RF/IDLE 
	isrDummy,		//SCI PE/FE/NF/OR
	isrDummy,		//SPI TE  
	isrDummy,		//SPI MOD/OVR/RF
	isrDummy,		//TIM2溢出中断 
	isrDummy,		//TIM2通道1
	isrDummy,		//TIM2通道0
   	isrTIMER1,		//TIM1溢出中断      
	isrDummy,		//TIM1通道1
	isrDummy,		//TIM1通道0
	isrDummy,		//CGM     
	isrDummy,		//IRQ     
	isrDummy		//SWI       
    //RESET也是中断,定义在 crt08.o中 
   };
#pragma end_abs_address      

⌨️ 快捷键说明

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