Кто такие?yor писал(а):Некоторые авторы
Вопросы начинающих PIC ASM
- Сообщения: 1701
- Зарегистрирован: Сб янв 19, 2008 23:57:27
- Реклама
ICQ нет, и, в ближайшее время, не будет.
- Сообщения: 83
- Зарегистрирован: Вс ноя 01, 2015 00:09:59
Потому что нулевой результат логический или арифметической операции.
Для связи email: risctronix собака gmail.com
- Сообщения: 1701
- Зарегистрирован: Сб янв 19, 2008 23:57:27
- Сообщения: 83
- Зарегистрирован: Вс ноя 01, 2015 00:09:59
В переменной FSR значения = 0. И при копирование этого значения в аккумулятор, флаг Z устанавливается в 1.
Для связи email: risctronix собака gmail.com
- Реклама
- Сообщения: 1701
- Зарегистрирован: Сб янв 19, 2008 23:57:27
Заблуждаетесь. FSR - это регистр, а не переменная, и запись "movf FSR,0" вовсе не означает, что в него грузится 0, почитайте эту вырезку внимательнее, сначала. Ошибка в даташите, получается, ну или неточность как минимум.
- Сообщения: 1701
- Зарегистрирован: Сб янв 19, 2008 23:57:27
Очень даже велика, сводит на нет все преимущества такой точной науки, как цифровая техника
Попробуйте в программе так что-нибудь подразумевать 
- Сообщения: 83
- Зарегистрирован: Вс ноя 01, 2015 00:09:59
На счет регистра FSR я ошибся терминологически. Но в остальном, сказано верно. 
Для связи email: risctronix собака gmail.com
У микрочипа описание команд введено в даташит (поскольку у каждого отдельно взятого подвида имеются некоторые отличия).
Посему или руководствуемся полной документацией, включая последующие еррата-шит ()где указываются обнаруженные опечатки/изменения) или делаем анализ даташитов иных "родственных" кристаллов.
При том, что пользоваться предпочтительно наиболее свежим изданием.
Как пример "ошибок" можно привести документацию на PIC16F87A
DS39582C - основная с "потерянной страничкой"
и соответствующая еррата, ту страничку дополняющая
DS80276A Там вообще movf "потерялась" в первом издании.
И практически нигде подобного Вашему, yor скрину я не наблюдаю.

