📄 keyboard_test.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 + -