keyboard.c

来自「DSP键盘实验」· C语言 代码 · 共 85 行

C
85
字号
//*****************************************************************************
//  文件名:	 keyboard.c
//  功能:	 键盘模块驱动
//           keyboard_initialize():键盘初始化
//           keyboard_ISR1()      :INT1中断服务程序,执行键盘扫描功能
//*****************************************************************************
#include <csl.h>
#include <csl_hpi.h>
#include <csl_irq.h>

unsigned short key_num;       //全局变量,存放键值,键值与按键的对应关系见keyboard.h


void keyboard_delay(unsigned short delay_time)
{
   while(delay_time--);
}


void keyboard_initialize()
{
   
   IRQ_clear(IRQ_EVT_INT1);
   IRQ_enable(IRQ_EVT_INT1);   //开放INT1
   
   key_num = 0xFFFF;
   
   HPI_RSET(GPIOCR,0xF0);      //HD0-HD3为输入,HD4-HD7输出
   HPI_RSET(GPIOSR,0x0F);      //HD4-HD7输出0
   
   keyboard_delay(0xFFF);      
   
}


interrupt void keyboard_ISR1()
{  
   unsigned short temp;
  
   
   //if(key_num == 0xFFFF)
      {
         temp = HPI_RGET(GPIOSR) + 0xF0 ;
   
         HPI_RSET(GPIOCR,0x0F);
         HPI_RSET(GPIOSR,temp);
   
         keyboard_delay(0xFFF);
   
         key_num = HPI_RGET(GPIOSR);
   
         HPI_RSET(GPIOCR,0xF0);
         HPI_RSET(GPIOSR,0x0F);
   
         keyboard_delay(0xFFF);
      }
   
}







		

            
		   















⌨️ 快捷键说明

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