Посему или руководствуемся полной документацией, включая последующие еррата-шит ()где указываются обнаруженные опечатки/изменения) или делаем анализ даташитов иных "родственных" кристаллов.
При том, что пользоваться предпочтительно наиболее свежим изданием.
Как пример "ошибок" можно привести документацию на PIC16F87A
DS39582C - основная с "потерянной страничкой"
и соответствующая еррата, ту страничку дополняющая
DS80276A Там вообще movf "потерялась" в первом издании.
И практически нигде подобного Вашему, yor скрину я не наблюдаю.
[uquote="yor",url="/forum/viewtopic.php?p=3570435#p3570435"]Очень даже велика, сводит на нет все преимущества такой точной науки, как цифровая техника[/uquote]
Не юродствуйте. Даташиты пишут живые люди. И читают, кстати, тоже. Минимально грамотному человеку понятно что такое флаги состояний. В большинстве даташитов на 8 битное семейство нет примера на эту команду. Что кагбэ намекаэ на очевидность.
ЗЫ. Нет такой науки - "цифровая техника". Есличо...
Не юродствуйте. Даташиты пишут живые люди. И читают, кстати, тоже. Минимально грамотному человеку понятно что такое флаги состояний. В большинстве даташитов на 8 битное семейство нет примера на эту команду. Что кагбэ намекаэ на очевидность.
ЗЫ. Нет такой науки - "цифровая техника". Есличо...
- Сообщения: 1701
- Зарегистрирован: Сб янв 19, 2008 23:57:27
Да ладно, это как пример. А как эти ерраты искать? По запросам в широком поиске не находится.
Эрраты искать там же, где и даташиты. На сайте Микрочипа.
Сначала открываете страницу используемого МК и в разделе документация находите не только даташит и эррату, но и аппноты, брифы и референсные мануалы на эту модель, а так же примеры кода.
Сначала открываете страницу используемого МК и в разделе документация находите не только даташит и эррату, но и аппноты, брифы и референсные мануалы на эту модель, а так же примеры кода.
- Сообщения: 1701
- Зарегистрирован: Сб янв 19, 2008 23:57:27
- Сообщения: 1701
- Зарегистрирован: Сб янв 19, 2008 23:57:27
Подскажите, пож-ста, по поводу стека. У 12F675 из даташита следует, что он не боится переполнения, хоть тысячу раз его переполняй, если с умом, аппаратно это не определить, процессор не остановится. Меня такая логика устраивает, из подпрограммы по CALL по неудаче много выходов по GOTO, и при удаче один по RETURN. То есть стек заполнен одним и тем же адресом возврата:
Выход по GOTO может быть достаточно много раз, значительно больше 8 (обработка медленно меняющегося напряжения).
Симулятор при переполнении стопорится, но это можно обойти. А в реальной работе проблем же быть не должно?
Код: Выделить всё
Init:
--
Start: call Delay
--
call TrueFalse
--
TrueFalse:
--
goto Start
--
goto Start
--
return
Delay:
--
returnСимулятор при переполнении стопорится, но это можно обойти. А в реальной работе проблем же быть не должно?
Странный вопрос.yor писал(а):А в реальной работе проблем же быть не должно?
Как это может не быть проблем из-за переполнения стека ?
То, что проц не сбросится и никак не отреагирует - ничего не значит. В стеке актуальные данные потеряются, и в итоге будет крах программы из-за возврата "не туда".
- Сообщения: 1701
- Зарегистрирован: Сб янв 19, 2008 23:57:27
Ничего странного, если внимательно прочитать мой опус
Стек будет всегда полон нужным мне адресом, на который выход произойдёт только в нужном случае. И даже другая подпрограмма удачно отработает, так как из неё нет нелегальных выходов. Вроде так 
- Сообщения: 1005
- Зарегистрирован: Ср окт 04, 2017 20:47:40
...Стек будет всегда полон нужным мне адресом, на который выход произойдёт только в нужном случае...
- Сообщения: 1701
- Зарегистрирован: Сб янв 19, 2008 23:57:27
Вы бредите, и не хотите подумать. Может слышали звон? Абстрактные поношения с негодованием отвергаем, требуем обоснованных возражений 
В данном случае работать будет, но только вопрос - зачем так делать?
Помимо формального достижения цели следует писать программу так, чтобы она оставалась открытой для последующих возможных модификаций, а равно для простого понимания ее работы через некоторый промежуток времени.
Такшта по факту Вы предлагаете совершенно безобразное решение.
Для искомого Вами двойного выхода из функции есть команда retlw <const>, с помощью которой, НЕ РАЗРУШАЯ СТЕК, можно спокойно ветвить исполнение ПОСЛЕ ШТАТНОГО ВЫХОДА из функции.
Учите матчасть, милейший, а не фонтанируйте глупостями.
Добавлено after 5 minutes 22 seconds:
[uquote="valentinovich",url="/forum/viewtopic.php?p=3581282#p3581282"]чтоб такое изречь[/uquote]
В представленном коде переполняющий адрес один и тот же, кроме единственного НЕПЕРЕПОЛНЯЮЩЕГО вызова задержки. Поэтому работать таки будет.
Помимо формального достижения цели следует писать программу так, чтобы она оставалась открытой для последующих возможных модификаций, а равно для простого понимания ее работы через некоторый промежуток времени.
Такшта по факту Вы предлагаете совершенно безобразное решение.
Для искомого Вами двойного выхода из функции есть команда retlw <const>, с помощью которой, НЕ РАЗРУШАЯ СТЕК, можно спокойно ветвить исполнение ПОСЛЕ ШТАТНОГО ВЫХОДА из функции.
Учите матчасть, милейший, а не фонтанируйте глупостями.
Добавлено after 5 minutes 22 seconds:
[uquote="valentinovich",url="/forum/viewtopic.php?p=3581282#p3581282"]чтоб такое изречь[/uquote]
В представленном коде переполняющий адрес один и тот же, кроме единственного НЕПЕРЕПОЛНЯЮЩЕГО вызова задержки. Поэтому работать таки будет.


