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

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15550
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Просмотрите внимательно ВСЕ ЕРРАТЫ по данному кристаллу.
(и попытайтесь заодно узнать версию Вашего образца)
:roll:
1Ж24Б
Встал на лапы
Сообщения: 107
Зарегистрирован: Вс сен 01, 2013 19:21:15
Откуда: город К

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

Сообщение 1Ж24Б »

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

П.С.: аппаратное необходимо, потому что объём информации неизвестной величины. Конечное устройство слишком медленное.
Пушистый ? Ага... чёрный, чешуйчатый и крылатый !
---
Consulовед второго уровня.
Serdgi
Нашел транзистор. Понюхал.
Сообщения: 166
Зарегистрирован: Чт июн 02, 2011 10:32:56

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

Сообщение Serdgi »

Есть два вида исходников на ассемблере, используется макрос Parallax . PIC16F876A. Исходник по своей функциональности эволюционировал во вторую прошивку. Необходимо из первой прошивки (1) добавить некоторые пункты меню во вторую прошивку (2). Может кто ни будь помочь? Сам далек от программирования (только умение пользоваться программатором).
Вложения
PIC.ZIP
(380.24 КБ) 372 скачивания
yor
Говорящий с текстолитом
Сообщения: 1677
Зарегистрирован: Сб янв 19, 2008 23:57:27

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

Сообщение yor »

Здравия!
Подскажите, пож-ста, компилятор ругается

Код: Выделить всё

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=а в конце адрес. пространства. Чего ему надо?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

хекс в 2,5...3 раза больше бинарного содержимого флеша.
Откройте хекс и там все легко увидеть.
yor
Говорящий с текстолитом
Сообщения: 1677
Зарегистрирован: Сб янв 19, 2008 23:57:27

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

Сообщение yor »

Да, уже понял это. А вот чего не понимаю, так это как заполнить оставшееся свободное место переходами на Init. По логике, надо что-то вроде

Код: Выделить всё

fill (goto Init), MAXROM - CODE_END
Методом последовательных приближений :-) подобрал константу, warning пропал, но это ж не дело. Учитывая, что

Код: Выделить всё

 fill <expr>, <count>
      Записывает <count> слов программы <expr>. Инструкция ассемблера может быть указана в круглых скобках.
как-то оно не так работает, или я чего не понимаю.
Аватара пользователя
xterro
Опытный кот
Сообщения: 873
Зарегистрирован: Чт апр 12, 2012 07:19:59
Откуда: Тюмень

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

Сообщение xterro »

Приветствую, киньте примером как организовать цикл от Х до 0 и от 0 до Х, где Х - двухбайтовое число (например, надо мне от 1000 до нуля прокрутить цикл).
Чёт не допетрю. Для примера взял число 0х0100, т.е 256 в десятичном. И получается алгоритм:. Проверяем младший байт числа Х на 0, если оно ноль, уменьшаем его на единицу, после уменьшаем на единицу и старший байт, но перед этим надо проверить что старший байт тоже не ноль. Кароч запутался О_о и в коде ерунда получается:

Код: Выделить всё

mloop	movf CountL, W	   ; операция меняет флаг Z
	btfsc STATUS, Z
loop
	decfsz CountL
	goto loop
	decfsz CountH
	
	goto mloop
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

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

Сообщение otest »

1000= 250 х 4
Аватара пользователя
xterro
Опытный кот
Сообщения: 873
Зарегистрирован: Чт апр 12, 2012 07:19:59
Откуда: Тюмень

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

Сообщение xterro »

