ps2key.c

来自「键盘的控制的运用」· C语言 代码 · 共 51 行

C
51
字号
//ps2 keyboard
//clk=pd2,dat=pb3
#include<io8515v.h>
#include<macros.h>
#define uchar unsigned char
#define uint  unsigned int
unsigned char KeyCode;          //键盘键值
void data()
{
 uchar num;                     //位数
 DDRD=0X00;
 while((PIND|0XFB)==0XFF);      // 等待键盘把时钟第一次拉低
 for(num=8;num!=0;num--)        // 把起始位算入
   {DDRD=0X00;
    while((PIND|0XFB)!=0XFF);   // 等待一个有效的下跳沿
	while((PIND|0XFB)==0XFF);
    KeyCode>>=1;                // 按照PS2格式,数据低位在前
    if((PINB|0XF7)==0XFF)
    {
      KeyCode|=0x80;          // 得到有效的数据位
    }
  }
  DDRD=0X00; 
  while((PIND|0XFB)!=0XFF);   
  while((PIND|0XFB)==0XFF);  
  while((PIND|0XFB)!=0XFF);   
  while((PIND|0XFB)==0XFF);
  while((PIND|0XFB)!=0XFF);
}
void m8515_init()
{
 DDRA=0XFF;
 PORTA=0X00;
 DDRB=0X00;
 PORTB=0XFF;
 DDRC=0X00;
 PORTC=0XFF;
 DDRD=0X04;  //clk=1
 PORTD=0XFF;
}
void main()
{
 m8515_init();
 while(1)
  { 
   data();
   if(KeyCode==0xe0) 
   {data();}
   PORTA=KeyCode;
  } 	
}

⌨️ 快捷键说明

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