测试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
三、测试结果
按下按键,串口输出相应的按键数据
|