Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Re: Вопросы начинающих PIC ASM

Пт июл 21, 2017 06:37:41

Просмотрите внимательно ВСЕ ЕРРАТЫ по данному кристаллу.
(и попытайтесь заодно узнать версию Вашего образца)
:roll:

Re: Вопросы начинающих PIC ASM

Пт июл 21, 2017 12:28:51

Спасибо, понял ошибку - не учёл, что RTS сбрасывается компьютером с задержкой.

П.С.: аппаратное необходимо, потому что объём информации неизвестной величины. Конечное устройство слишком медленное.

Re: Вопросы начинающих PIC ASM

Сб сен 30, 2017 16:14:03

Есть два вида исходников на ассемблере, используется макрос Parallax . PIC16F876A. Исходник по своей функциональности эволюционировал во вторую прошивку. Необходимо из первой прошивки (1) добавить некоторые пункты меню во вторую прошивку (2). Может кто ни будь помочь? Сам далек от программирования (только умение пользоваться программатором).
Вложения
PIC.ZIP
(380.24 KiB) Скачиваний: 344

Re: Вопросы начинающих PIC ASM

Чт фев 08, 2018 18:31:26

Здравия!
Подскажите, пож-ста, компилятор ругается
Код:
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=а в конце адрес. пространства. Чего ему надо?

Re: Вопросы начинающих PIC ASM

Чт фев 08, 2018 20:48:04

хекс в 2,5...3 раза больше бинарного содержимого флеша.
Откройте хекс и там все легко увидеть.

Re: Вопросы начинающих PIC ASM

Пт фев 09, 2018 08:47:57

Да, уже понял это. А вот чего не понимаю, так это как заполнить оставшееся свободное место переходами на Init. По логике, надо что-то вроде
Код:
fill (goto Init), MAXROM - CODE_END
Методом последовательных приближений :-) подобрал константу, warning пропал, но это ж не дело. Учитывая, что
Код:
 fill <expr>, <count>
      Записывает <count> слов программы <expr>. Инструкция ассемблера может быть указана в круглых скобках.
как-то оно не так работает, или я чего не понимаю.

Re: Вопросы начинающих PIC ASM

Сб дек 01, 2018 21:29:48

Приветствую, киньте примером как организовать цикл от Х до 0 и от 0 до Х, где Х - двухбайтовое число (например, надо мне от 1000 до нуля прокрутить цикл).
Чёт не допетрю. Для примера взял число 0х0100, т.е 256 в десятичном. И получается алгоритм:. Проверяем младший байт числа Х на 0, если оно ноль, уменьшаем его на единицу, после уменьшаем на единицу и старший байт, но перед этим надо проверить что старший байт тоже не ноль. Кароч запутался О_о и в коде ерунда получается:
Код:
mloop   movf CountL, W      ; операция меняет флаг Z
   btfsc STATUS, Z
loop
   decfsz CountL
   goto loop
   decfsz CountH
   
   goto mloop

Re: Вопросы начинающих PIC ASM

Сб дек 01, 2018 21:57:39

1000= 250 х 4

Re: Вопросы начинающих PIC ASM

Сб дек 01, 2018 22:08:10

