//-------------------------------------------------------------------------*   
// 文件名: isr.c                                                           *
// 说  明: 中断处理函数,此文件包括:                                        *
//         (1)isrKeyBoard:键盘中断处理函数                                 *
//         (2)isrDummy:空函数                                              *
//-------------------------------------------------------------------------*

#include "Includes.h"

//-------------------------------------------------------------------------*
//函数名: isrKeyBoard                                                      *
//功  能: 扫描键盘,向串口发送键值和定义值                                  *
//参  数: 无                                                               *
//返  回: 无                                                               *
//说  明: 调用了KBScanN、SCISend1、KBInit函数                              *
//-------------------------------------------------------------------------*
interrupt void isrKeyBoard(void)
{
    uint8 value;
    uint8 i;
    static uint8 j=0;
    
    
    DisableInterrupt();                     //关总中断
    DisableKBint();                         //屏蔽键盘中断
    value = KBScanN(10);                    //扫描键值,存于value中
    if(value!=0xFF)
    {
      SCISend1(1,KBDef(value));
      for(i=0;i<32;i++) g_Dispaly[i]=KBDef(value);
      LCDshow(g_Dispaly);
      j++;
    }
    if(j==32) j=0;             //键值转化为定义值并发送

    KBInit();                               //键盘初始化键盘中断
    EnableKBint();                          //开放键盘中断
    EnableInterrupt();                      //开总中断
}

//-------------------------------------------------------------------------*
//函数名: SCI1_Recv                                                        *
//功  能: 串口1接受数据中断处理函数                                        *
//参  数: 无                                                               *
//返  回: 无                                                               *
//说  明: 无                                                               *
//-------------------------------------------------------------------------*
interrupt void SCI1_Recv(void)
{    
    uint8 i;
    uint8 SerialBuff[1];     		         //存放接收数据的数组
    
    DisableInterrupt();                 //禁止总中断
    
    i = SCIReN(1,1,SerialBuff);          //等待接收1个数据
    if (i == 0) SCISendN(1,1,SerialBuff);//发送接到的数据
    
    EnableInterrupt();                  //开放总中断
}


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

//中断处理子程序类型定义
typedef void( *ISR_func_t)(void);

//中断矢量表，如果需要定义其它中断函数，请修改下表中的相应项目
const ISR_func_t ISR_vectors[] @0xFFCC = 
{  
    isrDummy,        //时基中断 
    isrDummy,        //IIC中断      
    isrDummy,        //ADC转换中断    
    isrKeyBoard,     //键盘中断 
    isrDummy,        //SCI2发送中断 
    isrDummy,        //SCI2接收中断
    isrDummy,        //SCI2错误中断
    isrDummy,        //SCI1发送中断
    SCI1_Recv,        //SCI1接收中断
    isrDummy,        //SCI1错误中断
    isrDummy,        //SPI中断
    isrDummy,        //TPM2溢出中断      
    isrDummy,        //TPM2通道1输入捕捉/输出比较中断
    isrDummy,        //TPM2通道0输入捕捉/输出比较中断
    isrDummy,        //TPM1溢出中断      
    isrDummy,        //TPM1通道5输入捕捉/输出比较中断
    isrDummy,        //TPM1通道4输入捕捉/输出比较中断
    isrDummy,        //TPM1通道3输入捕捉/输出比较中断
    isrDummy,        //TPM1通道2输入捕捉/输出比较中断
    isrDummy,        //TPM1通道1输入捕捉/输出比较中断
    isrDummy,        //TPM1通道0输入捕捉/输出比较中断
    isrDummy,        //ICG的PLL锁相状态变化中断
    isrDummy,        //低电压检测中断
    isrDummy,        //IRQ引脚中断     
    isrDummy,        //SWI指令中断      
     //RESET是特殊中断,其向量由开发环境直接设置(在本软件系统的Start08.o文件中)                       
 };



