Страница 1 из 1
Непонятки с программой на Assembler (PIC16F628A)
Добавлено: Вс янв 11, 2015 14:17:46
COOLik
В программировании на Assembler я новичок. Нашел готовый код программы и пытаюсь в нем разобраться. Есть пара строк, мне совсем не понятных из-за не знания синтаксиса. Загуглить, к сожалению, не удалось. Думаю, что людям, которые разбираются, ответ на этот вопрос не займет более 3 минут.
Код такой:
и код макроса в другой части программы такой:
Код: Выделить всё
Pause3 macro t1,t2,t3
local wr ; объявление локальной метки !
movlw t1
movwf Reg
movlw t2
movwf Reg+1
movlw t3
movwf Reg+2
wr decfsz Reg, F
goto wr
decfsz Reg+1, F
goto wr
decfsz Reg+2, F
goto wr
endm
Меня интересует что означает :3 в строчке
а также что означает +1 в строчке
Суммируя эти два куска кода у меня родилась мысль, что может быть строчкой Reg:3 определяются три регистра Reg, Reg+1, Reg+2, т.е. аналогично такому коду:
Но не зная синтаксиса гадать бесполезно...К тому же я не уверен, что регистрам можно присваивать имена с использованием +...
Помогите, пожалуйста, кому не сложно.
Re: Непонятки с программой на Assembler (PIC16F628A)
Добавлено: Вс янв 11, 2015 14:34:01
Albert_V
Строка
Спойлер
означает записать число из W в регистр по адресу Reg+1, где адрес Reg = 20h. То есть, по адресу 21h.
Спойлер
REG:3 означает "зарезервировать 3 байта" начиная с адреса 20h. Адрес регистра с названием Random = 23h.
Re: Непонятки с программой на Assembler (PIC16F628A)
Добавлено: Вс янв 11, 2015 14:51:06
COOLik
Ага, т.е. резервируя 3 байта мы по сути резервируем 3 адреса под 3 регистра, только обращаться к ним придется через инкриментирование адреса регистра REG
Re: Непонятки с программой на Assembler (PIC16F628A)
Добавлено: Вс янв 11, 2015 14:53:06
COOLik
Спасибо, Albert_V
Re: Непонятки с программой на Assembler (PIC16F628A)
Добавлено: Вс янв 11, 2015 14:57:27
Albert_V
COOLik, Не думаю, что имеет смысл учиться создавать программы по этому тексту. Когда регистров будет достаточно много - очень легко допустить ошибку.
Я, обычно, делаю так (мне так удобнее):
Спойлер
Код: Выделить всё
RBASE equ 20 ; Если не PIC16F876 - перепроверить стартовый адрес.
cblock RBASE
;
STATUS_TEMP
WREG_TEMP
FSR_TEMP
;---------------------------------------
; Регистры генератора ПСП 1
REGNOISE1_1
REGNOISE1_2
REGNOISE1_3
REGNOISE1_4
;-------
; Регистры генератора ПСП 2
REGNOISE2_1
REGNOISE2_2
REGNOISE2_3
REGNOISE2_4
;-------
; Служебный регистр
TEMPREGNOISE
;---------------------------------------
; Служебный регистр
CTSERV
;---------------------------------------
; Служебный регистр
CTTIMELEDFLASH
;---------------------------------------
CTSPEEDHOLDL
CTSPEEDHOLDH
CTFLASHSPEED1
CTFLASHSPEED2
FLASHSPEEDL
FLASHSPEEDH
CTSPEEDDELAYUP
CTSPEEDDELAYDOWN
;---------------------------------------
; Битовый регистр
BITR_0
endc
Re: Непонятки с программой на Assembler (PIC16F628A)
Добавлено: Вс янв 11, 2015 15:04:10
COOLik
Albert_V, я так понимаю Вы имели ввиду, что лучше именовать каждый регистр отдельно нежели использовать резервирование и адресацию через инкриментирование?
Re: Непонятки с программой на Assembler (PIC16F628A)
Добавлено: Вс янв 11, 2015 15:10:59
Albert_V
Для меня - ДА.
Просто, когда число регистров "переваливает" за пол-сотни и текст программы "под пару тысяч строк" - вероятность допустить ошибку в тексте программы будет очень высокая.
Резервировать память имеет смысл если надо сделать "буфер" (к примеру, для RS-232).
Re: Непонятки с программой на Assembler (PIC16F628A)
Добавлено: Вс янв 11, 2015 15:14:05
COOLik
Albert_V, я учту это на будущее. Еще раз спасибо за помощь.
Re: Непонятки с программой на Assembler (PIC16F628A)
Добавлено: Вс янв 11, 2015 15:14:29
Albert_V
Удачи!!!
Re: Непонятки с программой на Assembler (PIC16F628A)
Добавлено: Вс янв 11, 2015 15:27:34
otest
CBLOCK тоже к хорошему не приведёт. Замучишся искать адрес регистра при отладке в том же Proteuse.
Re: Непонятки с программой на Assembler (PIC16F628A)
Добавлено: Вс янв 11, 2015 15:42:50
Albert_V
otest писал(а):...Замучишся искать адрес регистра при отладке в том же Proteuse.
Никогда в нём не работал (и не собираюсь). Мне достаточно MPLAB + ICD3.
Re: Непонятки с программой на Assembler (PIC16F628A)
Добавлено: Пн янв 12, 2015 16:17:45
BOB51
Не надо "форсажу"!
Для начала пущай хош с абсолютной адресацией разберется человек... Вообще-то для "затравки не мешает почитать хош вот это:
http://www.microchip.ru/files/d-sheets-rus/mpasm.pdf
ну и чего с данной страницы:
http://www.microchip.ru/lit/?mid=1x0
плюс "на закусь":
http://www.pic24.ru/doku.php/osa/articl ... formatting
и
http://www.pic24.ru/doku.php/osa/articl ... out_errors
правда последняя вроде к Сишникам, но общие правила остаются.
