Есть два вида исходников на ассемблере, используется макрос Parallax . PIC16F876A. Исходник по своей функциональности эволюционировал во вторую прошивку. Необходимо из первой прошивки (1) добавить некоторые пункты меню во вторую прошивку (2). Может кто ни будь помочь? Сам далек от программирования (только умение пользоваться программатором).
dtemp05.asm:157:Warning[220] Address exceeds maximum range for this processor. BADROM_START{0x03FF} <= Address{0x03DF} <= BADROM_END{0x20FF}
В конце кода такая вставка
Код:
fill (goto Init), __CODE_END-$
pic 12f675 Я примерно понимаю, что оно говорит, но написано как-то несуразно... HEX-файл получается 5 с лишним Кб, а должен около 1 Кб. Затирать будет константу генератора, которая у этого PIC=а в конце адрес. пространства. Чего ему надо?
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Приветствую, киньте примером как организовать цикл от Х до 0 и от 0 до Х, где Х - двухбайтовое число (например, надо мне от 1000 до нуля прокрутить цикл). Чёт не допетрю. Для примера взял число 0х0100, т.е 256 в десятичном. И получается алгоритм:. Проверяем младший байт числа Х на 0, если оно ноль, уменьшаем его на единицу, после уменьшаем на единицу и старший байт, но перед этим надо проверить что старший байт тоже не ноль. Кароч запутался О_о и в коде ерунда получается:
Код:
mloop movf CountL, W ; операция меняет флаг Z btfsc STATUS, Z loop decfsz CountL goto loop decfsz CountH
Мысль про использование однобатного счётчика мне не приходила ( и никакой возник с двухбайтным числом. Но тут 1000 это я для примера, а если у меня скажем, будет цикл от 2675 до 0?
Мысль про использование однобатного счётчика мне не приходила ( и никакой возник с двухбайтным числом. Но тут 1000 это я для примера, а если у меня скажем, будет цикл от 2675 до 0?
Вот. Пример счёта вверх в АСМ (для удобства в понятии и дальнейшего вывода "в лоб" на индикатор) даже в десятичном представлении числа. В виде macro. В обратную сторону, от мах и до "0" можно по аналогии. СпойлерKMP_INC macro ;"Инкремент числа (ХХХ)" local ZR10 local ZR100 local ZR1K local KMP_INC_END movfw KMP_T ; Если число десятых уже addlw -9 ; равно 9, будет перенос BZ ZR10 ; в следующий разряд, incf KMP_T,1 ; иначе - увеличиваем число goto KMP_INC_END ; на 1 и возвращаемся. ZR10 clrf KMP_T ; После 9 - 0 и увеличиваем movfw KMP_E ; на 1 число единиц... addlw -9 BZ ZR100 incf KMP_E,1 goto KMP_INC_END ZR100 clrf KMP_E ;Аналогично - число десятков. movfw KMP_D addlw -9 BZ ZR1K incf KMP_D,1 goto KMP_INC_END ZR1K clrf KMP_D KMP_INC_END ; возвращаемся endm Т.е. задействуйте столько ячеек (8, 16 или 30 разрядных) сколь сочтёте нужным для размещения, счёта и хранения своего числа (любом удобном счислении) для нужного вам дальнейшего его показа, просмотра или использования.
_________________ @ „Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий.“ Козьма Петрович Прутков
Никто не практикует применение Асм+Форт (Forth) для PIC контроллеров?
Ну а почему бы и нет? Программировать можно на любом удобном для вас языке. Или на том, который лучше всего подходит для решения поставленной задачи и которым вы владеете лучше всего. Но самым главным будет - наличие приличного компилятора с данного языка.
Здравия! Подскажите, пож-ста, по STATUS-флагам Z, C, DC. Некоторые авторы советуют их устанавливать/сбрасывать перед проверкой в противоположное тестируемому состояние. Мне кажется, что это излишне, они всё равно займут новое (или останутся в старом) соотвтествующем случаю состоянии/положении. Или тут есть какие-то тонкости?
Так возьмите и погоняйте нужный Вам код. И посмотрите, как в отладчике меняется состояния флага или флагов, к примеру Z. Я всегда выставляю флаг (поднимаю или опускаю) перед операцией. И уверен, код отработает корректно на все 100%
_________________ Для связи email: risctronix собака gmail.com
Некоторые авторы советуют их устанавливать/сбрасывать перед проверкой в противоположное тестируемому состояние.
"Некоторые авторы" НЕ правы. Единственно, когда следует сбросить или установить бит переноса, это при арифметических операциях, когда это необходимо для оной математики. При проверках этого делать не следует.
Полный ответ в описании команд. Там для каждой команды выписано поведение флагов. При работе с ассемблером этот материал всегда должен под рукой быть (если собираемся в алгоритме чего мудреного применить).
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения