ket interrupt .c.bak

来自「2410bios 实现简单功能 裸板传输 跑马灯 定时器」· BAK 代码 · 共 66 行

BAK
66
字号
#include "def.h"
#include "2410addr.h"
#include "2410lib.h"
#include "2410slib.h"
#include "mmu.h"
#include "uart.h"
#include "timer.h"
#include "rtcapi.h"

void ClearEINTPending(int bit)
{
	rSRCPND = bit;
	rINTPND = bit;
}

void IntInit()
{
	rGPFCON &= 0xFFCC;		//键盘控制寄存器
	rGPFCON |= 0x22;
	
	rGPGCON &= 0xFF3FFF3F;		
	rGPGCON |= 0x800080;
	
	rGPEDAT &= 0XD7FF;          //列清0
	rGPGDAT &= 0XFFBB;
	
	rEXTINT0 &=0xFFFE38;		//设置触发方式
	rEXTINT1 &=0x8FFF;
	rEXTINT2 &=0x8FFF;
	rEXTINT2 |=0x8000;
    
	rINTMSK &= 0xFFFFFFDA;		//设置中断掩码 
	rEINTMASK &=0xF7F7FF;
}

void __irq service()
{
	if( rINTPND & 1 )
	{
		puts("key 1\n");
		ClearPending(BIT_EINT0);
	}
	else if( rINTPND & 4 )
	{
		puts("key 2\n");
		ClearPending(BIT_EINT2);
	}
	else if( rINTPND & 0x20 )
	{
		if(rEINTPEND & 0x800)
		{
			puts("key 3\n");
			rEINTPEND &= 0x800;
			ClearPending(BIT_EINT8_23);
		}
		if(rEINTPEND & 1<<19)
		{
			puts("key 4\n");
			rEINTPEND &= 1<<19;
			ClearPending(BIT_EINT8_23);
		}
	}
	DisableIrq(BIT_EINT0 | BIT_EINT2);
	rEINTMASK |= ( (1<<11)|(1<<19) );
}	

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?