Перейти к содержанию
    

Палыч

Свой
  • Постов

    2 495
  • Зарегистрирован

  • Победитель дней

    2

Весь контент Палыч


  1. Потому, что язык С, а не С++. Добавить #include <stdbool.h>
  2. По порядку: 1. Тип переменой ind - uint8_t или, что то же самое - unsigned char; тип константы 0xFE - int (см. п.6.4.4.1 абзац 5 стандарта). 2. При вычислении (ind|0xFE), поскольку типы разные, то приводятся к "большему" - к int. Результат - типа int. 3. Далее (uint8_t)(ind|0xFE) - тип явно приводится к uint8_t (unsigned char). 4. И наконец ~((uint8_t)(ind|0xFE)). Перед операцией ~ над операндом с типом unsigned char производится неявное преобразование - "integer promotions". Правило преобразования я цитировал выше.
  3. Цитата из стандарта ISO/IEC 9899:2011 (E) пункт 6.3.1.1 абзац 2 Все-таки будет приведено к int.
  4. При вычислении ~((uint8_t)(ind|0xFE)) перед выполнением оператора ~ значение (uint8_t)(ind|0xFE) снова будет преобразовано к типу int.
  5. Растолковываю: ind - uint8_t (unsigned char ) 0xFE - int Перед вычислением (ind | 0xFE) приводится значение переменной ind к типу int; результат - типа int, где старшие 8 бит имеют нулевое значение. Результат вычисления ~(ind | 0xFE) тоже будет иметь тип int, но восемь старших бит будут иметь значение 1. Оператор под if(~(ind | 0xFE)) будет всегда выполнятся, т.к. значение выражения - не ноль. При temp = ~(ind | 0xFE); старшие 8 бит потеряются.
  6. Огласите, пожалуйста, типы переменных temp и ind. Подозреваю, что - char. Почитайте про приведение типов в языке С.
  7. Мышкой по имени вверху страницы -> Настройки профиля -> Подпись Там же и выключатель просмотра подписи
  8. В UDP частично пакет считать нельзя. Но, можно считать пакет не удаляя его из входной очереди: у функции recv (и ей подобных) есть параметр flags. MSG_PEEK - это то значение flags, что Вам нужно.
  9. У меня нет ST-Link, но, если обратиться к документации Keil, то можно прочитать, что анализатор работает с: ULINKPro ULINK2 J-Link/J-Trace Всё! Перечень исчерпан...
  10. Аналогично. Однако, если вместо входа на форум перейти с главной страницы на любой подфорум или тему, а затем с неё вернуться на главную страницу, то форум "вспоминает", что ты уже когда-то входил сюда. PS. Отставить! Чтобы такого не было, нужно указывать протокол с шифрованием.
  11. Вероятно, потому, что пределитель - обычный двоичный счётчик, состояние которого не определено в момент записи в регистр TCCR1B. Для сброса счетчика пределителя в ноль используется регистр SFIOR.
  12. Первоначально картинка выглядела так: Затем картинку зачем-то поменяли, причем замена была только в UM серии 17хх. В документации на другие серии МК картинка не изменилась.
  13. Порядок передачи октетов МАС-адреса по сети обратен их традиционной шестнадцатиричной записи. Ваш адрес: 11.22.33.44.55.66 В нём 11.22.33 - идентификатор производителя; 44.55.66 - уникальный номер, присвоенный производителем В выбранном Вами идентификаторе производителя закралась ошибка: первый октет в идентификаторе производителя (11) - не может иметь такое значение: определяют только старшие шесть бит (заменим его на 10). В сеть вначале передаётся идентификатор производителя, затем - номер. Итого: SA0= 0x6655; SA1=0x4433; SA2=0x2210; Кстати, я с Вами использую какие-то разные manual'ы: у меня ни страницы не совпадают, ни рисунки, и регистра SA3(о котором Вы всё время говорите) - нет.
  14. Нулевой (хорошо бы, и первый) бит первого октета МАС-адреса имеет нулевое значение?
  15. К этому следует добавить установку регистров SA0, SA1, SA2 и режима Unicast (AcceptUnicastEn). Про фильтрацию пакетов смотри п.10.17.10 User Manual.
  16. Example: int main(void){ int choice = 1; int z =1; switch(choice) { case 1: int y = 1; z = y + z; break; case 2: break; } return 0; In the example, y is an initialized variable that is in scope (but unused) in the other cases. The C++ Standard says in section 6.7: Note The transfer from the condition of a switch statement to a case label is considered a jump in this respect. The usual way to fix this is to enclose the case that declares y in braces: case 1: { int y = 1; z = y + z; } break; Because y is a POD (Plain Old Data) type, so an alternative is to not use initialization: case 1: int y; y = 1; z = y + z; break;
  17. Транслятор не может определить область видимости объявленных переменных. В Вашем случае, наверное, лучше всего взять в скобки { ... } весь текст от case до break.
  18. Ну, почему же "не программное"? Как вариант: Разрешается прерывание на каком-либо устройстве, а процедуры обработки этого прерывания не существует - забыли написать...
  19. Большинство дисассемблеров не могут разделить команды и "константы" в памяти программ. "Константами" могут выступать, например, строки текста, выдаваемые программой на дисплей/терминал. Тогда команде "movx @dptr,a" соответствует байт со значением F0, что, вероятно, соответствует какой-то букве кириллицы (в некоторых кодировках - буква "р"). В некоторых дизассемблерах человек может подсказать, например: "с адреса ХХХХ лежит строка символов, которая заканчивается нулевым символом"... Естественно, подсказки - некие специфические команды, уникальные для каждого дизассемблера.
  20. Чтобы получить "исходники" из hex, дизассемблеру нужны подсказки от человека. Получение хороших "исходников" - итерационный процесс: подсказки человека несколько раз уточняются. Лучше (удобнее) вносить уточнения в интерактивном режиме. Лучший интерактивный дизассемблер - IDA.
  21. Документ относится к отладчику, а не к компилятору.
  22. Вариант 2: Установлены биты регистра FIO1MASK
×
×
  • Создать...