void menuCases(int *input){ switch(currentMenu){ case 0: switch(*input){ case 1: currentMenu = 1; PrintTempTable(); while(readKeypad()!=11){}; PrintMenu(); break; case 2: temporary = findLight(); sprintf(buffer,"%d \0",temporary); Print("Sun at",33,6); Print(buffer,33,7); break; case 3: Clear_Display(); Print("Set high value:", 1, 2); Print("Press # to confirm", 1, 14); maxLimit = maxMinLimit(2); Print("Set low value: ", 1, 4); lowLimit = maxMinLimit(4); PrintMenu(); break; case 6: if(fastMode == 1){ fastMode = 60; while(readKeypad() != 0) {} Print("FM (off)", 32, 13); break; } else{ fastMode = 1; while(readKeypad() != 0) {} Print("FM (on) ", 32, 13); break; } } case 1: switch(*input){ case 11: currentMenu = 0; PrintMenu(); } } }
bool KEYS::getKey(uint8_t *key) { uint8_t tmpkey; tmpkey = readKeypad(); *key = *key & 0x7F; return(isKeyDown(tmpkey)); }
int main(){ SystemInit(); setup(); adcSetup(); Init_Display(); timerSetup(); tempMeasure(); updateDegrees(); setupInterupts(5); lightMeasure(); pwmSetup(); setupInterupts(1000); PrintMenu(); *PWM_CDTYUPD = 1800; int input; while(nInterupts < 500){} while(1){ if(nInterupts >= 500){ tempMeasure(); nInterupts = 0; } updateDegrees(); Print(floatToChar, 33,1); //Skriv ut temperatur if(value > maxLimit){ Print("ALARM", 32, 3); Print("TOO HOT ", 32,4); } else if(value < lowLimit){ Print(" ALARM", 32, 3); Print("TOO COLD", 32,4); } else if(value >lowLimit || value<maxLimit){ Print(" ", 32, 3); Print(" ", 32, 4); } if(tempCount >= fastMode){ updateDegrees(); delay(60); if(tempFlag == 1){ tempCalc(); tempCount = 0; tempFlag = 0; } } input = readKeypad(); if(buttonPressed == 1){ buttonPressed = 0; menuCases(&input); } } }
void writeKeypad(mode) { unsigned char olduc = 0; unsigned char uc = 0; char rwKeypad[] = {'w'}; uc = readKeypad(); olduc = uc & 0x0F; switch(mode) { case 0: uc = olduc | 0x00; break; case 1: uc = olduc | 0x10; break; case 2: uc = olduc | 0x30; break; default: ; } if (ioperm(0x60, 6, 1)) { perror("ioperm"); exit(1); } checkInBufferFull(); outb(0xB8, 0x64); checkInBufferFull(); outb(0xEC, 0x60); checkInBufferFull(); outb(0xAC, 0x60); checkInBufferFull(); outb(uc, 0x60); if (ioperm(0x60, 6, 0)) { perror("ioperm"); exit(1); } RWconfig(200, mode, rwKeypad); }
int iFindKeyLEDMode() { unsigned char uc = 0; uc = readKeypad(); switch(uc & 0xF0) { case 0x00: return 0; case 0x10: return 1; case 0x30: return 2; default: ; } return -1; }
uint8_t KEYS::getKey(void) { return(readKeypad() & 0x7F); }