Pic12c508 использование команды RETURN ("Световой еж")

Здесь обсуждаем устройства на МК и программы для них
Ответить
flash123
Читатель
Читатель
Сообщения: 6
Зарегистрирован: 22 июн 2011, 09:16

Pic12c508 использование команды RETURN ("Световой еж")

Сообщение flash123 »

Добрый день!

У меня вопрос в следующем:

Стал разбирать программу (что к чему) и наткнулся на команду "RETURN". Просмотрел список команд для конкретного контроллера PIC12C508 - в этом списке есть только "RETLW"
Отсюда вопрос: допустимо ли использовать команду "RETURN" для 12ти разрядных контроллеров (PIC12C508), или это ошибка?
Вот пример: (Скачал прошивку "HEDGEHOG.hex" вот ссылка -
http://www.musidora.ru/carryhedg.htm)

ЭТО ВЫРЕЗКА ИЗ ПРОГРАММЫ.
music: ; ®¦Ё¤ ­ЁҐ Ё ®ва Ў®вЄ  ¬г§лЄ «м­ле ¤®«Ґ©
;***********************************************************************
btfsc mode,b_wait ; Їа®ўҐаЄ  д« Ј  ®¦Ё¤ ­Ёп ¤®«Ё
goto mus_gate ; д« Ј ўЄ«о祭=1, ®¦Ё¤ ­ЁҐ Ё¬Їг«мб 
movlw 0ffh ; д« Ј ўлЄ«о祭,
subwf count_m,w ; ба ў­Ёвм бзҐвзЁЄ б Є®­бв ­в®©
jnc mus_ret ; ўл室, ҐйҐ ­Ґ ¤®иҐ« ¤® га®ў­п Є®­бв ­вл
incf count_m2,f
movlw const_m ; ба ў­Ёвм бзҐвзЁЄ б Є®­бв ­в®©
subwf count_m2,w ;
jnc mus_ret ; ўл室, ҐйҐ ­Ґ ¤®иҐ« ¤® га®ў­п Є®­бв ­вл
clrf count_m ; ¤®иҐ«,
clrf count_m2 ; ®Ў­г«Ёвм § ¤Ґа¦Єг Ё
bsf mode,b_wait ; гбв ­®ўЁвм д« Ј (ЎЁв=1) ®¦Ё¤ ­Ёп ¤®«Ё
mus_ret:
return

Заранее спасибо за Ваш ответ...
Аватара пользователя
rhf-admin
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
администратор, спонсор, писатель, дизайнер, инженер, программист, идеолог
Сообщения: 3060
Зарегистрирован: 25 авг 2009, 23:19
Откуда: Уфа
Контактная информация:

Re: Pic12c508 использование команды RETURN ("Световой еж")

Сообщение rhf-admin »

допустимо ли использовать команду "RETURN" для 12ти разрядных контроллеров (PIC12C508), или это ошибка?
В принципе, системы прерываний у этих контроллеров нет и команды return тоже нет, однако как видно из описания прога писана на макроассемблере ("Assembler: mpasm 1.40"). Вполне может быть, что команду return он обрабатывает как некий макрос в зависимости от выбранного типа контроллера ("LIST p=12C508 ;") и сам заменяет на соответствующую (и главное существующую для данного контроллера) машинную команду. Если компилятор не ругается, то скорее всего так оно и есть. Можно потом скомпиленную прогу открыть в том же ICProg и посмотреть что он там реально в этом месте накомпилил.
В любом случае, чтобы не допускать неразберихи и произвола компилятора, а также обеспечить совместимость с другими средами программирования, лучше макросами не пользоваться, а писать прогу командами, которые описаны в даташите.
С уважением, администрация сайта.
Ответить

Вернуться в «Устройства на микроконтроллерах»