Estoy aprendiendo a codificar en un microcontrolador de Texas Instruments, MSP430FR6969 ( enlace ), usando la plataforma de lanzamiento MSP-EXP430FR6969 ( enlace ).
También estoy usando un IDE CCS 6.1.0 ( enlace ).
Estoy haciendo un odómetro simple, donde el programa cuenta de 0 a 99,999 y luego se reinicia nuevamente.
código abajo
#include <msp430.h>
#define DEVELOPMENT 0x5A80
#define ENABLE_PINS 0xFFFE
int main(void)
{
WDTCTL = DEVELOPMENT;//disable WDT
PM5CTL0 = ENABLE_PINS;//this is needed in order to enable pins
P1DIR = 0x01;//P1.1 is output
P1OUT = 0x00;//port 1 = 0x00
unsigned int tnth, thou, hund, tens, ones;
unsigned long km = 0;
while(1)
{
for(tnth = 0;tnth < 10;tnth++)
{
for(thou = 0;thou<10;thou++)
{
for(hund = 0;hund<10;hund++)
{
for(tens = 0;tens<10;tens++)
{
for(ones = 0;ones<10;ones++)
{
km = 10000*tnth + 1000*thou + 100*hund +10*tens+
ones;
}
}
}
}
}
P1OUT = ~P1OUT;//I added a breakpoint there.
km = 0;
}
return 0;
}
Agregué un punto de interrupción en P1OUT = ~P1OUT;
, lo construí y lo depuré como en la imagen de abajo.
Cuandoeldepuradoralcanzaelpuntodeinterrupción,veoenlaventanadevigilanciavariableunidades,decenas,centenas,milyththiguala10,queesloqueespero.
Perotambiénesperabakm=99999
,encambiotengokm=34463
,locualnotienesentidoyaquekm
esununsignedlong
También.
Cuandomodificoelcódigoycambiounsignedinttnth,thou,hund,tens,ones
asignedint
,colocounpuntodeinterrupciónenP1OUT=~P1OUT
constrúyeloydepuré.Obtengokm=4294936223
enlaventanadeobservaciónvariable.
HicelapreguntaenelforodeTI(
"../main.c", línea 16: advertencia # 552-D: la variable "km" se estableció pero nunca se usó
Por favor, ayúdame en este asunto, y disculpa el largo post.