Temporizador programable para experimentos de microcomputadora
# include & ltmsp430.h & gt
//Definir pines LED y estado inicial.
#Definir LED_PIN bit 0
#Definir LED_ON 1
#Definir LED_OFF 0
volatile int led_state=LED_OFFLED El estado inicial está cerrado.
volatile int timer _ count = 0; //Contador del temporizador
Gerente general no válido (no válido)
{
//Deshabilitado Watchdog
WDTCTL = WDTPW | WDTHOLD
//Configura el pin LED en modo de salida.
p 1 dir | = LED _ PIN;
//Configurar temporizador A0.
ta 0 CTL = TASSEL _ 2+MC _ 1+ID _ 3; //Seleccione SMCLK como fuente de reloj, incremente el conteo y divida entre 8.
ta 0 CCR 0 = 12500-1; //Establece el límite superior del contador y genera una interrupción de 10 segundos.
//Habilitar interrupción del temporizador A0
ta 0 cctl 0 | = CCIE;
//Habilitar interrupción global
_ _ enable _ interrupción();
// Bucle principal inactivo
while(1);
}
// Interrupción del dispositivo de temporización A0 rutina de servicio
#pragma vector = timer 0_A0_VECTOR
_ _Interrupción no válida timer_A0_ISR (no válido)
{
//Contador de acumulación p>
timer _ count++;
if (led_state == LED_OFF) {
//Si el LED está apagado, enciéndelo.
p 1 out | = LED_PIN;
led_state = LED_ON
}else{
//si el LED está encendido, enciéndalo LED apagado
p 1 salida y salida. = ~ LED _ PIN
led _ estado = LED _ APAGADO
}
if (timer_count == 6) {
/ /Si el contador del temporizador llega a 6, apague el LED y reinicie el contador.
p 1 salida y salida. = ~ LED _ PIN
led _ estado = LED _ APAGADO
Conteo del temporizador = 0;
}
} p >
La idea general del programa es inicializar el pin LED y el temporizador A0 en la función principal, habilitar la interrupción del temporizador A0 y habilitar la interrupción global. En el programa de servicio de interrupción del temporizador A0, el contador del temporizador se acumulará cada vez que se ingrese la interrupción. Si el LED está apagado, el LED se encenderá si la luz indicadora está encendida, apáguela. Cuando el temporizador llegue a 6, apague el LED y reinicie el contador. De esta forma, el LED podrá encenderse cada 10 segundos, apagarse a los 6 segundos y repetir el proceso.