本帖最后由 cheney03 于 2021-1-5 19:48 编辑
程序是网上的例程,已实现多级菜单显示。现在有个问题:当进入函数fun1中,fun1函数中也有按键需要处理(通过up down键对变量temp实现加 减),这样按键有冲突,要怎么实现不冲突呢?按键为4*4矩阵按键,通过行列扫描获取键值判断哪个键按下。
#include <reg52.h> #include "fun.h" #include "lcd12864.h" #include "delay.h" #define uchar unsigned char uchar func_index=0; void (*current_operation_index)(); typedef struct { uchar current; uchar up;//向上翻索引号 uchar down;//向下翻索引号 uchar enter;//确认索引号 void (*current_operation)(); } key_table; key_table code table[3]= { {0,3,1,3,(*fun1)}, {1,0,2,2,(*fun2)}, {2,1,3,1,(*fun3)} , {3,2,0,0,(*fun3)} }
void main() { init_lcd(); //初始化LCD模块 while(1) { Key_scan(); if(KeyState) { KeyState=0; if(KEY==KEY_OK) { func_index=table[func_index].enter; } if(KEY==KEY_DOWN) { func_index=table[func_index].down; } if(KEY==KEY_UP) { func_index=table[func_index].up; } current_operation_index=table[func_index].current_operation; (*current_operation_index)();//执行当前操作函数 // flag=0; } } } |