× MSP430, Microcontrollori 16 bit Ultra Low Power

if then else

6 Mesi 5 giorni fa #1 da fabrizio C
if then else è stato creato da fabrizio C
Buongiorno , chiedo un aiuto per imparare, vorrei avere il led verde sempre acceso quando premo il pulsante ma al momento per come è fatto il prog. rimane acceso solo per il tempo definito . Ho fatto molte prove ma non riesco a rimanere nel loop ELSE del controllo relativo al pulsante.

//******************************************************************************
// MSP430F20xx Demo - Software Toggle P1.0
//
// Description; Toggle P1.0 by xor'ing P1.0 inside of a software loop.
// ACLK = n/a, MCLK = SMCLK = default DCO
//
// MSP430F20xx
//
// /|\| XIN|-
// | | |
// --|RST XOUT|-
// | |
// | P1.3|--> PULSANTE
// | |
// | P1.0|--> LED rosso
// | P1.6|--> LED verde
/*
* ======== Standard MSP430 includes ========
*/

#include <msp430g2553.h> // Poiché stai utilizzando il chip MSP430G2553,
//dovresti includere tutti i registri standard e
//la definizione di bit per il microcontrollore.
//L'estensione .h indica che questo è il file di intestazione del chip.

/*
* main.c
*/
void main()
{ // apre il ciclo principale

WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
// Controllo timer watchdog. Questa riga e' necessaria
// ogni volta che programmi il tuo chip se non stai utilizzando
// il timer watchdog per impedire il riavvio del chip.

P1REN = BIT3; // P1REN Abilitazione resistenza porta 1
// P1.3 è collegato al pulsante. Per far funzionare il pulsante,
// dobbiamo aggiungere una resistenza pull-up per renderlo normalmente alto.
// Scrivendo questa riga verrà abilitata la resistenza interna (all'interno del chip),
// collegando P1.3 all'alimentazione (3,6V) o alla massa (0V). Questo è definito nella riga successiva.


P1DIR = BIT0 + BIT6; // P1DIR Direzione porta 1
// Questa riga imposta semplicemente BIT0 e BIT6 come output, tutti gli altri come ingressi
// Poiché in questo caso stai programmando la porta 1, BIT0 e BIT6
// si riferiscono a P1.0 e P1.6 del chip.
// Se non sei ancora sicuro di dove si trovino questi pin, guarda la scheda
// di sviluppo (scheda di colore ROSSO). Tutti i pin sono etichettati.
// Secondo la scheda tecnica, P1.0 e P1.6 sono collegati rispettivamente al LED rosso e verde.
// Pertanto il LED lampeggerà in base alla vostra programmazione.

P1OUT = BIT3; // attenzione bisogna fare in questo modo per avere p1.3 a uno

// P1OUT Uscita porta 1
// Sebbene P1OUT significhi impostare lo stato dell'uscita.
// Ma, se analizziamo attentamente, P1.3 è un pin di ingresso e non è del tutto logico assegnare
// al pin uno stato di uscita. Infatti, questa riga di codice definisce la connettività del
// resistore interno. Se P1OUT = BIT3, la resistenza interna è collegata a 3,6 V.
// In altre parole, il pin ora è normalmente alto e il resistore interno è noto come resistore di pull-up.
// Altrimenti, se P1OUT &= ~BIT3, il resistore interno è collegato a terra ed è noto come resistore pull-down.


// P1OUT Uscita porta 1 P1.6 MA TUTTI GLI ALTRI SONO A 0 Led rosso spento
// Questa linea accende semplicemente P1.6 LED verde e quindi dà istruzioni
// al pin di produrre 3,6 V come uscita. Questo è necessario perche nella istruzione
// successiva avrai il led verde acceso e il led rosso spento

unsigned int i; // Variabile i di ritardo

while(1) // Linguaggio C, while loop viene normalmente utilizzato per eseguire
// il codice all'interno del loop all'infinito finché non si spegne
// l'alimentazione.
{ // APRE IL CICLO DI FUNZIONi

P1OUT = BIT0+BIT3;
for(i=0;i<40000;i++);

P1OUT = BIT3;
for(i=0;i<40000;i++);

{ // ciclo condizione if pulsante
P1OUT = BIT3; // uscita 3 on per alimentare il pull up

if((P1IN & BIT3)!=BIT3) // P1IN e BIT3 vengono confrontati.

{ // ciclo if condizione vera

P1OUT = BIT6+BIT3;

__delay_cycles(700000); // 70 ms

}

else // ciclo if else

{


}

} // chiude il ciclo if pulsante

} // CHIUDE IL CICLO DI FUNZIONI

} // chiude il ciclo principale

Grazie a chi risponde , non tenete conto delle modifiche relative ai led e la posizione delle parentesi..

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • fabrizio C
  • New Member
  • New Member
Di più
Moderatori: Mauro LaurentiMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login