Mein Problem entsteht mit der Variablen total
. Der Debugger läuft rüber wie es nicht einmal da ist, oder wenn Sie die *
loswerden, läuft es und läuft und bietet eine seltsame Zahl. Die Idee des Programms besteht darin, dem total
Dimes (oder 10) hinzuzufügen, bis es größer als das Ziel ist, das 10000
ist.C Änderung Variable wird über
Ich schreibe dies in C mit IAR Embedded Workbench und verwende ein MSP430G2553.
#include <msp430g2553.h>
#include <stdio.h>
volatile unsigned int i;
int dime=0;
int goalz =10000;
int main(void)
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= 0x00;
for(;;){
P1OUT =0x01;
while(1)
{
if((BIT4 & P1IN))
{
P1OUT |= 0x01;
dime++;
int *total = 0;
*total = &dime;
}
else
{
P1OUT |= 0x00;
}
}
}
}
Beachten Sie, dass 'P1OUT | = 0x00;' ein No-Op ist. Haben Sie daran gedacht, 'P1OUT & = ~ 0x01;' das niedrigstwertige Bit zurückzusetzen? Der Compiler sollte vor einem Typenkonflikt in der Zuweisung '* total = &dime; 'gewarnt haben - beachten Sie die Warnungen Ihres Compilers. Wenn es warnt, liegt es daran, dass Ihr Code so falsch ist, dass er denkt, dass er ihn nicht einfach kompilieren kann, ohne Sie wissen zu lassen, dass Sie wahrscheinlich einen Fehler gemacht haben. –