Мысль про использование однобатного счётчика мне не приходила ( и никакой возник с двухбайтным числом. Но тут 1000 это я для примера, а если у меня скажем, будет цикл от 2675 до 0?

Re: Вопросы начинающих PIC ASM

Сб дек 01, 2018 23:41:16

Мысль про использование однобатного счётчика мне не приходила ( и никакой возник с двухбайтным числом. Но тут 1000 это я для примера, а если у меня скажем, будет цикл от 2675 до 0?

Вот. Пример счёта вверх в АСМ (для удобства в понятии и дальнейшего вывода "в лоб" на индикатор) даже в десятичном представлении числа. В виде macro.
В обратную сторону, от мах и до "0" можно по аналогии.

Т.е. задействуйте столько ячеек (8, 16 или 30 разрядных) сколь сочтёте нужным для размещения, счёта и хранения своего числа (любом удобном счислении) для нужного вам дальнейшего его показа, просмотра или использования.

Re: Вопросы начинающих PIC ASM

Вс дек 02, 2018 03:51:12

Приветствую, киньте примером как организовать цикл от Х до 0 и от 0 до Х, где Х - двухбайтовое число...
Код:
mloop   movf CountL, W      ; операция меняет флаг Z
   btfsc STATUS, Z
loop
   decfsz CountL
   goto loop
   decfsz CountH
   
   goto mloop

Не проверял, но вроде верно: (для проверки на ноль не нужно пихать число из регистра в аккумулятор, достаточно читать из него в него: movf CountL, F)
Код:
mloop
   movf CountL, F      ; операция меняет флаг Z
   btfsc STATUS, Z
   goto zeroL
loop
   .....................
   .....................
   <код в цикле>
   .....................
   .....................
   decfsz CountL
   goto loop
zeroL
   movf CountH, F
   btfsc STATUS, Z
   goto exit
   decfsz CountH
   goto loop
exit
   .....................
   .....................

Re: Вопросы начинающих PIC ASM

Вс дек 02, 2018 07:09:55

Спасибо )

Re: Вопросы начинающих PIC ASM

Вс дек 16, 2018 12:01:08

Никто не практикует применение Асм+Форт (Forth) для PIC контроллеров?
Пример одной методички
Применение PIC-контроллеров в измерительной технике

P.S. Взято с http://tesla.zabotavdome.ru/forth.html
По Forth для PIC гуглится достаточно много информации.
Форт применяется для всех микроконтроллеров.

Re: Вопросы начинающих PIC ASM

Вс дек 16, 2018 22:26:59

Никто не практикует применение Асм+Форт (Forth) для PIC контроллеров?

Ну а почему бы и нет? Программировать можно на любом удобном для вас языке. Или на том, который лучше всего подходит для решения поставленной задачи и которым вы владеете лучше всего.
Но самым главным будет - наличие приличного компилятора с данного языка.

Re: Вопросы начинающих PIC ASM

Чт фев 14, 2019 08:57:18

Здравия!
Подскажите, пож-ста, по STATUS-флагам Z, C, DC. Некоторые авторы советуют их устанавливать/сбрасывать перед проверкой в противоположное тестируемому состояние. Мне кажется, что это излишне, они всё равно займут новое (или останутся в старом) соотвтествующем случаю состоянии/положении. Или тут есть какие-то тонкости?

Re: Вопросы начинающих PIC ASM

Чт фев 14, 2019 09:27:12

Так возьмите и погоняйте нужный Вам код. И посмотрите, как в отладчике меняется состояния флага или флагов, к примеру Z.
Я всегда выставляю флаг (поднимаю или опускаю) перед операцией. И уверен, код отработает корректно на все 100% :tea:

Re: Вопросы начинающих PIC ASM

Чт фев 14, 2019 09:42:23

Некоторые авторы советуют их устанавливать/сбрасывать перед проверкой в противоположное тестируемому состояние.

"Некоторые авторы" НЕ правы.
Единственно, когда следует сбросить или установить бит переноса, это при арифметических операциях, когда это необходимо для оной математики.
При проверках этого делать не следует.

Re: Вопросы начинающих PIC ASM

Чт фев 14, 2019 11:43:33

И уверен, код отработает корректно на все 100% :tea:
Конечно отработает, и даже без принудительного дёргания флагов :-)

КРАМ писал(а):Единственно, когда следует сбросить или установить бит переноса, это при арифметических операциях, когда это необходимо для оной математики.
Имеете в виду сдвиги, чтоб с другой стороны вдвинулось в регистр/ниббл соответствующее значение? Хотя DC тут ни при чём, вроде.

Re: Вопросы начинающих PIC ASM

Чт фев 14, 2019 12:12:57

Полный ответ в описании команд.
Там для каждой команды выписано поведение флагов.
При работе с ассемблером этот материал всегда должен под рукой быть
(если собираемся в алгоритме чего мудреного применить).
8)

Re: Вопросы начинающих PIC ASM

Чт фев 14, 2019 12:33:36

Имеете в виду сдвиги?

Не только сдвиги, но и сложение/вычитание с переносом/заемом.
Ответить