📄 kb.c
字号:
#include <string.h>
#include "..\inc\def.h"
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\kb.h"
#include "..\inc\option.h"
#include "..\inc\def.h"
/*********************************************************/
#define EXTINT4 0
#define EXTINT5 1
#define EXTINT6 2
#define EXTINT7 3
#define EXTINT4567 21
#define INTTRIG_LOW 0x00
#define INTTRIG_HIGH 0x01
#define INTTRIG_FALLING 0x02
#define INTTRIG_RISING 0x04
#define INTTRIG_BOTHEDGE 0x05
void Test_Kb(void)
{
U32 dwVal;
//设置IO 口PORT G
rPCONG |= 0xff00;
//设置中断
rINTMOD &= ~MASK_BIT(EXTINT4567); //设置EXTINT4,5,6,7为IRQ中断
rINTCON &= ~MASK_BIT(1); //IRQ 中断使能
//设置EXTINT4,5,6,7中断模式,我们这里使用低电平触发
rEXTINT &= 0xffff; //先清除EXTINT4,5,6,7的相应设置bit位
Uart_Printf ("1*4 Keyboard Test Program.\n");
Uart_Printf ("Press Key 0, 1, 2 to light the led 1, 2, 3. Press Key 3 to unlight the all leds.\n");
while (Uart_GetKey () == 0)
{
dwVal = rINTPND;
if ((dwVal & MASK_BIT(21)) == 0)
{
continue;
}
//EXTINTPND 寄存器,判断是哪个外部中断触发
dwVal = rEXTINTPND;
if ((dwVal & MASK_BIT(EXTINT4)) != 0)
{
rEXTINTPND |= MASK_BIT(EXTINT4);
//外部中断4 产生了,点亮LED1
sysUtilsLightLed (LED1, TRUE);
}
if ((dwVal & MASK_BIT(EXTINT5)) != 0)
{
rEXTINTPND |= MASK_BIT(EXTINT5);
//外部中断4 产生了,点亮LED2
sysUtilsLightLed (LED2, TRUE);
}
if ((dwVal & MASK_BIT(EXTINT6)) != 0)
{
rEXTINTPND |= MASK_BIT(EXTINT6);
//外部中断4 产生了,点亮LED3
sysUtilsLightLed (LED3, TRUE);
}
if ((dwVal & MASK_BIT(EXTINT7)) != 0)
{
rEXTINTPND |= MASK_BIT(EXTINT7);
//外部中断4 产生了,点亮LED1,2,3
sysUtilsLightLed (LED_ALL, FALSE);
}
//最后清除中断位
//rI_ISPC |= MASK_BIT(21);
rI_ISPC = dwVal;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -