测试5方向按键开关。
一、电路图
使用SC95F8617的P2.3-P2.7口作为按键输入端口。
二、程序
2.1、main.c
#include "config.h"
void main(void)
{
uint i=0;
uchar key;
Init_led();
Init_key();
Init_uart(32, 9600);
uart_chl(1); //USB-TTL
while(1)
{
key=Scan_key();
if(key!=0)
{
switch (key)
{
case UP_KEY:
uart_send_string("sc95f8617 up_key press \r\n");
break;
case DOWN_KEY:
uart_send_string("sc95f8617 down_key press \r\n");
break;
case LEFT_KEY:
uart_send_string("sc95f8617 left_key press \r\n");
break;
case RIGHT_KEY:
uart_send_string("sc95f8617 right_key press \r\n");
break;
case CENTER_KEY:
uart_send_string("sc95f8617 center_key press \r\n");
break;
default:
break;
}
}
}
}
2.2、key.c
#include "config.h"
void Init_key(void)
{
P2CON &= 0x03 ;// 1111 1100
P2PH |= 0xfc;
}
uchar Scan_key(void)
{
uint ki;
uchar ky;
ky = P2&0xfc;
if(ky!=0xfc)
{
for(ki=0;ki<65530;ki++);
if(ky!=0xfc)
{
return ky;
}
}
return 0;
}
1.3、key.h
#ifndef _KEY_H_
#define _KEY_H_
#define UP_KEY 0xEC
#define DOWN_KEY 0xDC
#define LEFT_KEY 0xF4
#define RIGHT_KEY 0x5C
#define CENTER_KEY 0xBC
void Init_key(void);
uchar Scan_key(void);
#endif
三、测试结果
按下按键,串口输出相应的按键数据
|