Hallo,
das macht man am einfachsten mit einer globalen Variable welche man ausserhalb irgendeiner Funktion deklariert, die aber dann in jeder Funktion verwendet werden kann. Jede Funktion die diese Variable dann verwendet benutzt auch diesselbe Variable. Man sollte deshalb sehr aufpassen, wo die Variable überall geändert wird, um keine ungewünschten Seiteneffekte zu erhalten.
Code:
#include <msp430xG43x.h>
/* Diese Variable ist nun in jeder Funktion innerhalb
* dieser .c Datei verfügbar */
int counter = 0;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1DIR = 0x01; // Set P1.0 to output direction
P2IE |= 0x01; // P2.0 interrupt enabled
P2IES |= 0x01; // P2.0 Hi/lo edge
P2IFG &= ~0x01; // P2.0 IFG cleared
_BIS_SR(LPM4_bits + GIE); // Enter LPM4 w/interrupt
for(; ; ; ) // Endlosschleife, das Programm auf µC nicht
{ //beendet wird
}
}
// Port 2 interrupt service routine
#pragma vector=PORT2_VECTOR
__interrupt void Port_2(void)
{
P1OUT ^= 0x01; // Toggle P1.0
P2IFG &= ~0x01; // P2.0 IFG clearedf
/* counter heraufzählen */
counter++;
}
Willst du eine solche Variable in einer anderen .c Datei deines Projektes nutzen, so musst du sie dort mit dem Schlüsselwort extern bekant machen:
Code:
extern int counter;
Am besten tut man solchiges in der Header Datei zu dem .c File, in dem die Variable wirklich deklariert wird. Die Variable muss also in einem .c File ohne extern und in allen anderen mit extern definiert werden. Wobei alle die sie als extern benutzen sie am besten durch ein Headerfile deklariert bekommen.
Hoffe das hilft dir weiter
almoeli
PS: Ich programmier auch gerade eine MSP430. Bin also grad voll drin in der Materie.
Lesezeichen