|
Не работает умножение на микроконтроллере, PIC18F4520 |
|
|
|
Dec 7 2010, 09:36
|
Частый гость
 
Группа: Участник
Сообщений: 162
Регистрация: 12-09-08
Из: Казань
Пользователь №: 40 143

|
Здравствуйте! Микроконтроллер не выполняет умножение, если в качестве множителей стоят переменные. Вот код: long x, y; x=15; y=x*2; indicate(y); ///отображение числа y на семисегментном экране. В результате отображаетс не 30, а 15, то есть вместо операции y=x*2 выполнилась операция x=y; Если множители типа int, умножение так же не работает, вот код: int x, y; x=15; y=x*2; indicate(y); ///отображение числа y на семисегментном экране. В результате отображается нуль. Операция умножения работает, только если множители заданы числами: long y; y=15*2; indicate(y); ///отображение числа y на семисегментном экране. В этом случае отображается число 30, как и должно быть. В чём может быть проблема? Cпасибо.
|
|
|
|
|
 |
Ответов
|
Dec 8 2010, 16:58
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Как разрешение или запрет поддержки ICD может повлиять на работу умножителя, боюсь, никому не понятно. Эта поддержка требует некоторых ресурсов контроллера - пара ног, 256 слов на верхушке программной памяти да чуток ОЗУ и стека. Другие ограничения при отладке с ICD расписаны в документации, но не помню, чтобы там поминался какой-то "расширенный набор команд". (у PIC18F4520 набор команд точно такой же как у остальных PIC18, и все команды благополучно доступны с ICD)
ЗЫЖ симулятор МПЛаба прекрасно симулирует умножитель. ЗЗЫЖ для y=x*2 компилятор наверняка не стал заморачиваться с умножителем и заменил умножение сдвигами. ЗЗЗЫЖ скорее всего Ваша проблема связана с проказами компилятора (а ПРО - такой проказник), но тогда её можно решить медитацией над результатами компиляции, а не телепатическим сеансом. Если у Вас действительно ПРО, и относительно старый, то - сначала стОит сравнить сорцы с полученными ассемблерными листингами и заглянуть в мап-файл; - не стОит это делать в присутствии людей, которые думают, что Вы не умеете ругаться.
|
|
|
|
Сообщений в этой теме
Marser Не работает умножение на микроконтроллере Dec 7 2010, 09:36 MrYuran Цитата(Marser @ Dec 7 2010, 12:36) Операц... Dec 7 2010, 09:46 Marser Цитата(MrYuran @ Dec 7 2010, 12:46) Это н... Dec 7 2010, 10:07  dimka76 Цитата(Marser @ Dec 7 2010, 13:07) А поче... Dec 7 2010, 10:55   Marser Цитата(dimka76 @ Dec 7 2010, 13:55) А с ч... Dec 7 2010, 13:19 _Pasha Цитата(Marser @ Dec 7 2010, 12:36) Вот ко... Dec 7 2010, 11:35  Marser Цитата(xemul @ Dec 8 2010, 19:58) ЗЫЖ сим... Dec 9 2010, 06:24 _Pasha Хайтек PICC фтопку, он буйный. Был и будет. Dec 9 2010, 07:07 Herz Цитата(_Pasha @ Dec 9 2010, 09:07) Хайтек... Dec 9 2010, 08:11  _Pasha Цитата(Herz @ Dec 9 2010, 11:11) Расскажи... Dec 9 2010, 09:59 xemul Цитата(Marser @ Dec 9 2010, 09:24) Симули... Dec 9 2010, 13:13
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|