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

📄 ps2-c51.txt

📁 keil C51编译的单片机通过PS2口接收pc键盘输入数据
💻 TXT
字号:
#include <reg51.h>
#include <INTRINS.H>
 unsigned char KeyCode;  //键盘键值
#define WAITFORKEYBOARDPULSE  while(!scl); while(scl);
bit KeyBoardConnectFlag = 0;
sbit scl=P3^2;
sbit sda=P1^3;
sbit P2_1=P2^1;
sbit LED1=P0^0;
sbit LED2=P0^1;
sbit LED3=P0^2;
sbit LED4=P0^3;
sbit LED5=P0^4;
sbit LED6=P0^5;
sbit LED7=P0^6;
sbit LED8=P0^7;


/*********************************************************/
//函数:Delay()
//功能:延时
//输入:延时时间设定值
//输出:?
//描述:
/*********************************************************/
void Delay(unsigned char Times)
{
 unsigned char n;
 n = 120;
 for(;Times>0;Times--)
 {
  for(;n>0;n--);

 }
}
/*********************************************************/
//函数:ReadPS2()
//功能:扫描键盘
//输入:
//输出:键值
//描述:
/*********************************************************/\
unsigned char ReadPS2()
{
 //unsigned char KeyCode;  //键盘键值
 unsigned char bitCount; //位数
 while(scl);   // 等待键盘把时钟第一次拉低

   for(bitCount = 8; bitCount != 0; bitCount --)   // 把起始位算入
   {
    WAITFORKEYBOARDPULSE;     // 等待一个有效的下跳沿
    KeyCode  >>= 1;      // 按照PS2格式,数据低位在前
    scl  = 1;
    sda  = 1;
    if(sda == 1)
  {
      KeyCode |= 0x80; // 得到有效的数据位
     }
   }
   WAITFORKEYBOARDPULSE;     // 等待按键发送效验位
   WAITFORKEYBOARDPULSE;     // 等待按键发送终止位
   while(!scl);         // 等待键盘把时钟线拉高

   // return(KeyCode);         // 返回按键扫描
}

/*****************************************************************************/
//main.c
//功能:从PS/2口接受键盘信息控制led灯
//修改:
//时间:2006-10-19
//作者:
/*****************************************************************************/

void main()
{
		P0=0xff;			//初始化P0口
      //  P2_1=0;			//屏蔽LCD

		while(1){
            ReadPS2();
switch(KeyCode)
        	{
         case 0x05:   //f1
               LED1=0;
               break;
         case 0x06:
               LED2=0;
               break;
         case 0x04:
  	     	  LED3=0;
               break;
         case 0x0c:
		 	 LED4=0;
               break;
         case 0x03:
              LED5= 0;
               break;
         case 0x0b:
              LED6=0;
              break;
        case 0x83:
               LED7= 0;
               break;
        case 0x0a:
               LED8= 0;
               break;       
        case 0x76:
	     P0=0xff;
                break;
        default:
		break;
            }
	}
}

⌨️ 快捷键说明

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