Здравствуйте! Подскажите пож-ста. PIC 12F675 Не работает такой код
Код:
btfsc W,0 ; W 0bit -> Out0 bsf Outstat,Out0
В АКБ 0x1, а он просто идёт дальше, как-будто W(0)=0. В железе не пошло сразу, мучаю в симуляторе пока. Есть сомнения, что в этой команде можно использовать АКБ, хотя даташиту вроде не противоречит, но в инете попадается, что нельзя...
Да уж, что это за аккумулятор такой недоделанный... Компилятор gpasm не выдаёт в этом случае ни ошибки ни даже предупреждения, а другие более возлюбленные микрочипом? Даташит: BTFSC bit Test, Skip if Clear Syntax: [label] BTFSC f,b Operands: 0<=f<=127 0<=b<=7 Вроде формально укладывается, предупреждений/запретов на использование W нет.
Откройте таблицу команд в родном pdf-е и посмотрите какие команды на какие флаги влияют. Лень проверять на железе, но уверен что decf W,W он не выполнит. ----- Более менее можно верить MPLAB SIM, но иногда и там встречаются "недочёты" в Debugger-е.
В многообразии литиевых батареек и аккумуляторов нет какого-то универсального или идеального варианта. Выбирая тот или иной вариант для питания устройства, разработчику приходится оперировать множеством параметров, используя наиболее оптимальное их сочетание для каждого приложения. Разберем параметры для различных приложений.
Не могу сообразить, причём тут флаги. Мне тоже кажется, что не выполнит. DECF Decrement f Syntax: [label] DECF f,d Operands: 0<=f<=127 d=[0,1] Operation: (f) - 1 -> (destination) Status Affected: Z
Может и до меня кто заметил, но думаю, если в мнемонике команды нет буквы W, то использовать его нельзя
Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. EVE является поставщиком аккумуляторных элементов круглого формата для электрических моделей автомобилей.
Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного.
Z - флаг ZERO ("0"). ------- В 12-ой серии decf W,x не выполняется.
Как из первого следует второе?
Аlex писал(а):
Так оно и есть.
Странно, что не находится прямого вразумления от микрочипа. Даже PICmicro Mid-Range Reference Manual-33023a просмотрел (не очень конечно досконально) - и тишина...
Аlex писал(а):
побитовое "И" его с константой (ANDLW) и проверить флаг Z.
Это уже не одна команда, но это мелочи, и вкупе с другими неподдерживающими АКБ командами не имеет смысла, проще действительно сторонний регистр задействовать.
Заголовок сообщения: Re: Вопросы начинающих PIC ASM
Добавлено: Пн янв 11, 2016 19:42:04
Модератор
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4511 Откуда: Планета Земля
Рейтинг сообщения:4 Медали: 1
yor писал(а):
Странно, что не находится прямого вразумления от микрочипа.
Не понятно, какое вразумление Вам нужно ? Команда btfsc - проверка бита в регистре. Именно в регистре ! Все команды имеют описание. Если в описании оперирует аккумулятор (кстати, это далеко не АКБ) - значит операция производится именно с ним. Аккумулятор не имеет адресации, по этому обратиться к нему напрямую (даже косвенно), как к регистру, нельзя. И никакой он не недоделанный, просто такая система команд слабоватая.
А в каком состоянии после включения, POR и прочих сбросов находятся общие регистры, которые ОЗУ? Некоторые в любом, некоторые в определённом (а иначе невозможно было бы начать работу), а про общие не пишут. Понятно, что для надёжности/определённости можно сбрасывать, но всё-таки, если кто знает? Да и если каждый сбрасывать, много места зря пропадает.
Ну в смысле инициализировать, я имел ввиду. А вот возвращаясь к напечатанному:
Albert_V писал(а):
Команда btfsc W,0 в PIC12F675 не пройдёт.
А в каких-нибудь PIC-ах вообще пройдёт? Учитывая
yor писал(а):
если в мнемонике команды нет буквы W, то использовать его нельзя
yor писал(а):
Компилятор gpasm не выдаёт в этом случае ни ошибки ни даже предупреждения, а другие более возлюбленные микрочипом?
Это как-то неприлично выглядит со стороны, gpasm ладно понятно, СПО и всё такое, но неужели и mpasm и прочие типа серъёзные компиляторы так же себя ведут в этом случае? Проверьте пож-ста, кому не трудно, а то я сам под линуксом живу.
Заголовок сообщения: Re: Вопросы начинающих PIC ASM
Добавлено: Вт янв 12, 2016 10:53:22
Встал на лапы
Карма: 3
Рейтинг сообщений: 17
Зарегистрирован: Чт ноя 26, 2015 23:22:35 Сообщений: 125 Откуда: не с Уфы
Рейтинг сообщения:0
Цитата:
Команда btfsc W,0 в PIC12F675 не пройдёт.
А в каких-нибудь PIC-ах вообще пройдёт?
Что значит не пройдёт? Мне кажется вы неверно представляете это. На самом деле пройдёт.
Если вы напишите BTFSC W,0 то как и в любом другом случае, если вы не нарушили синтаксис, будет создан соответствующий опкод. А именно : Вместо W подставится ноль, ведь именно так он у вас определён, только это команда работает с адресом регистра, поэтому будет обращение к регистру с адресом 0x00, а это indf. А кто сказал что к нему нельзя обращаться, и к его любому биту?
А хотели ли вы обратиться к indf, когда писали W, это уже другой вопрос.
Это понятно, но как задумано всё-таки не пройдёт. Потому и компилится без ошибок. Не зря существуют (слышал краем уха) всякие лексические-грамматические анализаторы.
yor, если пишите программу на ASM - лучше никому не доверять проверку логики работы программы. Только сами. "Если что" - в MPLAB Sim можете посмотреть "что происходит", но на 100% у меня к нему доверия нет. Синтаксис и орфографию проверит транслятор в любом случае. ---- P.S. Пока изучаете PIC-и - лучше не отключать Warning-и. Пусть, лучше, будет "куча" предупреждений типа "проверьте к какому банку вы обращаетесь" или "по умолчанию результат сохранён в регистре" (это если забыли в команде, к примеру, decf regx указать куда сохранить результат). По крайне мере, будет повод ещё раз перепроверить текст программы.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения