No logro hacer funcionar este programa

#1
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);

Comando_LCD(0xC0);

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

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


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

}

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

}

}

//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!!!!!!!!! :cry:
 
#2
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
 
#3
ok!! gracias lo voy hacer

aunque ya las declare como me dijiste chico3001 sigue sin que me jalen las interrupciones =(
 
Última edición:

Temas similares

Arriba