Paso 4: Añadir bugs!
#include "msp430g2211.h" #define LED4 albañilería1 |
unsigned int clics = 0; contador para cada irq de temporizador
unsigned int segundos = 0; contador de segundos
unsigned int minutos = 0; contador de minutos
unsigned int new_minute = 0; marcador para alcanzar el siguiente minuto
Opciones configurables.
const unsigned int pomodoro_length = 25; ¿Cuánto debe ser el pomodoro? [por defecto: 25]
const unsigned int pomodoro_break = 5; ¿y la rotura? [por defecto: 5]
fija los LEDs para reflejar los baja 5 pedacitos de 'valor'
void setLEDs (valor char) {}
if(Value & 0x10)
P1OUT | = (LED4); prendieron el LED4
otra cosa
P1OUT & = ~ (LED4); partió el LED4
if(Value & 0x08)
P1OUT | = (LED 3); encender LED3
otra cosa
P1OUT & = ~ (LED 3); partió LED3
if(Value & 0x04)
P1OUT | = (LED2); encender LED2
otra cosa
P1OUT & = ~ (LED2); partió el LED2
if(Value & 0x02)
P1OUT | = (LED1); encender LED1
otra cosa
P1OUT & = ~ (LED1); partió el LED1
if(Value & 0x01)
P1OUT & = ~ (LED0); prendieron LED0
otra cosa
P1OUT | = (LED0); partió LED0
}
anular principal (void) {}
unsigned int pomodoro_remain = pomodoro_length + pomodoro_break; contador de tiempo transcurrido
WDTCTL = WDTPW + WDTHOLD; Pare temporizador de vigilancia para evitar reinicio de tiempo
BCSCTL1 = CALBC1_1MHZ; Establecer DCO a valor de calibración de fábrica de 1MHz
DCOCTL = CALDCO_1MHZ;
CCTL0 = CCIE; CCR0 interrupción habilitada
CCR0 = 50000; tipo de temporizador irq
TACTL = TASSEL_2 + MC_1; SMCLK, upmode
_BIS_SR(GIE); habilitar interrupción
P1DIR | = (LED0 LED1 LED2 + LED3 + LED4 + ZUMBADOR); todos los pines del LED y zumbador como salida
P1OUT & = ~ (LED0 LED1 LED2 + LED3 + LED4 + zumbador); todos los LED y zumbador de
while(pomodoro_remain) {//let's ejecutar este bucle hasta que se haga el pomodoro
if(minutes > new_minute) {//see si hemos llegado al minuto siguiente
setLEDs(pomodoro_remain); conjunto los LEDs para reflejar el momento actual
new_minute = minutos; cambiar nuestro contador
pomodoro_remain--; menos tiempo permanece en nuestra pomodoro
}
}
while(1) {} //this es la canción que nunca termina, alguna gente comenzó a cantar a lo...
}
Rutina de servicio de interrupción de A0 de temporizador
Esto funciona cuando se activa una interrupción de temporizador
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A (void) {}
clicks ++; Haga clic en nuevo cada 1Mhz / 50k = 20 veces un segundos
Si (hace clic en > = 2) {//we're con el número 2 aquí en lugar de 20 a
la velocidad de depuración
¿Si (hace clic en > = 20) {//waited un segundo todavía?
Haga clic en = 0; luego reiniciar el contador...
segundos ++; contador de segundos de avance
¿Si (segundos > = 60) {//see si hemos esperado un minuto?
segundos = 0; luego reiniciar el contador de segundos
minutos ++; contador de minutos de avance
}
}
}