Browse Source

高阻输入读取按键

bfysop-v2
mr.zhangsan 1 year ago
parent
commit
c15e017ccf
  1. 4
      source/.vscode/settings.json
  2. 16
      source/app/main.c
  3. 1
      source/app/main.h
  4. 9
      source/bsp/bsp_config_delay.c
  5. 155
      source/bsp/bsp_key.c
  6. 11
      source/bsp/bsp_key.h

4
source/.vscode/settings.json

@ -4,6 +4,8 @@
"bsp_config.h": "c", "bsp_config.h": "c",
"stc_macro.h": "c", "stc_macro.h": "c",
"type.h": "c", "type.h": "c",
"main.h": "c" "main.h": "c",
"bsp_config_delay.h": "c",
"bsp_key.h": "c"
} }
} }

16
source/app/main.c

@ -83,6 +83,7 @@ void L0_main_init(void)
{ {
//Lc_delay_ms(200); //Lc_delay_ms(200);
L0_board_config(); L0_board_config();
bsp_key_init();
L0_uart0_buf_init();//串口初始化 L0_uart0_buf_init();//串口初始化
EA = 1; EA = 1;
//Lc_delay_ms(100); //Lc_delay_ms(100);
@ -119,21 +120,30 @@ void main(void)
delayInMs(500); delayInMs(500);
} }
#endif #endif
U8 key = 0;
//初始化 //初始化
L0_main_init(); L0_main_init();
//验证加密信息 //验证加密信息
//L3_encrypt_handler(); //L3_encrypt_handler();
//主循环 //主循环
// L0_board_config();
// bsp_key_init();
while(1) while(1)
{ {
if(1 == s_nos_tick.t1s_heatbeart) if(1 == s_nos_tick.t1s_heatbeart)
{ {
s_nos_tick.t1s_heatbeart = 0; s_nos_tick.t1s_heatbeart = 0;
LED0 ^= 1; LED0 ^= 1;
// L0_uart0_uc('.'); // KR1 ^= 1;
// KC1 ^= 1;
L0_uart0_uc('.');
// L0_uart0_sendArray("v2.7",4); // L0_uart0_sendArray("v2.7",4);
L0_uartN_sendstr(0,"v2.8111"); // L0_uartN_sendstr(0,"v2.8111");
}
key = bsp_key_scan();
if(key != BSP_KEY_NUM_MAX){
L0_uart0_uchex(key);
} }
//L1_ADS1213_main(); //L1_ADS1213_main();

1
source/app/main.h

@ -42,6 +42,7 @@
#include "../bsp/bsp_config.h" #include "../bsp/bsp_config.h"
#include "../bsp/bsp_config_delay.h" #include "../bsp/bsp_config_delay.h"
#include "../bsp/bsp_key.h"
#include "../bsp/chipid.h" #include "../bsp/chipid.h"
#include "../bsp/cs1232.h" #include "../bsp/cs1232.h"
#include "../bsp/rs485.h" #include "../bsp/rs485.h"

9
source/bsp/bsp_config_delay.c

@ -1,9 +1,10 @@
#include "bsp_config_delay.h" #include "bsp_config_delay.h"
#if (TYPE_MCU == TYPE_MCU_STC_8H #if ((TYPE_MCU == TYPE_MCU_STC_8H) \
|| TYPE_MCU == TYPE_MCU_STC_8G || (TYPE_MCU == TYPE_MCU_STC_8G) \
|| TYPE_MCU == TYPE_MCU_STC_8A || (TYPE_MCU == TYPE_MCU_STC_8A) \
|| TYPE_MCU == TYPE_MCU_STC_8F) || (TYPE_MCU == TYPE_MCU_STC_8F)) \
#if (D_sys_MainFre == MainFre_22M) #if (D_sys_MainFre == MainFre_22M)
void Delay100us() //@22.1184MHz void Delay100us() //@22.1184MHz

155
source/bsp/bsp_key.c

@ -0,0 +1,155 @@
#include "bsp_key.h"
#include "bsp_config_delay.h"
U8 bsp_key_init(void)
{
D_stdIO_P3(BITN6);
D_stdIO_P1(BITN7);
D_stdIO_P0(BITN6);
D_stdIO_P4(BITN3);
D_HighR_P1(BITN0);
D_HighR_P0(BITN7);
D_HighR_P1(BITN3);
D_HighR_P2(BITN0);
KR1 = KR2 = KR3 = KR4 = 1;
KC1 = KC2 = KC3 = KC4 = 1;
return 0;
}
void scan_row(U8 r)
{
KR1 = 0;
KR2 = 0;
KR3 = 0;
KR4 = 0;
switch(r){
case 1:
KR1 = 1;break;
case 2:
KR2 = 1;break;
case 3:
KR3 = 1;break;
case 4:
KR4 = 1;break;
default:
break;
}
}
U8 scan_col(U8 c)
{
if(c == 1)
{
if(KC1 == 1)
{
delayInMs(10);
if(KC1 == 1)
{
while(KC1 == 1);
return 1;
}
}
}
else if(c == 2){
if(KC2 == 1)
{
delayInMs(10);
if(KC2 == 1)
{
while(KC2 == 1);
return 1;
}
}
}
else if(c == 3){
if(KC3 == 1)
{
delayInMs(10);
if(KC3 == 1)
{
while(KC3 == 1);
return 1;
}
}
}
else if(c == 4){
if(KC4 == 1)
{
delayInMs(10);
if(KC4 == 1)
{
while(KC4 == 1);
return 1;
}
}
}
return 0;
}
U8 bsp_key_scan(void)
{
U8 key = BSP_KEY_NUM_MAX;
//扫描第1行
scan_row(1);
if(scan_col(1) > 0){
return 0;
}
if(scan_col(2) > 0){
return 1;
}
if(scan_col(3) > 0){
return 2;
}
if(scan_col(4) > 0){
return 3;
}
// //扫描第2行
// scan_row(2);
// if(scan_col(1) > 0){
// key = 4;
// }
// if(scan_col(2) > 0){
// key = 5;
// }
// if(scan_col(3) > 0){
// key = 6;
// }
// if(scan_col(4) > 0){
// key = 7;
// }
// //扫描第3行
// scan_row(3);
// if(scan_col(1) > 0){
// key = 8;
// }
// if(scan_col(2) > 0){
// key = 9;
// }
// if(scan_col(3) > 0){
// key = 10;
// }
// if(scan_col(4) > 0){
// key = 11;
// }
// //扫描第4行
// scan_row(4);
// if(scan_col(1) > 0){
// key = 12;
// }
// if(scan_col(2) > 0){
// key = 13;
// }
// if(scan_col(KC3) > 0){
// key = 14;
// }
// if(scan_col(KC4) > 0){
// key = 15;
// }
return key;
}

11
source/bsp/bsp_key.h

@ -0,0 +1,11 @@
#ifndef _BSP_KEY_H
#define _BSP_KEY_H
#include "bsp_config.h"
#define BSP_KEY_NUM_MAX 99
extern U8 bsp_key_init(void);
extern U8 bsp_key_scan(void);
#endif
Loading…
Cancel
Save