Я использую компилятор CC5X. Я пишу радиолюбителя по радио для речи и морзе с 16F628 ПОС. Моя программа отлично работает от A до 9 (128 - или.), Но не работает после 9 до конца. Я знаю, что это должен быть размер указателя, но он не может его решить. Я положил -mc2, чтобы назначить 16-битные указатели для доступа к const, но это то же самое. Если у вас есть совет.PIC 16F628 Структура CC5X
У меня есть-структуру для Морзе:
static const struct {
const uns8 letter;
const uns8 code[6];
}
MorseMap[] =
{
{ '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', "--.." },
{ ' ', "x" }, //
{ '1', ".----" },
{ '2', "..---" },
{ '3', "...--" },
{ '4', "....-" },
{ '5', "....." },
{ '6', "-...." },
{ '7', "--..." },
{ '8', "---.." },
{ '9', "----." }, // 128 car . and - OK to here
{ '0', "-----" }, // Here starts the bug
{ ',', "--..--" },
{ '?', "..--.." },
{ '!', "-.-.--" },
{ ':', "---..." },
{ ';', "-.-.-." },
{ '(', "-.--." },
{ ')', "-.--.-" },
{ '"', ".-..-." },
{ '@', ".--.-." },
{ '&', ".-..." },
{ '.', "·–·–·–" },
};
uns8 *j; // my pointer to the structure
/*And a function to associate the code
void encode(uns8 lettre) // encode la lettre à envoyer en morse*/
{
uns8 a;
for(j = 0; j < 46; j++)
{
a = MorseMap[j].letter;
if(lettre == a)
{
code_morse[0] = MorseMap[j].code[0];
code_morse[1] = MorseMap[j].code[1];
code_morse[2] = MorseMap[j].code[2];
code_morse[3] = MorseMap[j].code[3];
code_morse[4] = MorseMap[j].code[4];
code_morse[5] = MorseMap[j].code[5];
code_morse[6] = '\0';
break;
}
}
}
Я думаю, что код также подходит для 0. – LPs
Просто удалил мой ответ, поскольку он кажется неправильным .. Как определяется «code_morse»? –
Не знаю о CC5X, сравнивая указатель 'j' с целым числом' 46' является плохим в нормальном C. – MikeCAT