Если вы пишите на АСМе, то нужно говорить о нем, а не о среде разработки. И, тем более, стоит перейти на более новую версию среды, например 5.35, которая еще поддерживает старую версию АСМа для восьмибитных ПИКов - MPASM. Последующие версии требуют перехода на другой АСМ - PIC-AS. Кроме того, вы ничего не сказали о каком МК идет речь. Я смутно догадываюсь, что о 8-битных ПИКах, но есть и 16-битные и у них совсем другой Ассемблер. Синтаксис выделения памяти под переменные в MPASM, который позволяет видеть эти переменные в отладке в окне Watch или Variables такой:
Код:
group1 udata 0x20 var1 res 1 var2 res 4 var3 res 2
group2 udata_shr var4 res 1
group1 - это переменные, которые линкер разместит подряд с адреса 0x20 group2 - имеют директиву udata_shr, которая приведет к размещению переменных в общем для всех банках сегменте (обычно это адрес 0x70 и далее) res - это количество выделяемых под переменную байт. Обращение к старшим байтам в тексте кода очень простое: имя переменной+смещение в байтах. То есть var2+1 будет именем для второго байта переменной var2.
Пишу именно в среде mplab, а компилировать буду именно через встроенный компилятор ассемблера.
Еще раз. Писать вы можете хоть в блокноте ручкой. Синтаксис кода имеет значение не для среды (IDE), а для ассемблера. На ваш вопрос я ответил выше. А вообще, открываете мануал на ассемблер (он имеется в папках среды или во встроенном хелпере среды) и читаете. Там все имеется. Включая то, о чем я вам сообщил ранее.
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650.
Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Почему в книге для примера написан код ''bsf 3,5'' - установка 5 бита регистра СТАТУС, чтобы обращаться к первому банку. А через несколько страниц, код перехода к первому банку записан как ''bsf 5,3''. То есть в одном случае пишется команда, номер регистра, номер бита. А в другом случае наоборот, команда, номер бита, номер регистра. В этом действительно разницы нет? Или есть?
Начнем с того, что так вообще никто не пишет. Сначала к проекту присоединяют хедер контроллера (.inc), а затем пишут осмысленное:
Код:
bcf STATUS, RP0
А лучше вообще использовать макрос, который определит банк используемого регистра самостоятельно:
Код:
banksel PORTA ; эта строка будет автоматически заменена на bcf/bsf STATUS, RP0/RP1 bsf PORTA, 2
Во вторых, в каждом даташите на 8-битные контроллеры Микрочипа имеется СИСТЕМА КОМАНД (INSTRUCTION SET SUMMARY), где черным по белому, для каждой инструкции написан ее синтаксис и особенности использования. Учите настоящую матчасть, а не читайте всякие помоечные рукописи из интернета. ЗЫ. Запись инструкции имеет фиксированный порядок.
С точки зрения самого контроллера - да. С точки зрения среды - мануал на среду. С точки зрения ассемблера - мануал на ассемблер. Могу привести вам "рыбу" - пример нулевого проекта под конкретный МК. Там будет все, включая суперлуп. Вам потребуется только нарастить свое "мясо".
Добрый вечер. MPLAB 8.92 (и его симулятор), PIC12C508A, на ассемблере. В даташите (раздел про Prescaler) написано "When assigned to the Timer0 module, all instructions writing to the TMR0 register (e.g., CLRF 1, MOVWF 1, BSF 1,x, etc.) will clear the prescaler." То есть, при ручном изменении TMR0, предделитель (если он подключен к TMR0) сбрасыватся. А симулятор говорит обратное. В ерратах ничего не нашел. Кому верить ?
Если "предделитель сбрасыватся" - ето PS<2:0>: Prescaler Rate Select bits Bit, то не сбрасывается предварительный делитель (Value 000). Если "предделитель сбрасыватся" - ето внутренний счетчик предварительного делителя, то да, содержание сбрасывается.
Который, я так понимаю, нигде не доступен. Благодарю. Я просто понял это предупреждение, как необходимость заново конфигурировать предделитель каждый раз после ручного изменения значения TMR0. Ошибался, как теперь стало ясно.
Нет прямого чтения или записи prescaler-a. Единственный способ для чтения: "метод досчета" - добавлять по одному по входу, пока не переполнится. (Но этот МК не имеет прерывания после переполнения. Лучше на какой-нибудь новый тип МК. По крайней мере будет проще и прямее).
могут знающие товарищи подсказать, возможно ли проект с исходниками под PIC18F2550 перекомпилисмть под PIC18F26J50.. там используется USB и ногодрыг для управления LCD. __https://cxem.net/comp/comp128.php // Мониторинг параметров ПК на PIC
когда то давно, находил аналогичный "показометр" именно на PIC18F26J50. был еще использована ds1307 для показ часов, когда комп не включен.. может кому то еще попадалась ?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения