查看: 4468|回复: 1

[提问] 2440按键中断的问题

[复制链接]
发表于 2009-12-13 19:27:34 | 显示全部楼层 |阅读模式
关键词: 按键 , 问题 , 中断
#include "def.h"
#include "option.h"
#include "2440addr.h"     
#include "2440lib.h"
#include "2440slib.h"
#define KEY1 (1<<0)
#define KEY2 (1<<3)
#define KEY3 (1<<5)
#define KEY4 (1<<6)
#define LED1 (1<<5)
#define LED2 (1<<6)
#define LED3 (1<<7)
#define LED4 (1<<8)

void IRQ_KEY(void)
{
    rSRCPND&=(~(1<<5));
    rINTPND&=(~(1<<5));
    rEINTPEND&=(~((1<<8)|(1<<11)|(1<<13)|(1<<14)));
    rGPGCON = rGPGCON & (~((3 << 0) | (3 << 6) | (3 << 10) | (3 << 12)));
    if (rGPGDAT & KEY1){
        rGPBDAT |= LED1;
    }
    else {
        rGPBDAT &= ~LED1;
    }
    if (rGPGDAT & KEY2){
        rGPBDAT |= LED2;
    }
    else {
        rGPBDAT &= ~LED2;
    }
    if (rGPGDAT & KEY3){
        rGPBDAT |= LED3;
    }
    else {
        rGPBDAT &= ~LED3;
    }
    if (rGPGDAT & KEY4){
        rGPBDAT |= LED4;
    }
    else {
        rGPBDAT &= ~LED4;
    }
    rGPGCON |= (2 << 0) | (2 << 6) | (2 << 10) | (2 << 12);
}



void Main(void){
    rGPBCON = (rGPBCON & 0xfffc03ff) | 0x15400;
    rGPBDAT |= LED1 | LED2 | LED3 | LED4;
        while (1);
}  


void EINT_Init(void){
   rGPGCON &= (~((3 <<0) | (3 <<6) | (3 << 10) | (3 << 12)));
  rGPGCON |= (2 << 0) | (2 << 6) | (2 << 10) | (2 << 12);
  rEXTINT1 = rEXTINT1 & (~((7 << 0) | (7 << 12) | (7 << 20) | (7 << 24)));
  rEXTINT1 = rEXTINT1 | ((6 << 0) | (6 << 12) | (6 << 20) | (6 << 24));
  pISR_EINT8_23 = (unsigned int)IRQ_KEY;
  rPRIORITY = 0x7f;     // 使用默认的固定的优先级
rINTMOD = 0x00000000;     // 所有中断均为IRQ中断
  rSRCPND&=(~(1<<5));
   rINTPND&=(~(1<<5));
   rEINTPEND&=(~((1<<8)|(1<<11)|(1<<13)|(1<<14)));
  rINTMSK &= (~(1<<5)); // 使能外部中断8_23
  rEINTMASK &= (~((1 << 8) | (1 << 11) | (1 << 13) | (1 << 14)));
}


程序MAKE后无错误提示,仿真运行后在板子上按键后LED没有反应,调试时GO后程序有时候会跳入一个死循环:33f01608 [0xeafffffe] dcd 0xeafffffe;
但有时候会在主程序断点停下来。
请教高手什么原因啊,是程序问题么??
 楼主| 发表于 2009-12-14 21:58:37 | 显示全部楼层
有没有人知道原因的啊,我换了个程序,还是出现上面的问题,GO后程序进入PC为33f01608 [0xeafffffe] dcd 0xeafffffe;死循环.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表