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

📄 keyboard_test.c

📁 freesacle的实时操作系统UCOS的开发程序
💻 C
字号:
#include <mc9s12db128.h> 



 #include "PWM.h"
 #include "display.h"
 #include "ctrl.h"
 
 
unsigned int duty_test,d_test,key_buf;
unsigned char key;
unsigned char read_io(void);


void kb_test(void){
 unsigned char i;
 //i=read_io()&0x0f;
 i=read_io()&0x50;
 if(key_buf==i)
 return;
 key_buf=i;
  
 switch(i){
  
  case  0x10: 
        duty_test+=5;
        PWM3outPut(1000,duty_test);
        if (duty_test>=100) {
        duty_test=100;
        }
        
        //display2((unsigned long)duty_test);
       // uart_putchar('\n');
       // uart_putchar('\r');
        break;
  case  0x40: 
        if (duty_test<=0) {
        duty_test=5;
        }
        duty_test-=5;
        PWM3outPut(1000,duty_test);
       // display2((unsigned long)duty_test);
       // uart_putchar('\n');
       // uart_putchar('\r');
        break;
  /*
  case  0x0b: d_test+=5; turn_R_L(d_test);
        if (d_test>=25) {
        d_test=25;
        }
        display2((unsigned long)d_test);
        uart_putchar('\n');
        uart_putchar('\r');
        break;
  case  0x07: d_test-=5; turn_R_L(d_test);
        if (d_test<=-25) {
        d_test=-25;
        }
        display2((unsigned long)d_test);
        uart_putchar('\n');
        uart_putchar('\r');
        break;
        */
  default : break;
  
 } 
}


unsigned char read_io(void){
  
   return PORTB;
}




//******************按键扫描函数**********************
//描    述:对4*4键盘进行扫描,程序只适合4*4键盘使用,
//	    键盘占用一组完整的i/o口,在使用这个程序前
//	    要宏定义p_key为用户实际连接键盘的i/o口 
//入口参数:无
//返回参数:若有检测到按键就返回按键的编号,否则返回0xff
//设计人:ycj
//最后修改:时间(2006.4.24)修改人(ycj)
//****************************************************
unsigned char read_key(void)
{
 unsigned char j,key1,key_buff=0;
 DDRB=0xf0;
 PORTB=0x0f;


 //检测是否有建按下//
 if((PORTB&0x0f)==0x0f)
    {
	    return(0xff);//没按键按下,返回0xff
	  }


 //有按键按下,扫描是哪一行有按键按下//
 for(j=0;j<4;j++)
 {key1=PORTB&(0x01<<j);
  if (!key1)
     {
  	  key_buff=j*4;
			
  	  DDRB=(0x01<<j);

  	  PORTB=~(0x01<<j);//第j行的按键按下了,第j行输出0,
  	  //扫描是第j行的哪个按键按下//
  	  for(j=0;j<4;j++)
  	  	{
      		key1=PORTB&(0x10<<j);
          if (!key1)
           	{		
        			 key_buff+=j;
        			 return(key_buff);//扫描到按键的确定位置,返回按键的编号
      			}
  		  }
	   }
 }
//没扫描到按键,//
return(0xff);
}


⌨️ 快捷键说明

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