Stap 4: Het toevoegen van bugs!
#include "msp430g2211.h" #define LED4 bits1 |
unsigned int klikken = 0; teller voor elke timer irq
unsigned int seconden = 0; teller voor seconds
unsigned int minuten = 0; teller voor minuten
unsigned int new_minute = 0; markering voor het bereiken van de volgende minuut
configureerbare opties!
Const unsigned int pomodoro_length = 25; Hoe lang moet de pomodoro zijn? [default: 25]
Const unsigned int pomodoro_break = 5; en het einde? [standaard: 5]
Hiermee stelt u de LED's aan de lage 5 bits van 'waarde'
VOID setLEDs (char waarde) {}
if(Value & 0x10)
P1OUT | = (LED4); LED4 ingeschakeld
anders
P1OUT & = ~ (LED4); LED4 verrekening
if(Value & 0x08)
P1OUT | = (LED3); LED3 ingeschakeld
anders
P1OUT & = ~ (LED3); LED3 verrekening
if(Value & 0x04)
P1OUT | = (LED2); LED2 aangezet
anders
P1OUT & = ~ (LED2); LED2 verrekening
if(Value & 0x02)
P1OUT | = (LED1); LED1 aangezet
anders
P1OUT & = ~ (LED1); LED1 verrekening
if(Value & 0x01)
P1OUT & = ~ (LED0); LED0 aangezet
anders
P1OUT | = (LED0); LED0 verrekening
}
void main (void) {}
unsigned int pomodoro_remain = pomodoro_length + pomodoro_break; teller voor het bijhouden van verstreken tijd
WDTCTL = WDTPW + WDTHOLD; Watchdog-timer om te voorkomen dat de time-out reset stoppen
BCSCTL1 = CALBC1_1MHZ; DCO ingesteld op 1MHz fabriek kalibratie waarde
DCOCTL = CALDCO_1MHZ;
CCTL0 = CCIE; CCR0 interrupt ingeschakeld
CCR0 = 50000; timer IRQ-tarief
TACTL = TASSEL_2 + MC_1; SMCLK, upmode
_BIS_SR(GIE); interrupt inschakelen
P1DIR | = (LED0 + LED1 LED2 + LED3 + LED4 + ZOEMER); alle LED pinnen en zoemer als output
P1OUT & = ~ (LED0 + LED1 LED2 + LED3 + LED4 + ZOEMER); alle LED's en buzzer af
while(pomodoro_remain) {//let's deze lus uitgevoerd totdat de pomodoro is gedaan
if(minutes > new_minute) {//see als we de volgende minuut hebben bereikt
setLEDs(pomodoro_remain); instellen van de LED's aan de huidige minuut
new_minute = minuten; onze teller wijzigen
pomodoro_remain--; minder tijd blijft in onze pomodoro
}
}
while(1) {} //this is het lied dat nooit eindigt, sommige mensen begonnen zingen...
}
Timer A0 interrupt service routine
Dit wordt uitgevoerd wanneer een timer-interrupt wordt geactiveerd
#pragma vector = TIMERA0_VECTOR
void Timer_A (void) {} __interrupt
klikken ++; nieuwe klik elke 1Mhz / 50k = 20 keer een seconds
Als (klikt op > = 2) {//we're met de nummer 2 hier in plaats van 20 en
versnellen foutopsporing
Als (klikt op > = 20) {//waited een volle seconde nog?
Clicks = 0; opnieuw op de teller...
seconden ++; voorschot tweede teller
Als (seconden > = 60) {//see als we hebben gewacht een minuut?
seconden = 0; vervolgens de tweede teller reset
minuten ++; voorschot minuut teller
}
}
}