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

📄 keyboard.c

📁 avr单片机
💻 C
字号:
//***************************************************************************
//   4×4矩阵键盘扫描程序
//	 date:2004.12.16
//***************************************************************************
//连线方式:     
//P1口为4×4矩阵键盘PC.0-PC.3接上拉电阻 PC.4-PC.7
//***************************************************************************
#include <iom16v.h>
#include <stdio.h>
#include <macros.h>

#include "keyboard.h"
unsigned char keycode=0;

void dlms(void)//延时
{
   unsigned char i;
   for(i=0;i<200;i++){i=i;}
}

unsigned char kbscan(void)//键盘扫描
{  unsigned char sccode,recode,i,j; 
   DDRC=0xF0;
   PORTC=0x0F;
   if((PINC&0x0F)!=0x0F)
  {       
     dlms();
     if((PINC&0x0F)!=0x0F)
    {
      for(sccode=0x7F;(sccode|0x10)!=0;sccode=(sccode>>1)|0x80)
     {
	   //scode&=oxF0;
       PORTC=sccode; 
       if(sccode==0xFF)return(0);
       if((PINC&0x0F)!=0x0F)
      {  
         recode=(PINC&0x0F);
         if(((~sccode)&0xF0)>=0x80)
        {
          i=0;
        }
        else if(((~sccode)&0xf0)>=0x40)
       {
          i=1;
        }
		else if(((~sccode)&0xf0)>=0x20)
        {
         i=2;
        }
		//else if(((~sccode)&0xf0)>=0x10)
        //{
         //i=3;
        //}
		else i=3;
		
        if(((~recode)&0x0f)>=0x08)
        {
            j=0;
         }
         else if(((~recode)&0x0f)>=0x04)
         {
             j=1;
         }
		 else if(((~recode)&0x0f)>=0x02)
         {
             j=2;
         }
		 //else if(((~recode)&0x0f)>=0x01)
         //{
           //  j=3;
         //}
         else j=3;

         keycode=i*4+j;
         return (keycode);

       }

     }

    }
    else
    {
        return(20);
    }
   }
   return(20);
}

⌨️ 快捷键说明

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