📄 key.c
字号:
/******************************************************************************
* welding mobile robot control programme
* keypad processing module
* @author: thai nguyen nhut dien
* @date: may 2006
******************************************************************************/
#define KEY_STOP 10
#define KEY_START 11
#define KEY_PLUS 12
#define KEY_MINUS 13
#define KEY_ENTER 14
void increaseParam() {
switch (menu) {
case MENU_MODE:
if (inMode++ == MAX_MODE) inMode = MIN_MODE;
break;
case MENU_SPEED:
if (inSpeed++ == MAX_SPEED) inSpeed = MIN_SPEED;
break;
case MENU_AMP:
if (inAmp++ == MAX_AMP) inAmp = MIN_AMP;
break;
case MENU_GAP:
if (inGap++ == MAX_GAP) inGap = MIN_GAP;
break;
case MENU_SEG:
if (inSeg++ == MAX_SEG) inSeg = MIN_SEG;
break;
}
}
void decreaseParam() {
switch (menu) {
case MENU_MODE:
if (inMode-- == MIN_MODE) inMode = MAX_MODE;
break;
case MENU_SPEED:
if (inSpeed-- == MIN_SPEED) inSpeed = MAX_SPEED;
break;
case MENU_AMP:
if (inAmp-- == MIN_AMP) inAmp = MAX_AMP;
break;
case MENU_GAP:
if (inGap-- == MIN_GAP) inGap = MAX_GAP;
break;
case MENU_SEG:
if (inSeg-- == MIN_SEG) inSeg = MAX_SEG;
break;
}
}
#INT_RB
void keyPress() {
int key;
delay_ms(100); // avoid noise
key = input_b();
key = key >> 4;
switch (key) {
case KEY_STOP:
run = 0;
break;
case KEY_START:
run = 1;
break;
case KEY_PLUS:
if (run) return;
increaseParam();
while (1) {
delay_ms(100);
key = input_b();
key = key >> 4;
if (key == KEY_PLUS) increaseParam();
else break;
}
break;
case KEY_MINUS:
if (run) return;
decreaseParam();
while (1) {
delay_ms(100);
key = input_b();
key = key >> 4;
if (key == KEY_MINUS) decreaseParam();
else break;
}
break;
case KEY_ENTER:
if (run) {
set_adc_channel(0);
delay_us(10);
inWeaveSpeed = read_adc();
set_pwm2_duty(inWeaveSpeed);
display(inWeaveSpeed);
set_adc_channel(1);
delay_us(10);
}else {
saveParam(menu);
}
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -