電子工程網(wǎng)

標題: 2440按鍵中斷的問(wèn)題 [打印本頁(yè)]

作者: penny    時(shí)間: 2009-12-13 19:27
標題: 2440按鍵中斷的問(wèn)題
#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;     // 使用默認的固定的優(yōu)先級
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后無(wú)錯誤提示,仿真運行后在板子上按鍵后LED沒(méi)有反應,調試時(shí)GO后程序有時(shí)候會(huì )跳入一個(gè)死循環(huán):33f01608 [0xeafffffe] dcd 0xeafffffe;
但有時(shí)候會(huì )在主程序斷點(diǎn)停下來(lái)。
請教高手什么原因啊,是程序問(wèn)題么??
作者: penny    時(shí)間: 2009-12-14 21:58
有沒(méi)有人知道原因的啊,我換了個(gè)程序,還是出現上面的問(wèn)題,GO后程序進(jìn)入PC為33f01608 [0xeafffffe] dcd 0xeafffffe;死循環(huán).




歡迎光臨 電子工程網(wǎng) (http://selenalain.com/) Powered by Discuz! X3.4
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页