ich weiß, es ist ein alter hut, doch ich habe enorme probleme damit. es
will einfach nicht klappen :(
ich habe pin 1.1 als interruptfähigen input konfiguriert und eine
interruproutine wie folgend geschrieben.
1 | #pragma vector=PORT1_VECTOR
|
2 | __interrupt void PORT1(void)
|
3 | {
|
4 | for(m=0;m<=500;m++)//warte einige zeit
|
5 | _DINT();//interrupts aus machen
|
6 | {
|
7 | if(P1IFG & 0x01)// kam der interrupt vom p1.1?
|
8 | {
|
9 | P1OUT |= 0x02; //led an, wenn taste gedrückt
|
10 | if(i < 0x1f)
|
11 | {
|
12 | i++;
|
13 | }
|
14 | else
|
15 | {
|
16 | i = 0;
|
17 | }
|
18 | }
|
19 | }
|
20 | P1IFG &=~ 0x01;//löschen des interrupts
|
21 | P1OUT &=~ 0x02;//led wieder aus
|
22 | _EINT();//interrupt wieder an
|
23 | }
|
was nicht funktioniert: bei jeder betätigung des tasters soll die
globale variable bis zu einem bestimmten wert jeweils um 1 hochgezählt
werden. tut sie jedoch nicht, sie zählt viele male pro betätigung des
tasters.
könnt ihr mir helfen?