Я пытаюсь создать программу, которая преобразует введенную пользователем букву или цифру в азбуку Морзе, которая затем мигает светодиодом, соответствующим выходу.Я получаю сообщение «Ошибка включения этой функции: адрес превышает допустимый диапазон» при просмотре отладки, и я не уверен, как это исправить.Что мне нужно сделать?
Я попытался найти проблему, и изменение значения массивов, похоже, не изменит ошибку.
#include <stdio.h>
#include <stdlib.h>
#include "msp432.h"
#include <math.h>
#include <string.h>
#define MAX 100
#define SIZE 255
void LED_();
void LED_setup();
int main(){
char string[MAX][SIZE];
char destination[MAX] [MAX] [8];
char *input[38]={
".-", //A
"-...", //B
"-.-.", //C
"-..", //D
".", //E
"..-.", //F
"--.", //G
"....", //H
"..", //I
".---", //J
"-.-", //K
".-..", //L
"--", //M
"-.", //N
"---", //O
".--.", //P
"--.-", //Q
".-.", //R
"...", //S
"-", //T
"..-", //U
"...-", //V
".--", //W
"-..-", //X
"-.--", //Y
"--..", //Z
".----", //1 //numbers begin here
"..---", //2
"...--", //3
"....-", //4
".....", //5
"-....", //6
"--...", //7
"---..", //8
"----.", //9
"-----", //0
"/" //space
};
char *output[38]= {
"A",
"B",
"C",
"D",
"E",
"F",
"G",
"H",
"I",
"J",
"K",
"L",
"M",
"N",
"O",
"P",
"Q",
"R",
"S",
"T",
"U",
"V",
"W",
"X",
"Y",
"Z",
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"/"
};
char *code, *separator = " ";
int i;
int c;
int j;
int x;
int m[MAX];
printf("Enter the number of cases:");
scanf("%d", &x);
getchar();
for(i = 0; i < x; i++){
printf("Case#%d: ", i+1);
gets(string[i]);
}
for(i =0; i < x; i++){
for(code = strtok(string[i], separator); code != NULL; code = strtok(NULL, separator)){
strcpy(destination[i][j++], code);
}
m[i] = j;
}
for (i = 0; i < x; i++){
printf("Case#%d: ", i+1);
for(j = 0; j < m[i]; j++){
for(c = 0; c < 37; c++){
if(strcmp(destination[i][j], input[c]) == 0){
printf("%s", output[c]);
}
}
printf("\n");
LED_setup();
LED_();
}
}
return 0;
}
void LED_(char* mval){
char* a;
for (a = mval; a != NULL; a++){
if (*a == '.')
{
P4->OUT |= 0x01; //LED On
_delay_cycles(500); //Delay 0.5 second
P4->OUT &= ~0x01; //LED Off
}
else if (*a == '-')
{
P4->OUT |= 0x01; //LED On
_delay_cycles(1000); //Delay 1 second
P4->OUT &= ~0x01; //LED Off
}
else
{
_delay_cycles(750); //delay of 3/4 second
}
}
}
void LED_setup(){
P6->DIR |= 0x01;
P6->OUT &= ~0x01;
}