?? kb.c
字號:
#include "..\inc\def.h"
#include "..\inc\44b.h"
#include "..\inc\44blib.h"
#include "..\inc\kb.h"
void keyboard_ISR(void)
{
char x,y,xrecord,yrecord,temp;
rI_ISPC=BIT_EINT0; //clear pending_bit
Delay(400); //delay 40ms
if((rPDATF&0x1E0)==0x1E0)
{
return 0; //no keyboard press,return
}
else
{
x=1;
y=1;
xrecord=(~((rPDATF&0x1E0)>>1));
xrecord=xrecord>>4;
while(xrecord!=0x1) //judge row
{
x=x+1;
xrecord=xrecord>>1;
if(xrecord==0)
{
rPDATG=0X0F; // no ,return
return 0;}
}
Delay(200); //delay 20ms
rPDATG=0XEF; //input high
while((rPDATF&0x1E0)==0x1E0)
{
rPDATG=rPDATG<<1;
temp=rPDATG;
if((temp&0xf0)==0XF0) //noboard press,return
{
rPDATG=0X0F;
return 0;}
}
Delay(200); //delay 10ms
yrecord=~((rPDATG&0xF0)>>4)&0x0F;
while(yrecord!=0x1) // judge line
{
y=y+1;
yrecord=yrecord>>1;
if(yrecord==0)
{
rPDATG=0X0F; //no board press,return
return 0;}
}
Led_Display(x+(y-1)*4-1);
Uart_Printf("%3d",x+(y-1)*4-1);
Delay(1200); //delay 40ms
rPDATG=0X0F;
}
}
void Test_Kb(void)
{
pISR_EINT0=(unsigned)keyboard_ISR;
Uart_Printf("keyboard test for S3C44B0X\n");
Uart_Printf("press any key,it will display on 8-SEG\n");
Uart_Printf("Typing any key to exit!!!\n");
rINTMSK =~(BIT_GLOBAL|BIT_EINT0);
while(1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -