int main(void){ //int x=0; init_IO(); init_Uart(); startup_flashes_text(); init_Timer2and3(); init_OC2(); while(1){ PORTBbits.RB3=1; if(PORTBbits.RB0==1 && dutyCycle<1065){ PORTBbits.RB3=0; sendString("increased duty cycle to "); dutyCycle+=5; OC2RS=dutyCycle; sendNum(dutyCycle); sendString(" \t(counterclockwise)\n\r"); delay(10); } if(PORTBbits.RB1==1 && dutyCycle>110){ PORTBbits.RB3=0; sendString(" decreased duty cycle to "); dutyCycle-=5; OC2RS=dutyCycle; sendNum(dutyCycle); sendString("\t(clockwise)\n\r"); delay(10); } } }
void startup_flashes_text(void){ PORTBbits.RB2=1; delay(200); PORTBbits.RB2=0; delay(200); PORTBbits.RB2=1; delay(200); PORTBbits.RB2=0; delay(200); PORTBbits.RB2=1; sendString("\n\rRunning...\n\r\n\r"); sendString("Starting at duty cycle = "); sendNum(dutyCycle); sendString("\n\r"); }
int main(void) { uint8_t i, j, randomNumber, tempNumber, buttonCount, n = 0; uint8_t portState[3] = {0xDF,0xBF,0x7F}; uint8_t inputState[3] = {0x04,0x08,0x10}; uint8_t* arr; uint8_t* backup_arr; //Источник энтропии - счетчик задержки нажатия клавиш uint16_t delayCounter = eeprom_read_word((uint16_t*)1); DDRC = 0xFF; DDRB = 0xFF; DDRD = 0xE3; PORTD = 0xFF; initUART(); while (1) { arr = (uint8_t *)malloc((n + 1) * sizeof(uint8_t)); if (n > 0) { memcpy(arr, backup_arr, n); free(backup_arr); } tempNumber = eeprom_read_byte((uint8_t*)0); srand(delayCounter); tempNumber ^= (makeRandom(1000)%255); eeprom_write_byte((uint8_t*)0, (uint8_t)(tempNumber % 8)); randomNumber = eeprom_read_byte((uint8_t*)0); arr[n] = toDisplayNum(randomNumber); for (i = 0; i < n + 1; i++) { comboPort(arr[i]); _delay_ms(DELAY); comboPort(0x00); _delay_ms(DELAY); } buttonCount = 0; while(buttonCount < n + 1) { for(i = 0; i < 3; i++) { PORTD = portState[i]; for(j = 0; j < 3; j++) { if(!(PIND & inputState[j])) { while((PIND & inputState[j]) != inputState[j]); if(display[i][j] == arr[buttonCount]){ comboPort(display[i][j]); buttonCount++; } else { sendStr("Game over! Your score: "); sendNum(n); sendByte(13); //Мигаем GG while(1) { comboPort(0xC2); _delay_ms(DELAY); comboPort(0x00); _delay_ms(DELAY); } } } delayCounter++; } } } backup_arr = (uint8_t*)malloc((n + 1) * sizeof(uint8_t)); memcpy(backup_arr, arr, n + 1); free(arr); _delay_ms(DELAY); comboPort(0x00); _delay_ms(DELAY * 2); eeprom_write_word((uint16_t*)1, (uint16_t)(delayCounter)); n++; } }