Счетчик шага 1.3: изменить код так, чтобы светодиоды делали шаг в двоичном порядке при каждом нажатии кнопки.
Я относительно новичок в программировании на микроконтроллере. Так что выше, это то, что я пытаюсь сделать. Однако, пытаясь заставить его работать в двоичном порядке, кнопка, кажется, перестала работать, и поэтому ни один из светодиодов не мигает. Я не уверен, что изменилось, так как раньше он работал хорошо без нажатия кнопки. По сравнению с друзьями это выглядит так же ошеломленно от того, что пошло не так.
Это код, который у меня есть.
#include <msp430.h>
/*
* main.c
*/
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
volatile unsigned int i;
volatile unsigned int j;
P1DIR |= 0x41; // Set P1.0 to output direction
P1DIR &=~(BIT3); // Ensure P1.3 is an input
P1REN |= BIT3; // Set pulling Resistor for P1.3
P1OUT |= BIT3; // Make the pulling resistor for P1.3 a pull-UP resistor
j=0; // Button presses set to 0
P1OUT &=~0x01;
while (1) // Test P1.3
{
if ((BIT3 & P1IN)) { // if P1.3 set, set P1.0 turning on the LED
if (j == 0)
P1OUT &= ~0x41;
if (j == 1) {
P1OUT |= 0x01;
P1OUT &= ~0x40;
}
if (j == 2) {
P1OUT &= ~0x01;
P1OUT |= 0x40;
}
if (j == 3)
P1OUT |= 0x41;
else {
for (i=3000; i>0; i--);
if (j == 3)
j++;
else
j = 0;
}
while ((BIT3 & P1IN));
}
}
}