Здравствуйте!
Вот пришлось разбираться с кодом на C. Компилятор ругается на команды.
void __init(void)
{
#define R24V PORTA.6 //
#define R48V PORTA.4 //
#define R96V PORTA.7 //
#define R192V PORTA.5 //
unsigned char temp;
temp=PINC;
temp= (temp & 0b00001100);
switch (temp)
{
case 0x00:
{
R24V=0;
R48V=1;
R96V=1;
R192V=0;
break;
}
case 0x08:
{
R24V=1;
R48V=0;
R96V=1;
R192V=0;
break;
}
....
Выдает ошибку
error: expected ';' before numeric constant
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
фигурные скобки не нужны, тут принцип не как у иф/елзе а как при переходе на метку (если бы брейков не было код бы дальше пошел выполняться)
Для тех, кто не учил магию мир полон физики
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
должно быть так:
switch (переменная)
{
case число:
код;
код;
break;
case другое_число:
код;
код;
break;
};
Для тех, кто не учил магию мир полон физики
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Выложите весь код switch-case'а и покажите на какую строку ругается компилятор.
По поводу скобок. Они допускаются к использованию, но в данном случае в них нет необходимости.
Да, именно так я и сделал. Но, ругается не на скобки а на ";"
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Alex да, только если их сделать как у ТС, break сможет выкинуть только из внутренней скобки, а не из свитча.
Для тех, кто не учил магию мир полон физики
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
switch (temp)
{
case 0x00:
{ R24V=0;
R48V=1;
R96V=1;
R192V=0;
break;
}
case 0x08:
{ R24V=1;
R48V=0;
R96V=1;
R192V=0;
break;
}
case 0x04:
{ R24V=1;
R48V=1;
R96V=1;
R192V=0;
break;
}
case 0x0C:
{ R24V=1;
R48V=1;
R96V=1;
R192V=1;
break;
}
}
Ругается на все что выделено
Ругань от компилятора
../__init.c:33: error: expected ';' before numeric constant
../__init.c:41: error: expected ';' before numeric constant
../__init.c:42: error: expected ';' before numeric constant
../__init.c:43: error: expected ';' before numeric constant
../__init.c:44: error: expected ';' before numeric constant
../__init.c:49: error: expected ';' before numeric constant
../__init.c:50: error: expected ';' before numeric constant
../__init.c:51: error: expected ';' before numeric constant
../__init.c:52: error: expected ';' before numeric constant
../__init.c:57: error: expected ';' before numeric constant
../__init.c:58: error: expected ';' before numeric constant
../__init.c:59: error: expected ';' before numeric constant
../__init.c:60: error: expected ';' before numeric constant
}
Добавлено after 4 minutes 9 seconds:
Мож какую нибудь библиотеку надо подключить?
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
В CVAVR такой код скомпилился без проблем
switch (Byte) {
case 0x00: break;
case 0x08: break;
};
дак у тебя, похоже это и без кейса не сработает - проверь
Добавлено after 45 seconds:
в смысле - эта ошибка к кейсу не относится
Для тех, кто не учил магию мир полон физики
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
[uquote="Ivanoff-iv",url="/forum/viewtopic.php?p=3112172#p3112172"]break сможет выкинуть только из внутренней скобки, а не из свитча.[/uquote] Вы уверены в своём ответе ?
давай весь код, интересует какие и где переменные объявлены (похоже он имена твоих переменных рассматривает частями)
Добавлено after 33 seconds:
про брейк сейчас проверю
Для тех, кто не учил магию мир полон физики
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Добавлено after 2 minutes 12 seconds:
А что не нравится тебе и более вменяемому компилятору?
Добавлено after 1 minute 43 seconds:
мне вот, было, скобки не понравились , но это не они (да и они оказались правильны) (а мне наука)
Для тех, кто не учил магию мир полон физики
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
PORTA.6 - интересный такой С, что позволяет идентификаторы, начинающиеся с цифр. Смотрите примеры к вашему компилятору как доступ к полям порта осуществляется и правьте соответственно.
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR!
чета я ваще аслеп то, что искал - прямо под носом лежит!
всё, пора спать а то уже второй явный косяк и оба сегодня
Для тех, кто не учил магию мир полон физики
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Добавлено after 2 minutes 49 seconds:
Весь код был создан под CVAVR 1.25.9 . Пытаюсь переделать под AStudio 4
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
Да, в CVAVR так и пишется PORTA.6 ,а в других компилятора может быть по другому
Добавлено after 3 minutes 42 seconds: RUNA у тебя в дефайнах косяк, потому так по коду и раскидано
Для тех, кто не учил магию мир полон физики
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Где мне найти описалова на WinAVR-20100110 а, то найти не могу.
Ткните носом где взять. Уже целый день сижу с это проблемой, а решить не могу.
Никогда не бойся делать то, что ты не умеешь. Ковчег был сооружен любителем. Профессионалы построили "Титаник".
Я всегда делаю то, что не умею, иначе как я научусь?! Когда Муза приходит ко мне, то застает меня за работой! - Пикассо.
возми готовый проект под свой компилятор и посмотри как там к конкретной ноге порта обращаются
Добавлено after 1 minute 13 seconds:
или сам попробуй по разному (без точки например)
Добавлено after 1 minute 35 seconds:
или в дефайны впиши только номера битов,а внизу уже соберёшь значение
Добавлено after 4 minutes 23 seconds:
примерно так:
#define R24V 6 //
#define R48V 4 //
#define R96V 7 //
#define R192V 5 //
а внизу сначала
PORTA &= 0b00001111; // для очистки 4-7 ног порта А
а затем
PORTA |=(1<<R24V)|(1<<R96V); //для записи 1 в нужные места
Последний раз редактировалось Ivanoff-iv Ср май 24, 2017 04:54:04, всего редактировалось 3 раза.
Для тех, кто не учил магию мир полон физики
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...