lovencj 发表于 2010-12-1 21:40:13

求助:44b0x IRQ中断为何只能执行一次?

请大家看下一下在S3C44B0X万龙开发板上执行的一段中断代码,44b0x IRQ中断为何只能执行一次?在开发板上的表现为:中断可以实现,按下任一按键,对应LED会亮,但是再按其他键,就不能亮其他的灯了!

#include"..\INC\Option.h"
#include"..\INC\DEF.h"
#include"..\INC\44B.h"
#include"..\INC\44BLIB.h"

void __irq IRQ_KEY(void)
{
        unsigned char which_int;
        which_int=rEXTINTPND;//确定中断请求类型
        rEXTINTPND=0xff;//清除rEXTINTPND暂存器
        rI_ISPC=BIT_EINT4567;
        if(which_int==1)
                {
                        Led_Display(1);       
                }
        else if(which_int==2)
                {
                        Led_Display(2);               
                }
        else if(which_int==4)
                {
                        Led_Display(3);               
                }
        else if(which_int==8)
                {
                        Led_Display(0);               
                }
//                rPCONG=0xffff;//配置IO口为中断输入模式
}


void ENIT_Init(void)
{

                rINTMOD=0X0;//使用全局IRQ模式
                rINTCON=0X1;//允许irq中断并设置成向量中断模式
                rINTMSK=~((0x1<<26)|(0x1<<21));//开放ENT4567中断
                rPCONG=0xffff;//配置IO口为中断输入模式
                rPUPG=0x0;//上拉电阻使能
                rEXTINT=rEXTINT|0x22220000;//设置为下降沿模式
                rI_ISPC=BIT_EINT4567;//清除挂起位
                rEXTINTPND=0xf;//清除EXTINPND暂存器
                pISR_EINT4567=(unsigned)IRQ_KEY;
               
}
void Main(void)
{
        Port_Init();
        Led_Display(0);
        Beep(0);
        ENIT_Init();
        while(1);
}

lovencj 发表于 2010-12-2 20:31:48

回复【楼主位】lovencj
-----------------------------------------------------------------------

请大家帮助我下!

lovencj 发表于 2010-12-3 18:32:27

难道这个问题过于简单,大家都不屑回答!??

hubertboy 发表于 2010-12-30 13:28:03

帮顶一下,我最近才开始看44b0
页: [1]
查看完整版本: 求助:44b0x IRQ中断为何只能执行一次?