Код, который у меня работает, работает, когда я компилирую его в Xcode и запускаю операторы printf
для тире и точек для каждой буквы.Но когда я помещаю код в TI Code Composer Studio, код работает, но он только высветил на моем микроконтроллере только первую букву «G» «Go Knights».
Я знаю, что это как-то связано с циклом while, но я не уверен, что это такое.Я переместил все, включил / выключил вспышки, выключил мой счетчик, изменил мои переменные с глобальных на локальные переменные, проверил синтаксис на предмет отсутствия чего-либо, удалил оператор if для ==-1
и ничего не сработало
#include <msp430g2553.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
unsigned int i = 0;
unsigned int j=0;
int row = 0;
void main(void)`
{
char str [] = "Go Knights";
int morse_array [36][6] = { //array for A-Z, 0-9 in morse code
{0,1,-1}, //'.' = 0 and '-' = 1 and all else = -1
{1,0,0,0,-1},
{1,0,1,0,-1},
{1,0,0,-1},
{0,-1},
{0,0,1,0,-1},
{1,1,0,-1},
{0,0,0,0,-1},
{0,0,-1},
{0,1,1,1,-1},
{1,0,1,-1},
{0,1,0,0,-1},
{1,1,-1},
{1,0,-1},
{1,1,1,-1},
{0,1,1,0,-1},
{1,1,0,1,-1},
{0,1,0,-1},
{0,0,0,-1},
{1,-1},
{0,0,1,-1},
{0,0,0,1,-1},
{0,1,1,-1},
{1,0,0,1,-1},
{1,0,1,1,-1},
{1,1,0,0,-1},
{1,1,1,1,1,-1},
{0,1,1,1,1,-1},
{0,0,1,1,1,-1},
{0,0,0,1,1,-1},
{0,0,0,0,1,-1},
{0,0,0,0,0,-1},
{1,0,0,0,0,-1},
{1,1,0,0,0,-1},
{1,1,1,0,0,-1},
{1,1,1,1,0,-1}
};
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
P1DIR |= 0x41; //set the direction register for LED1 and LED2
P1OUT &= 0xBE; //initialize LED1 and LED2 to off*/
for(;;){ //empty for loop is an infinite loop
for (i=0; i<strlen(str); i++) {
if(str[i] >= 'a' && str[i] <= 'z'){
row = (str[i]- 'a');
}
else if(str[i] >= 'A' && str[i] <= 'Z'){
row = (str[i]- 'A');
}
else if(str[i] >= '0' && str[i] <= '9'){
row = (str[i] - '0');
}
else{
row = -1;
}
j= 0;
while(morse_array[row][j]!= -1){
// DOT
if(row == -1){
for(i=0; i<140000; i++);
break;
}
if(morse_array[row][j] == 0) {
P1OUT ^= 0x40;
for (i=0; i <25000; i++);
P1OUT &= 0x00;
for (i=0; i <30000;i++);
}
//Dash
else if(morse_array[row][j] == 1) {
P1OUT ^= 0x40;
for (i=0; i<60000; i++);
P1OUT &= 0x00;
for (i=0; i<30000; i++);
}
j++;
}
}
P1OUT ^= 0x01;
for (i=0; i<30000; i++);
P1OUT ^= 0x01;
}}