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

📄 isrs.c

📁 此文件是在blackfin533下实现的ps2键盘程序
💻 C
字号:
#include "bf5xx.h"
#include "types.h"

volatile uint8_t key;
volatile uint8_t key2;
volatile uint8_t key3;
volatile uint8_t key_up;

static int time;
/****************************************************************************
* 名称 :Init_Flags
* 功能 :当PF46为低电平时就触发中断,中断服务程序读取键盘
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
EX_INTERRUPT_HANDLER(FlagA_ISR_KBD)
{
	int i;
	int data;
   
 	do{
		i =* pCtrIn_Int_B;
 	}while((Keyy_INT&i));               //等待时钟线低电平
 	
	if ((time > 0) && (time < 9))           //截取第一帧数据
 	{
		READ_PF_STAT(data);
	 	if((data&SCL) == 0)
     	{
     		key = key>>1;
     	}
 	 	if((data&SCL) == 0x0001)
     	{
       		key = key>>1;
        	key = key|0x80;	
     	}	
 	}	
 	if ((time > 11) && (time < 20))          //截取第二帧数据
    {
        READ_PF_STAT(data);
        if((data&SCL) ==0 )
        {
            key2 = key2>>1;
        }
        if((data&SCL)==0x0001)
        {
            key2 = key2>>1;
            key2 = key2|0x80;
        }
    }    
    if ((time > 22) && (time < 31))         //截取第三帧数据
    {
        READ_PF_STAT(data);
        if((data&SCL) == 0)
        {
            key3 = key3>>1;
        }
        if((data&SCL) == 0x0001)
        {
            key3 = key3>>1;
            key3 = key3|0x80;
      	}
    }
    
    time++;
    
 	do{
		i =* pCtrIn_Int_B;	
	}while(!(i&Keyy_INT));                   //等待时钟线到高电平
	
	if(time >30)	  
	{
		*pFIO_FLAG_C = 0x0020;               //清中断
  		time = 0;
  		key_up = 1;
  		//*pFIO_MASKA_C = 0x0020;		     //禁止中断
	}	
}

⌨️ 快捷键说明

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