Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

10/01/2010 #1


No logro hacer funcionar este programa
hola tengo un pequeño problma con un progrma que hice ya que el programa consiste en que con una serie de interrupciones ,le diga en una pantalla de lcd si la contaseña es correcta o no
aqui esta el programa:

#include "msp430x20x2.h"

void Ini_LCD();
void Enable_LCD();
void Envio_4bits(char);
void Comando_LCD(char);
void Datos_LCD(char);
void vfDelay(unsigned int);
const unsigned char Letrero1[17] = {"InTroDuCe La"};
const unsigned char Letrero2[17] = {"CoNTrASeÑa ....."};
const unsigned char Letrero3[17] = {"CoNTrASeÑa BiEn"};
const unsigned char Letrero4[17] = {"CoNTrASeÑa Mal"};

int main( void )
{

WDTCTL = WDTPW + WDTHOLD;


BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;

P1SEL &= ~BIT1;
P1DIR &= ~BIT1; //terminal P2.6 como entrada
P1IES |= BIT1; //Flanco Positivo
P1IE |= BIT1; //Habilitaci{on de las interrupciones

P1SEL &= ~BIT2;
P1DIR &= ~BIT2; //terminal P2.6 como entrada
P1IES |= BIT2; //Flanco Positivo
P1IE |= BIT2; //Habilitaci{on de las interrupciones

__bis_SR_register(GIE); //Habilitacion de las interrupciones Enmascarables

int i;

int s;
s = 5;
while(--s) vfDelay(0xFFFF);

Ini_LCD();
Comando_LCD(0x0C);

for(i = 0; i <= 15; i++) Datos_LCD(Letrero1[i]);

Comando_LCD(0xC0);

for(i = 0; i <= 15; i++) Datos_LCD(Letrero2[i]);

s = 2;
while(--s) vfDelay(0xFFFF);


if(BIT1==1)
{
Comando_LCD(0xC0);
for(i = 0; i <= 15; i++) Datos_LCD(Letrero3[i]);

}

if(BIT2==1)
{
Comando_LCD(0xC0);
for(i = 0; i <= 15; i++) Datos_LCD(Letrero4[i]);

}

}

//Rutinas para el LCD
void Ini_LCD()
{
P1SEL &= ~0xF9;
P1DIR |= BIT7+BIT6+BIT5+BIT4+BIT3+BIT0;

P1OUT &= ~0xF9;

P1OUT |= 0x20;
Enable_LCD();
vfDelay(19);
Enable_LCD();
P1OUT &= 0x0F;
P1OUT |= 0xB0;
Enable_LCD();
vfDelay(19);

Comando_LCD(0x0F);
Comando_LCD(0x01);
}

//Rutina de Envio de Comandos al LCD
void Comando_LCD(char CMD)
{
P1OUT &= ~BIT0; //RS = 0
Envio_4bits(CMD);
if (CMD <= 0x02) vfDelay(815);
else vfDelay(19);
}

//Rutina de Envio de Datos al LCD
void Datos_LCD(char DAT)
{
P1OUT |= BIT0;
Envio_4bits(DAT);
vfDelay(19);
}

//Rutina de Envio de 4-bits al LCD
void Envio_4bits(char BIT)
{
int Q;
Q = BIT & 0xF0;
P1OUT &= 0x0F;
P1OUT |= Q;
Enable_LCD();
Q = BIT << 4;
P1OUT &= 0x0F;
P1OUT |= Q;
Enable_LCD();

}

//Envio del un pulso para la terminal E del LCD
void Enable_LCD()
{
P1OUT |= BIT3;
vfDelay(1);
P1OUT &= ~BIT3;
}

//Rutina de Tiempo
void vfDelay(unsigned int T)
{while(--T);}
#pragma vector = PORT2_VECTOR
__interrupt void P2(void)
{
P2IFG &= ~BIT1;
P2IFG &= ~BIT2;
}

en si espeficicamente el problema que tengo es que no me realiza las interrupciones ya que solo me esplega "introduce la contra.." y no responde si apreto las interrupciones no se si alguen pueda ayudarme ya que utilice el IAR y por lo que he visto muchos manejan PIC y la razon por la q no manejo PIC es que especificamente el maestro nos dijo que lo hicieramos con el IAR y en c++ pero para variar el maestro es medio sangron.. la mayoria saben como es eso y no nos quiere ayudar por eso es que pido ayuda aqui.... enserio espero que alguen pueda ayudarme con este programa ya que se los agradeceria mucho....... AYUDAA!!!!!!!!!
10/01/2010 #2
Moderador

Avatar de Chico3001

Respuesta: Ayuda con este programa!!!!
no veo donde estes declarando BIT1 y BIT2 pero posiblemente debas declararlas como volatile para que el compilador no corte codigo que crea que es innecesario
12/01/2010 #3


Respuesta: No logro hacer funcionar este programa
ok!! gracias lo voy hacer

aunque ya las declare como me dijiste chico3001 sigue sin que me jalen las interrupciones =(
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.