Programación Launchpad Msp430

2

Tengo un código como este en IAR Embedded Workbench. Al menos Led0 debería parpadear?

#include <io430.h>
#include<signal.h>

void main(void)
{
  WDTCTL = WDTHOLD + WDTPW; 
  P1DIR = BIT6 + BIT4 + BIT3 + BIT7 + BIT0;
  P1OUT |= BIT6 + BIT4 + BIT3 + BIT7+ BIT0;
}
    
pregunta Cenk

2 respuestas

7

Eso no hará nada. Necesita un bucle infinito, un retardo y alguna forma de alternar la salida. Algo como esto debería funcionar:


void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
  P1DIR |= 0x01;                        // Set P1.0 to output direction

  for (;;)
  {
    volatile unsigned int i;

    P1OUT ^= 0x01;                      // Toggle P1.0 using exclusive-OR

    i = 50000;                          // Delay
    do (i--);
    while (i != 0);
  }
}
    
respondido por el Leon Heller
1
#include  "msp430.h"

// set names for bits to improve code readability
#define     LED0                  BIT0
#define     LED1                  BIT6
#define     LED_DIR               P1DIR
#define     LED_OUT               P1OUT


void main (void)
{
    WDTCTL = WDTPW + WDTHOLD;      // halt the watchdog timer

    LED_DIR |= LED0 + LED1;        // set both pins with our two LEDs as ouputs
    LED_OUT &= ~(LED0 + LED1);     // make sure both LEDs are off to begin with

    TACCTL0 = CCIE;                // enable timer interrupt
    TACCR0 = 16384;                // set timer value to count

    // Start timer A0, in UP mode. which counts from 0x0000 to the value
    // in TACCR0, then generate an interrupt.       
    TACTL = TASSEL1 + MC_1;

    // Enter low power mode one, with general interrupts enabled.
    __bis_SR_register(LPM1_bits + GIE);
}

#pragma vector=TIMERA0_VECTOR    // timer A0 interrupt routine
__interrupt void timerA0_isr(void) {
    // Flip the output state of both LEDs.
    // After each interrupt, the state changes, which makes the LEDs blink.
    LED_OUT ^= (LED0 + LED1);
}

Puede cambiar el temporizador para que parpadee en el intervalo adecuado. Además, si inicialmente activa un led y el otro, cuando se produzca la interrupción, parpadearán alternativamente.

    
respondido por el Iouri Goussev

Lea otras preguntas en las etiquetas