Anda di halaman 1dari 2

#include <msp430.

h>

//MANEJADOR DE LAS INTERRUPCIONES DEL PUERTO 1 (P1.4)

#pragma vector = PORT1_VECTOR;

__interrupt void RTI_Puerto1(void){

if((P1IFG & BIT4)!=0){ //SE HA ACTIVADO EL FLAG

if((P1IES & BIT4)!=0){

P2OUT ^= BIT4;

P1IFG &= ~BIT4; //APAGAR EL FLAG

P1IE &= ~BIT4; //Deshabilitar interrupcin pulsador

P1IES ^= BIT4;

IE1 |= WDTIE; //Habilita interrupcion watchdog

WDTCTL = WDT_MDLY_32; //Modo que enciende el timer a 32ms

#pragma vector = PORT2_VECTOR;

__interrupt void RTI_Puerto2(void){

if((P2IFG & BIT1)!=0){ //SE HA ACTIVADO EL FLAG

if((P2IES & BIT1)!=0){

P2OUT ^= BIT5;

P2IFG &= ~BIT1; //APAGAR EL FLAG

P2IE &= ~BIT1; //Deshabilitar interrupcin pulsador

P2IES ^= BIT1;

IE1 |= WDTIE; //Habilita interrupcion watchdog

WDTCTL = WDT_MDLY_32; //Modo que enciende el timer a 32ms

if((P2IFG & BIT2)!=0){ //SE HA ACTIVADO EL FLAG

if((P2IES & BIT2)!=0){

P2OUT ^= BIT6;

P2IFG &= ~BIT2; //APAGAR EL FLAG

P2IE &= ~BIT2; //Deshabilitar interrupcin pulsador

P2IES ^= BIT2;

IE1 |= WDTIE; //Habilita interrupcion watchdog

WDTCTL = WDT_MDLY_32; //Modo que enciende el timer a 32ms

if((P2IFG & BIT3)!=0){ //SE HA ACTIVADO EL FLAG

if((P2IES & BIT3)!=0){

P2OUT ^= BIT7;

P2IFG &= ~BIT3; //APAGAR EL FLAG

P2IE &= ~BIT3; //Deshabilitar interrupcin pulsador

//Conmutamos las interrupciones por flanco de subida a bajada y al revs para

//que cuando soltemos el botn tampoco haya rebote.

P2IES ^= BIT3;

IE1 |= WDTIE; //Habilita interrupcion watchdog

WDTCTL = WDT_MDLY_32; //Modo que enciende el timer a 32ms

#pragma vector = WDT_VECTOR;

__interrupt void RTI_WDT(void){

P1IE |= BIT4;

P2IE |= BIT1;

P2IE |= BIT2;

P2IE |= BIT3;

P1IFG &= ~(BIT4);

P2IFG &= ~(BIT3+BIT2+BIT1);

//IFG1 &= ~WDTIFG;

//Para que cada vez que entre en la interrupcin,

//se para y cuando vuelve a entrar, se reinicia

WDTCTL = WDTPW | WDTHOLD;

int main(void)

WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer

//ACTIVAR INTERRUPCIONES DE LOS PULSADORES Y EL GLOBAL

__enable_interrupt(); //PARA EL GIE

P1IE |= BIT4;

P2IE |= (BIT1+BIT2+BIT3);

P1IES |= BIT4;

P2IES |= (BIT1+BIT2+BIT3);

//WDTCTL &= ~(WDTSSEL); //Activar modo SMCLK <-- No funciona y en teora ya lo tenemos
en SMCLK default

//WDTCTL= WDTPW | WDTTMSEL; //seteamos el modo timer del watchdog <--ya lo tenemos
default

//IE1 &= ~WDTIE;

P2DIR |= BIT4+BIT5+BIT6+BIT7;

P1DIR &= ~(BIT4);

P2DIR &= ~(BIT1+BIT2+BIT3);

P1REN |= BIT4;

P2REN |= BIT1+BIT2+BIT3;

P1OUT |= BIT4;

P2OUT |= BIT1+BIT2+BIT3;

P2OUT &= ~(BIT4+BIT5+BIT6+BIT7);

P2SEL &= ~(BIT6+BIT7);

for(;;){

Anda mungkin juga menyukai