Hallo,
momentan versuche ich LED-Lichter zu programmieren. Allerdings gibt IAR
mir den Fehler, dass in der Funktion P1_ISR in der Zeile
1 | if ((P1IFG & FREIGABE) > 0)
|
eine Klammer ")" fehlt. In einem anderen Programm funktioniert diese
Abfrage einwandfrei. Ich weiß nicht, welche Informationen ihr noch
braucht (totaler Anfänger mit µC-Programmierung), aber hier mal der
Code:
1 | #include <msp430x44x.h>
|
2 |
|
3 | #define FREIGABE 0x01;
|
4 | #define TASTER 0x02;
|
5 |
|
6 | void xTASTER(void);
|
7 |
|
8 | unsigned int AV = 0;
|
9 | //unsigned char i = 0;
|
10 |
|
11 | void main(void)
|
12 | {
|
13 | WDTCTL = WDTPW + WDTHOLD; //WDT aus
|
14 | P1DIR = 0x00; //init
|
15 | P1SEL = 0x00; //komplett als I/O
|
16 | P1OUT = 0x00; //alle P1_OUT-Bits = 0
|
17 | P1IE |= FREIGABE; //Taster Freigabe für Interrupt aktivieren
|
18 | P6DIR = 0xFF; //komplett als Ausgang
|
19 | P1OUT = 0x00; //init
|
20 |
|
21 | _EINT(); //GIE setzen
|
22 |
|
23 | while(1) //warte bis sich was tut
|
24 | {
|
25 | _NOP();
|
26 | }
|
27 |
|
28 | }
|
29 |
|
30 | void xTASTER(void)
|
31 | {
|
32 | AV = P6OUT;
|
33 | if((AV & 0x01) > 0)
|
34 | {
|
35 | AV >>= 1;
|
36 | AV &= ~(0x01);
|
37 | }
|
38 | else
|
39 | {
|
40 | AV = 1;
|
41 | }
|
42 |
|
43 | P6OUT = AV;
|
44 | }
|
45 |
|
46 | #pragma vector=PORT1_VECTOR
|
47 | __interrupt void P1_ISR()
|
48 | {
|
49 | if ((P1IFG & FREIGABE) > 0)
|
50 | {
|
51 | P1IE |= TASTER;
|
52 | P6OUT = 1;
|
53 | P1IFG &= ~FREIGABE;
|
54 | }
|
55 | else
|
56 | {
|
57 | xTASTER();
|
58 | P1IFG &= ~TASTER;
|
59 | }
|
60 | }
|
PS: Ich denke, der Code ist so einfach, dass er nicht vieler Kommentare
bedarf.
Vielen Dank,
Daniel