⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kb.c

📁 《基于s3c44B0X嵌入式uCLinux系统原理及应用》李岩编的ppt
💻 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 + -