主题 : tiny 6410裸机按键中断进不了中断求大神指点 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 57997
精华: 0
发帖: 107
金钱: 535 两
威望: 108 点
综合积分: 214 分
注册时间: 2011-11-01
最后登录: 2018-02-13
楼主  发表于: 2011-12-27 14:31

 tiny 6410裸机按键中断进不了中断求大神指点

程序参照网上的基本没有差别,实在找不出是哪里的问题,还望指教,初始化函数如下:
void INTC_Init()
{
  
  
     rGPNCON = (rGPNCON & ~(0xfffU)) | 0xaaa; //k1,k2,k3,k4,k5,k6中断方式
    rGPLCON1 = (rGPLCON1 & ~(0xff<<12)) | (0x33<<12);//k7,k8


    rEINT0CON0 =(rEINT0CON0 & ~(0xfffU)) |0x222;  //k1,k2,k3,k4,k5,k6下降沿触发
    rEINT0CON1 =(rEINT0CON1 & ~(0xff<<4)) |(0x22<<4);//k7,k8下降沿触发

    rEINT0FLTCON0 |=0x00C0C0C0;//使能过滤器 EINT0,1,2,3,4,5选择数字滤波器
    rEINT0FLTCON2 |=0x00C0C000;//使能过滤器 EINT19,20选择数字滤波器
    
    rEINT0MASK = ~(0x18003f);   //中断使能,开中断
    rEINT0PEND = 0x18003f;            
  
   //中断选择寄存器,是置为IRQ 还是FRQ
   rVIC0INTSELECT &=0xFFFFFFFE;  //设置IRQ模式,其实可以不设,上电自动复位
  
   VIC0VECTADDR_00=(unsigned)KeyIntHandle;//KeyIntHandle为中断处理函数
   VIC0VECTADDR_01=(unsigned)KeyIntHandle;
   VIC1VECTADDR_32=(unsigned)KeyIntHandle;
   VIC1VECTADDR_33=(unsigned)KeyIntHandle;
  
   //配置中断使能寄存器  GPN0,1,2,3,4,5为EINT0,1,2,3,4,5属于VIC0,对应于VIC0中的00,01寄存器,GPL11,12为EINT19,20属于VIC1中的32,33寄存器
   rVIC0INTENABLE |=0x00000003 ;
   rVIC1INTENABLE |=0x00000003 ;
    
  
}