電子工程網(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页