Witam
Jestem początkującym użytkownikiem msp430 launchpad, jak i ogólnie początkującym jeżeli chodzi o programowanie.
Ucząc się programowania, chciałem napisać kod, który po podłączeniu dwóch przycisków do mojej płytki pozwoliłby przy wciśnięciu jednego przycisku włączyć diodę czerwoną a po naciśnięciu drugiego przycisku wyłączałby diodę czerwoną a włączał zieloną i tak w kółko. Przyciski podpiąłem pod P1.4 i P1.5.
Udało mi się napisać coś takiego:
#include <msp430.h>
volatile unsigned int i;
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;// Stop watchdog
P1DIR |= 0x41; //P1.0 oraz P1.6(diody) ustawione na wyjcia
P1REN = 0x30;//podciągnięcie przyciskow pod Vss p1.4 i p1.5
P1OUT = 0x30;//podciągnięcie przycisku pod Vss p1.4 i p1.5
//zdefiniowanie przerwań
P1IES = 0x30;//przerwanie od przycisku na sygnał opadający
P1IE = 0x30;//uruchomienie przerwania od przycisku
__enable_interrupt();//globalne uruchomienie przerwań
//P1OUT ^=0x40;
}
//Obsługa przerwan
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
P1OUT |= 0x00;
P1OUT ^= 0x01;//Włącz/wyłącz diody
P1IFG &= ~0x10;//Wyzerowanie flagi przerwania
}
#pragma vector=PORT2_VECTOR
__interrupt void Port_2(void)
{
P1OUT |= 0x00;
P1OUT ^= 0x40;//Włącz/wyłącz diody
P1IFG &= ~0x20;//Wyzerowanie flagi przerwania
}
Program, który napisałem działa tak, że obojętnie, który przycisk przycisnę włącza mi się jedna dioda i tyle :/
Bardzo proszę o pomoc
Jestem początkującym użytkownikiem msp430 launchpad, jak i ogólnie początkującym jeżeli chodzi o programowanie.
Ucząc się programowania, chciałem napisać kod, który po podłączeniu dwóch przycisków do mojej płytki pozwoliłby przy wciśnięciu jednego przycisku włączyć diodę czerwoną a po naciśnięciu drugiego przycisku wyłączałby diodę czerwoną a włączał zieloną i tak w kółko. Przyciski podpiąłem pod P1.4 i P1.5.
Udało mi się napisać coś takiego:
#include <msp430.h>
volatile unsigned int i;
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;// Stop watchdog
P1DIR |= 0x41; //P1.0 oraz P1.6(diody) ustawione na wyjcia
P1REN = 0x30;//podciągnięcie przyciskow pod Vss p1.4 i p1.5
P1OUT = 0x30;//podciągnięcie przycisku pod Vss p1.4 i p1.5
//zdefiniowanie przerwań
P1IES = 0x30;//przerwanie od przycisku na sygnał opadający
P1IE = 0x30;//uruchomienie przerwania od przycisku
__enable_interrupt();//globalne uruchomienie przerwań
//P1OUT ^=0x40;
}
//Obsługa przerwan
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
P1OUT |= 0x00;
P1OUT ^= 0x01;//Włącz/wyłącz diody
P1IFG &= ~0x10;//Wyzerowanie flagi przerwania
}
#pragma vector=PORT2_VECTOR
__interrupt void Port_2(void)
{
P1OUT |= 0x00;
P1OUT ^= 0x40;//Włącz/wyłącz diody
P1IFG &= ~0x20;//Wyzerowanie flagi przerwania
}
Program, który napisałem działa tak, że obojętnie, który przycisk przycisnę włącza mi się jedna dioda i tyle :/
Bardzo proszę o pomoc