Заголовок сообщения: Re: Ошибка команды относительного перехода brcs.
Добавлено: Пт июн 15, 2012 20:34:04
Друг Кота
Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52 Сообщений: 4468 Откуда: Главный Улей России (Moscow)
Рейтинг сообщения:0
Либо Вы пытаетесь перейти по условию к несуществующей метке, либо она далековато находится. Относительный переход - это переход не по адресу метки, а переход относительно текущего содержимого счетчика команд PC. На более низком уровне выглядит как brcs PC+XX или PC-XX Команды относительного перехода едят меньше памяти, но на них есть такое вот ограничение. Точно не помню, на сколько единиц можно прыгать. То ли +128\-127 , то ли меньше. Ваша метка Start должна быть немного ближе и тогда проблему можно решить. Если быстродействие не критично, то можно часть кода, находящегося между меткой Start и условием brcs Start вынести в виде подпрограммы. Можно так же постараться развернуть алгоритм другим способом (реализовать по другому)
_________________ I am DX168B and this is my favourite forum on internet!
Дело в том, что это программа из книжки, по которой я учусь программировать. Там написано, что эта команда может перейти через не более чем 64 команды. А там их примерно 100. Сократить не могу, потому что: во-первых, не соображаю как это сделать, а во-вторых, если это пример, то он должен быть рабочим.
Может эту команду заменить на rjmp, но мне нужно чтобы флаг С обрабатывался тоже. Как можно сделать, скажите пожалуйста? Так можно заменить эту команду:
Заголовок сообщения: Re: Ошибка команды относительного перехода brcs.
Добавлено: Пт июн 15, 2012 20:57:57
Друг Кота
Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52 Сообщений: 4468 Откуда: Главный Улей России (Moscow)
Рейтинг сообщения:0
Возможно, компилятор не понимает, что такое PC+2 (думает, что это метка) Сделайте так:
Код:
... brcc Label rjmp Start Label: ...
По сути, PC+2 это прыжок через rjmp Start Просто автор книги решил не заморачиваться с метками, и написал так. А компилятор у него другой был. Видать, какой-то из старых TAVRASMов.
_________________ I am DX168B and this is my favourite forum on internet!
Заголовок сообщения: Re: Ошибка команды относительного перехода brcs.
Добавлено: Пт июн 15, 2012 21:17:57
Друг Кота
Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52 Сообщений: 4468 Откуда: Главный Улей России (Moscow)
Рейтинг сообщения:0
Млин. Чет я тупанул маленько. В принципе да. Можно и так, RJMP достает дальше. В книге проверяют, установлен ли флаг С в регистре SREG, и если установлен, то переход к началу программы. Мы меняем условие. Проверяем состояние флага на сброс и если флаг сброшен, перепрыгиваем переход к началу и идем далее по программе. А если флаг будет установлен, то условие не выполнится и произойдет переход к началу программы (метка Start) А на счет Протеуса: Может есть еще ошибки в программе?
_________________ I am DX168B and this is my favourite forum on internet!
Последний раз редактировалось DX168B Пт июн 15, 2012 21:20:52, всего редактировалось 1 раз.
Млин. Чет я тупанул маленько. В принципе да. Можно и так, RJMP достает дальше. В книге проверяют, установлен ли флаг С в регистре SREG, и если установлен, то переход к началу программы. Мы меняем условие. Проверяем состояние флага на сброс и если флаг сброшен, перепрыгиваем переход к началу и идем далее по программе. А если флаг будет установлен, то условие не выполнится и произойдет переход к началу программы (метка Start)
Да, компилятор принимает. Но в Протеусе полная каша получается. Я думаю, это уже по моей вине. Где-то есть мелочи, которые нужно исправлять, схему переделывать. С другой стороны, так даже лучше, чем просто тупо перепечатывать код из книги, надо и мозг напрячь, поискать ошибки.
Заголовок сообщения: Re: Ошибка команды относительного перехода brcs.
Добавлено: Сб июн 16, 2012 19:43:42
Друг Кота
Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52 Сообщений: 4468 Откуда: Главный Улей России (Moscow)
Рейтинг сообщения:0
AVR Studio 4 понимает. Если Вы в протеусе прикрепили к МК исходник, то лучше попробуйте прицепить к нему скомпилированный в AVR Studio файл прошивки (HEX файл) И проверьте исходники на прочие ошибки. В книгах бывают и опечатки.
_________________ I am DX168B and this is my favourite forum on internet!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения