Red de conocimiento informático - Conocimiento del nombre de dominio - Temporizador programable para experimentos de microcomputadora

Temporizador programable para experimentos de microcomputadora

A continuación se muestra un ejemplo de programa para el microcontrolador MSP430, que puede encender el LED cada 10 segundos, apagarlo después de 6 segundos y repetir el proceso. Se utiliza el chip MSP430G2553 y se utiliza su módulo temporizador A0 y su programa de servicio de interrupción.

# 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

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;

}

}

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.