ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Electronica digital


Enviado por   •  10 de Marzo de 2023  •  Documentos de Investigación  •  558 Palabras (3 Páginas)  •  45 Visitas

Página 1 de 3

#include <msp430g2553.h>

void InitializeClocks(void);

void InitializePins(void);

void InitializeTimer(void);

void main(void)

{

enum{Bajada,Subida} Estado = Subida;

unsigned int d = 9;

WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer

InitializeClocks();

InitializePins();

InitializeTimer();

while(1)

{

switch (Estado){

//Motor

case Subida:

if ((P1IN & BIT3)==0) { // Si pulsador pulsado

d++; // Se incrementa el valor de d

}

if (d >= 989) { // Si llega al valor maximo 99%

Estado = Bajada; // Cambia a estado de bajada

}

break;

case Bajada:

if ((P1IN & BIT3)==0) { //Si pulsador pulsado

d--; // Se disminuye el valor de d

}

if (d <= 9){ // Si llega al valor minimo 1%

Estado = Subida; // Cambia a estado de bajada

}

break;

}

TA1CCR1 = d;

// Leds

if (d >= 899) { //supera 90%

P1OUT |= BIT0; // Encender LED rojo (P1.0)

P1OUT &= ~BIT6; // Apagar LED verde (P1.6)

}

else if (d <= 99) { //baja de 10%

P1OUT |= BIT6; // Encender LED verde (P1.6)

P1OUT &= ~BIT0; // Apagar LED rojo (P1.0)

}

else {

P1OUT &= ~(BIT6 | BIT0); // Apagar ambos LEDs

}

__delay_cycles(5000);

}

}

void InitializeClocks(void)

{

BCSCTL1 = CALBC1_1MHZ; // Set DCOCLK to 1 MHz calibrated

DCOCTL = CALDCO_1MHZ; // Set DCOCLK to 1 MHz calibrated

BCSCTL2 = SELM_0 + DIVM_0 + DIVS_0; // MCLK y SMCLK desde DCO y divididos por 1

}

void InitializePins(void)

{

P1DIR &= ~BIT3; // P1.3 como entrada

P1OUT |= BIT3; // Resistencia de pull-up en P1.3

P1REN |= BIT3; // Habilita la resistencia de pull-up en P1.3

P2DIR |= BIT2; // P2.2 como salida del PWM

P2OUT &= ~BIT2; // P2.2 inicializado a 0

P2SEL |= BIT2; // Se pone P2.2 como TA1.1

P2SEL2 &= ~BIT2;

P1DIR |= (BIT0 | BIT6); // P1.0, P1.6 como salidas (LEDS)

P1OUT &= ~(BIT0 | BIT6); // P1.0, P1.6 inicializados a 0

}

void InitializeTimer(void)

{

TA1CCR0 = 999; // T_PWM = 1ms con T_SMCLK = 1us

TA1CCR1 = 9; // duty-cycle inicial 1%

TA1CCTL1 = OUTMOD_7; // CCR1 reset/set

TA1CTL = TASSEL_2

...

Descargar como (para miembros actualizados) txt (2 Kb) pdf (44 Kb) docx (8 Kb)
Leer 2 páginas más »
Disponible sólo en Clubensayos.com