void testcollisions() { int i; clrscr(); textattr(BACKGROUND+MENUITEM); gotoxy((78-24)/2,3); cputs("Test keyboard collisions"); gotoxy((78-61)/2,5); cputs("Here you can test, if the keys you've choosen do not collide."); gotoxy((78-43)/2,6); cputs("(only few keyboards allow all combinations)"); gotoxy((78-18)/2,8); cputs("Press ESC to exit."); for (i=0;i<256;i++) pressed[i]=0; key_init(); do{ showjoy(17,12,0); showjoy(29,12,1); showjoy(41,12,2); showjoy(53,12,3); while (hi==lo); pressed[buffer[lo]&0xff]=buffer[lo]<0x100; lo++; if (lo==100) lo=0; }while(!pressed[1]); /*wait until ESC is depressed*/ do{ while (hi==lo); pressed[buffer[lo]&0xff]=buffer[lo]<0x100; lo++; if (lo==100) lo=0; }while(pressed[1]); key_done(); }
int main(void) { systick_init(); eep_init(); //读取EEPROM内的数据 lcd_init(); key_init(); io_init(); pwm_init(); ntc_init(); while (1) { if (time_1ms_flag == 1) { //1ms进入一次 time_1ms_flag = 0; } if(time_10ms_flag == 1) { //10ms进入一次 time_10ms_flag = 0; key_scan(); } if(time_100ms_flag == 1) { //100ms进入一次 time_100ms_flag = 0; key_done(); } if(time_1s_flag == 1) { //1s执行一次 time_1s_flag = 0; } } }
/*------------------------------------------------------------------------*/ int choosekey(char *title,int oldval) { char msg[80]; int lastkey; int newval; int bad; clrscr(); sprintf(msg,"Press key for %s",title); gotoxy((78-strlen(msg))/2,8); cputs(msg); gotoxy(34,9); cputs("(ESC=none)"); sprintf(msg,"Current setting: %s",keynames[oldval]); gotoxy((78-strlen(msg))/2,11); cputs(msg); while (kbhit()); key_init(); do{ while (hi==lo); lastkey=buffer[lo++]; if (lo==100) lo=0; /*do not allow F1-F12, Pause, PrintScreen or Scrollock */ bad=(lastkey>=59 && lastkey<=68) || lastkey==87 || lastkey==88 || lastkey==167 || lastkey==183 || lastkey==70 || lastkey==197; }while ((lastkey&0xff00) || *keynames[lastkey&0xff]=='?' || *keynames[lastkey&0xff]=='#' || bad); newval=lastkey&0xff; if (newval==1) newval=255; sprintf(msg,"Current setting: %s",keynames[newval]); gotoxy(1,11); clreol(); gotoxy((78-strlen(msg))/2,11); cputs(msg); /*wait until key is depressed*/ do{ while (hi==lo); lastkey=buffer[lo++]; if (lo==100) lo=0; }while(!(lastkey&0xff00)); key_done(); return newval; }