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

(и попытайтесь заодно узнать версию Вашего образца)
Re: Вопросы начинающих PIC ASM
Спасибо, понял ошибку - не учёл, что RTS сбрасывается компьютером с задержкой.
П.С.: аппаратное необходимо, потому что объём информации неизвестной величины. Конечное устройство слишком медленное.
П.С.: аппаратное необходимо, потому что объём информации неизвестной величины. Конечное устройство слишком медленное.
Пушистый ? Ага... чёрный, чешуйчатый и крылатый !
---
Consulовед второго уровня.
---
Consulовед второго уровня.
Re: Вопросы начинающих PIC ASM
Есть два вида исходников на ассемблере, используется макрос Parallax . PIC16F876A. Исходник по своей функциональности эволюционировал во вторую прошивку. Необходимо из первой прошивки (1) добавить некоторые пункты меню во вторую прошивку (2). Может кто ни будь помочь? Сам далек от программирования (только умение пользоваться программатором).
- Вложения
-
- PIC.ZIP
- (380.24 КБ) 372 скачивания
Re: Вопросы начинающих PIC ASM
Здравия!
Подскажите, пож-ста, компилятор ругается
В конце кода такая вставка
pic 12f675 Я примерно понимаю, что оно говорит, но написано как-то несуразно... HEX-файл получается 5 с лишним Кб, а должен около 1 Кб. Затирать будет константу генератора, которая у этого PIC=а в конце адрес. пространства. Чего ему надо?
Подскажите, пож-ста, компилятор ругается
Код: Выделить всё
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-$- КРАМ
- Друг Кота
- Сообщения: 25154
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Вопросы начинающих PIC ASM
хекс в 2,5...3 раза больше бинарного содержимого флеша.
Откройте хекс и там все легко увидеть.
Откройте хекс и там все легко увидеть.
Re: Вопросы начинающих PIC ASM
Да, уже понял это. А вот чего не понимаю, так это как заполнить оставшееся свободное место переходами на Init. По логике, надо что-то вроде Методом последовательных приближений
подобрал константу, warning пропал, но это ж не дело. Учитывая, что как-то оно не так работает, или я чего не понимаю.
Код: Выделить всё
fill (goto Init), MAXROM - CODE_ENDКод: Выделить всё
fill <expr>, <count>
Записывает <count> слов программы <expr>. Инструкция ассемблера может быть указана в круглых скобках.Re: Вопросы начинающих PIC ASM
Приветствую, киньте примером как организовать цикл от Х до 0 и от 0 до Х, где Х - двухбайтовое число (например, надо мне от 1000 до нуля прокрутить цикл).
Чёт не допетрю. Для примера взял число 0х0100, т.е 256 в десятичном. И получается алгоритм:. Проверяем младший байт числа Х на 0, если оно ноль, уменьшаем его на единицу, после уменьшаем на единицу и старший байт, но перед этим надо проверить что старший байт тоже не ноль. Кароч запутался О_о и в коде ерунда получается:
Чёт не допетрю. Для примера взял число 0х0100, т.е 256 в десятичном. И получается алгоритм:. Проверяем младший байт числа Х на 0, если оно ноль, уменьшаем его на единицу, после уменьшаем на единицу и старший байт, но перед этим надо проверить что старший байт тоже не ноль. Кароч запутался О_о и в коде ерунда получается:
Код: Выделить всё
mloop movf CountL, W ; операция меняет флаг Z
btfsc STATUS, Z
loop
decfsz CountL
goto loop
decfsz CountH
goto mloopRe: Вопросы начинающих PIC ASM
1000= 250 х 4
Re: Вопросы начинающих PIC ASM
Мысль про использование однобатного счётчика мне не приходила ( и никакой возник с двухбайтным числом. Но тут 1000 это я для примера, а если у меня скажем, будет цикл от 2675 до 0?
- valentinovich
- Держит паяльник хвостом
- Сообщения: 999
- Зарегистрирован: Ср окт 04, 2017 20:47:40
Re: Вопросы начинающих PIC ASM
[uquote="xterro",url="/forum/viewtopic.php?p=3517445#p3517445"]Мысль про использование однобатного счётчика мне не приходила ( и никакой возник с двухбайтным числом. Но тут 1000 это я для примера, а если у меня скажем, будет цикл от 2675 до 0?[/uquote]
Вот. Пример счёта вверх в АСМ (для удобства в понятии и дальнейшего вывода "в лоб" на индикатор) даже в десятичном представлении числа. В виде macro.
В обратную сторону, от мах и до "0" можно по аналогии.
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 разрядных) сколь сочтёте нужным для размещения, счёта и хранения своего числа (любом удобном счислении) для нужного вам дальнейшего его показа, просмотра или использования.
Вот. Пример счёта вверх в АСМ (для удобства в понятии и дальнейшего вывода "в лоб" на индикатор) даже в десятичном представлении числа. В виде 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
- КРАМ
- Друг Кота
- Сообщения: 25154
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Вопросы начинающих PIC ASM
[uquote="xterro",url="/forum/viewtopic.php?p=3517421#p3517421"]Приветствую, киньте примером как организовать цикл от Х до 0 и от 0 до Х, где Х - двухбайтовое число...
[/uquote]
Не проверял, но вроде верно: (для проверки на ноль не нужно пихать число из регистра в аккумулятор, достаточно читать из него в него: movf CountL, F)
Код: Выделить всё
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
Спасибо )
-
KPG
- Открыл глаза
- Сообщения: 68
- Зарегистрирован: Пн июн 19, 2017 18:51:54
- Откуда: South Ural г. Челябинск
Re: Вопросы начинающих PIC ASM
Никто не практикует применение Асм+Форт (Forth) для PIC контроллеров?
Пример одной методички
Применение PIC-контроллеров в измерительной технике
P.S. Взято с http://tesla.zabotavdome.ru/forth.html
По Forth для PIC гуглится достаточно много информации.
Форт применяется для всех микроконтроллеров.
Пример одной методички
Применение PIC-контроллеров в измерительной технике
P.S. Взято с http://tesla.zabotavdome.ru/forth.html
По Forth для PIC гуглится достаточно много информации.
Форт применяется для всех микроконтроллеров.
@ „Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий.“ Козьма Петрович Прутков
- valentinovich
- Держит паяльник хвостом
- Сообщения: 999
- Зарегистрирован: Ср окт 04, 2017 20:47:40
Re: Вопросы начинающих PIC ASM
Ну а почему бы и нет? Программировать можно на любом удобном для вас языке. Или на том, который лучше всего подходит для решения поставленной задачи и которым вы владеете лучше всего.Никто не практикует применение Асм+Форт (Forth) для PIC контроллеров?
Но самым главным будет - наличие приличного компилятора с данного языка.
Re: Вопросы начинающих PIC ASM
Здравия!
Подскажите, пож-ста, по STATUS-флагам Z, C, DC. Некоторые авторы советуют их устанавливать/сбрасывать перед проверкой в противоположное тестируемому состояние. Мне кажется, что это излишне, они всё равно займут новое (или останутся в старом) соотвтествующем случаю состоянии/положении. Или тут есть какие-то тонкости?
Подскажите, пож-ста, по STATUS-флагам Z, C, DC. Некоторые авторы советуют их устанавливать/сбрасывать перед проверкой в противоположное тестируемому состояние. Мне кажется, что это излишне, они всё равно займут новое (или останутся в старом) соотвтествующем случаю состоянии/положении. Или тут есть какие-то тонкости?
Re: Вопросы начинающих PIC ASM
Так возьмите и погоняйте нужный Вам код. И посмотрите, как в отладчике меняется состояния флага или флагов, к примеру Z.
Я всегда выставляю флаг (поднимаю или опускаю) перед операцией. И уверен, код отработает корректно на все 100%
Я всегда выставляю флаг (поднимаю или опускаю) перед операцией. И уверен, код отработает корректно на все 100%
Для связи email: risctronix собака gmail.com
- КРАМ
- Друг Кота
- Сообщения: 25154
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Вопросы начинающих PIC ASM
[uquote="yor",url="/forum/viewtopic.php?p=3569800#p3569800"]Некоторые авторы советуют их устанавливать/сбрасывать перед проверкой в противоположное тестируемому состояние.[/uquote]
"Некоторые авторы" НЕ правы.
Единственно, когда следует сбросить или установить бит переноса, это при арифметических операциях, когда это необходимо для оной математики.
При проверках этого делать не следует.
"Некоторые авторы" НЕ правы.
Единственно, когда следует сбросить или установить бит переноса, это при арифметических операциях, когда это необходимо для оной математики.
При проверках этого делать не следует.
Re: Вопросы начинающих PIC ASM
[uquote="Core-X",url="/forum/viewtopic.php?p=3569831#p3569831"]И уверен, код отработает корректно на все 100%
[/uquote]Конечно отработает, и даже без принудительного дёргания флагов 
Имеете в виду сдвиги, чтоб с другой стороны вдвинулось в регистр/ниббл соответствующее значение? Хотя DC тут ни при чём, вроде.КРАМ писал(а):Единственно, когда следует сбросить или установить бит переноса, это при арифметических операциях, когда это необходимо для оной математики.
Re: Вопросы начинающих PIC ASM
Полный ответ в описании команд.
Там для каждой команды выписано поведение флагов.
При работе с ассемблером этот материал всегда должен под рукой быть
(если собираемся в алгоритме чего мудреного применить).

Там для каждой команды выписано поведение флагов.
При работе с ассемблером этот материал всегда должен под рукой быть
(если собираемся в алгоритме чего мудреного применить).
- КРАМ
- Друг Кота
- Сообщения: 25154
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Вопросы начинающих PIC ASM
[uquote="yor",url="/forum/viewtopic.php?p=3569930#p3569930"]Имеете в виду сдвиги?[/uquote]
Не только сдвиги, но и сложение/вычитание с переносом/заемом.
Не только сдвиги, но и сложение/вычитание с переносом/заемом.