Мысль про использование однобатного счётчика мне не приходила ( и никакой возник с двухбайтным числом. Но тут 1000 это я для примера, а если у меня скажем, будет цикл от 2675 до 0?
Аватара пользователя
valentinovich
Держит паяльник хвостом
Сообщения: 999
Зарегистрирован: Ср окт 04, 2017 20:47:40

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

Сообщение valentinovich »

[uquote="xterro",url="/forum/viewtopic.php?p=3517445#p3517445"]Мысль про использование однобатного счётчика мне не приходила ( и никакой возник с двухбайтным числом. Но тут 1000 это я для примера, а если у меня скажем, будет цикл от 2675 до 0?[/uquote]
Вот. Пример счёта вверх в АСМ (для удобства в понятии и дальнейшего вывода "в лоб" на индикатор) даже в десятичном представлении числа. В виде 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 разрядных) сколь сочтёте нужным для размещения, счёта и хранения своего числа (любом удобном счислении) для нужного вам дальнейшего его показа, просмотра или использования.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

[uquote="xterro",url="/forum/viewtopic.php?p=3517421#p3517421"]Приветствую, киньте примером как организовать цикл от Х до 0 и от 0 до Х, где Х - двухбайтовое число...

Код: Выделить всё

mloop	movf CountL, W	   ; операция меняет флаг Z
	btfsc STATUS, Z
loop
	decfsz CountL
	goto loop
	decfsz CountH
	
	goto mloop
[/uquote]
Не проверял, но вроде верно: (для проверки на ноль не нужно пихать число из регистра в аккумулятор, достаточно читать из него в него: 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
	...
	...
Аватара пользователя
xterro
Опытный кот
Сообщения: 873
Зарегистрирован: Чт апр 12, 2012 07:19:59
Откуда: Тюмень

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

Сообщение xterro »

Спасибо )
KPG
Открыл глаза
Сообщения: 68
Зарегистрирован: Пн июн 19, 2017 18:51:54
Откуда: South Ural г. Челябинск

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

Сообщение KPG »

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

P.S. Взято с http://tesla.zabotavdome.ru/forth.html
По Forth для PIC гуглится достаточно много информации.
Форт применяется для всех микроконтроллеров.
@ „Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий.“ Козьма Петрович Прутков
Аватара пользователя
valentinovich
Держит паяльник хвостом
Сообщения: 999
Зарегистрирован: Ср окт 04, 2017 20:47:40

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

Сообщение valentinovich »

Никто не практикует применение Асм+Форт (Forth) для PIC контроллеров?
Ну а почему бы и нет? Программировать можно на любом удобном для вас языке. Или на том, который лучше всего подходит для решения поставленной задачи и которым вы владеете лучше всего.
Но самым главным будет - наличие приличного компилятора с данного языка.
yor
Говорящий с текстолитом
Сообщения: 1677
Зарегистрирован: Сб янв 19, 2008 23:57:27

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

Сообщение yor »

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

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

Сообщение Core-X »

Так возьмите и погоняйте нужный Вам код. И посмотрите, как в отладчике меняется состояния флага или флагов, к примеру Z.
Я всегда выставляю флаг (поднимаю или опускаю) перед операцией. И уверен, код отработает корректно на все 100% :tea:
Для связи email: risctronix собака gmail.com
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

[uquote="yor",url="/forum/viewtopic.php?p=3569800#p3569800"]Некоторые авторы советуют их устанавливать/сбрасывать перед проверкой в противоположное тестируемому состояние.[/uquote]
"Некоторые авторы" НЕ правы.
Единственно, когда следует сбросить или установить бит переноса, это при арифметических операциях, когда это необходимо для оной математики.
При проверках этого делать не следует.
yor
Говорящий с текстолитом
Сообщения: 1677
Зарегистрирован: Сб янв 19, 2008 23:57:27

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

Сообщение yor »

[uquote="Core-X",url="/forum/viewtopic.php?p=3569831#p3569831"]И уверен, код отработает корректно на все 100% :tea:[/uquote]Конечно отработает, и даже без принудительного дёргания флагов :-)
КРАМ писал(а):Единственно, когда следует сбросить или установить бит переноса, это при арифметических операциях, когда это необходимо для оной математики.
Имеете в виду сдвиги, чтоб с другой стороны вдвинулось в регистр/ниббл соответствующее значение? Хотя DC тут ни при чём, вроде.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15550
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Полный ответ в описании команд.
Там для каждой команды выписано поведение флагов.
При работе с ассемблером этот материал всегда должен под рукой быть
(если собираемся в алгоритме чего мудреного применить).
8)
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25154
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

[uquote="yor",url="/forum/viewtopic.php?p=3569930#p3569930"]Имеете в виду сдвиги?[/uquote]
Не только сдвиги, но и сложение/вычитание с переносом/заемом.
Ответить

Вернуться в «PIC»