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

📄 vector~1.c

📁 飞思卡尔的电子钟和电子琴的课程设计,包括源代码
💻 C
字号:
/*-----------------------------------------------------*
*文件名:vectors08.c                                    *
*功  能:用于定义中断矢量表                             *
*-----------------------------------------------------*/
//[头文件]
#include "GP32C.H" 
#include "KB.h"             //包含头文件
#define TSTOPBit   5      //定时器计数停止位
#define TOFBit     7      //定时器溢出标志位
//未定义的中断处理函数,本函数不能删除  
extern unsigned char KB_Scan(void);
extern unsigned char KB_Def(unsigned char KB_valve);
extern void displaytime(void);
extern void bi(unsigned char p);
extern void shilf(void);
extern unsigned char time[3];
extern unsigned char date[3];
#pragma interrupt_handler isrDummy  
void isrDummy(void) 
  {

  }

#pragma interrupt_handler isrTIMER1
void isrTIMER1(void)
{
   unsigned char i;
   asm("SEI");            //关总中断
   //------------------------------
   time[2]++;             //秒数加1
   if (time[2]>=60){       //秒数未增加到60,转
      time[2]=0; time[1]++;  //秒数增加到60,清0,分钟数加1
   }
   if (time[1]>=60){          //分钟数未增到60,转
      time[1]=0; time[0]++;  //分钟数增加到60,清0,小时数加1
      bi(1);
   }
   if (time[0]>=24){          //小时数未增到24,转
      time[0]=0;             //时数增加到24,清0
      date[2]++;
   }
   if(date[2]==31){
   	  date[1]++;
   	  date[2]=1;
   }
   if(date[2]==13){
   	  date[0]++;
   	  date[1]=1;
   }
   T1SC&=~(1<<TOFBit);
   displaytime(); 
   asm("CLI");            //开总中断
}


/*键盘中断处理函数------------------------------------*/
#pragma interrupt_handler isrKBI
void isrKBI(void)
{
	asm("SEI");
	  unsigned char KB_valve;
	  INTKBSCR|= (1<<IntBit); //屏蔽键盘中断(IMASKK=1)
	  KB_valve=KB_Scan();     //扫描键值
      KB_valve=KB_Def(KB_valve);  //键值转化为定义值
      switch(KB_valve){
      case '*':
      	T1SC|=1<<TOFBit;		//stop timer
      	break;
      case 'A':shilf();
      }
	  KB_Init();			     //重新初始化键盘
	  INTKBSCR&= ~(1<<IntBit); //打开键盘中断(IMASKK=0)
	  asm("CLI");				     //重新初始化键盘
}

//中断矢量表,需定义中断函数,可修改下表中的相应项目
//(interrupt service routine,isr 中断处理程序)
#pragma abs_address:0xffdc    //中断向量表起始地址
void (* const _vectab[])(void) = {            
	isrDummy,		//时基中断 
	isrDummy,		//AD转换中断      
	isrKBI,  	    //键盘中断    
	isrDummy,		//SCI TC/TE 
	isrDummy,		//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 + -