Здравствуйте всем! Пытаюсь изучать asm mcs51, попробовал Keil, но не могу понять как в нем применить
директивы proc и endp? Любые варианты написания натыкаются на сообщения о синтаксической ошибке.
Может кто-нибудь дать пример, кусочек кода, на asm для 8051, который Keil примет без ошибок?
Keil->ASM-> директивы proc & endp?
-
Rtmip
- Держит паяльник хвостом
- Сообщения: 963
- Зарегистрирован: Чт апр 03, 2014 23:16:55
- Откуда: Россия
Keil->ASM-> директивы proc & endp?
Последний раз редактировалось Gudd-Head Пт апр 04, 2014 10:18:46, всего редактировалось 1 раз.
Причина: Сюда перенёс
Причина: Сюда перенёс
- Реклама
Re: Keil->ASM-> директивы proc & endp?
Ежли решено изучать MCS51 под ассемблером, так лучше воспользоваться полным бесплатным вариантом от ATMEL
http://www.atmel.com/tools/C51ASM.aspx
там и полная документация по компилятору.
Синтаксис аналогичен кейловскому, запускается *.bat файликом с командной строки.
Единственно - предпочитает писать файлы под FAT32 (виндовс версия).
Ежли заинтересует - скину заготовку каталога проектов со всеми запускающими файликами.
По кейлу в конце года была бесплатная версия в комплекте с силабсовской IDE - но как сейчас не знаю - искать на сайте у силабса надо (у той версии токмо под силабсы и ограниченная вроде на 3 года лицензия на один комп).

http://www.atmel.com/tools/C51ASM.aspx
там и полная документация по компилятору.
Синтаксис аналогичен кейловскому, запускается *.bat файликом с командной строки.
Единственно - предпочитает писать файлы под FAT32 (виндовс версия).
Ежли заинтересует - скину заготовку каталога проектов со всеми запускающими файликами.
По кейлу в конце года была бесплатная версия в комплекте с силабсовской IDE - но как сейчас не знаю - искать на сайте у силабса надо (у той версии токмо под силабсы и ограниченная вроде на 3 года лицензия на один комп).
-
Rtmip
- Держит паяльник хвостом
- Сообщения: 963
- Зарегистрирован: Чт апр 03, 2014 23:16:55
- Откуда: Россия
Re: Keil->ASM-> директивы proc & endp?
Спасибо, интересует, буду признателен!BOB51 писал(а): Ежли заинтересует - скину заготовку каталога проектов со всеми запускающими файликами.
Однако, надеюсь, что кто-нибудь напишет пару строк на А51 под Keil, в которых будет proc & endp.
Очень хочу узнать как в Keile их можно использовать и применять
Re: Keil->ASM-> директивы proc & endp?
Имеете в виду Keil Microvision? Если ДА - вот пример организации процедур. Это для ARM, но для x51 так-же. МК какого производителя используете? Я сам использовал силлабовские C8051 и их IDE совместно с компилятором Keil. В этом IDE на АСМе не нужно директивы PROC и ENDP.
Код: Выделить всё
LPTMR0_setup PROC ; Low-Power Timer configuration
EXPORT LPTMR0_setup
IOORB SIM_SCGC5, 0x01 ; enable clock for LPTMR
SETH LPTMR0_CMR, 60 ; setup for 60 msec interval
SETB LPTMR0_PSR, 0x05 ; set LPO as clock source, no prescaler
SETB LPTMR0_CSR, 0x41 ; start timer in autoreset, enable interrupt
SETW NVIC_ISER, 0x10000000 ; enable LPTMR0 interrupt in NVIC
bx LR
ENDP-
Rtmip
- Держит паяльник хвостом
- Сообщения: 963
- Зарегистрирован: Чт апр 03, 2014 23:16:55
- Откуда: Россия
Re: Keil->ASM-> директивы proc & endp?
Спасибо, Вы подтверждаете мои подозрения, что в Keil Microvision(именно его пробую, 4-ку, МК разные-цель научиться, понять) все зависит от конкретного МК. Читая встроенный хелп и эксперементируя выяснил, что конструкция, подобная Вашей не вызывает ошибок, но только если выбрать "Philips 80C51MX architecture". Если в проекте использовать АТ89Sxxxx, то ошибки, но вот почему? И почему бы в хелпе им сразу не указать? До сих пор не могу выяснить в каком случае будет работать без ошибок такой пример из хелпа:
Тут, как я понимаю по описанию из справки утверждается, что процедура открывается и закрывается
обязательно одним и тем же именем, однако это вызывает ошибку синтаксиса
А если перед ENDP убрать имя и при этом выбрать МК "80C51MX architecture" то нет ошибок
В каком случае или что надо сделать, чтобы вышеприведенный код не вызывал ошибок?
Кто может, подскажите, пожалуйста
Код: Выделить всё
P101 PROC NEAR
CALL P102 ; far call for P102
RET ; near return
P101 ENDP
P102 PROC FAR
CALL P101 ; near call for P101
RET ; far return
P102 ENDP
ENDобязательно одним и тем же именем, однако это вызывает ошибку синтаксиса
А если перед ENDP убрать имя и при этом выбрать МК "80C51MX architecture" то нет ошибок
В каком случае или что надо сделать, чтобы вышеприведенный код не вызывал ошибок?
Кто может, подскажите, пожалуйста
- Реклама
Re: Keil->ASM-> директивы proc & endp?
Ежли честно... то зачем для 51-й вообще такая конструкция?
Там всего-то два варианта вызова acall ( в пределах текущей страницы в 2к) и lcall (в пределах 64к).
Причем более 64 килобайт ОЗУ/ПЗУ можно получить только спецсхемотехникой (ну еще у 151/251 семейств), а у большинства серийных "ходовых" МК и ПЗУ не превышает 2-4 килобайта.
Даже искуственно замудреный код и то ... (см первый проект http://radiokot.ru/forum/viewtopic.php?f=62&t=94201).

Там всего-то два варианта вызова acall ( в пределах текущей страницы в 2к) и lcall (в пределах 64к).
Причем более 64 килобайт ОЗУ/ПЗУ можно получить только спецсхемотехникой (ну еще у 151/251 семейств), а у большинства серийных "ходовых" МК и ПЗУ не превышает 2-4 килобайта.
Даже искуственно замудреный код и то ... (см первый проект http://radiokot.ru/forum/viewtopic.php?f=62&t=94201).
-
Rtmip
- Держит паяльник хвостом
- Сообщения: 963
- Зарегистрирован: Чт апр 03, 2014 23:16:55
- Откуда: Россия
Re: Keil->ASM-> директивы proc & endp?
Много придется написать, чтобы объяснить зачемBOB51 писал(а):Ежли честно... то зачем для 51-й вообще такая конструкция?![]()
1 - В Кейле ошибка? интересно узнать?
2 - Раз уж решил изучить asm 8051, то хоть чуть, но надо потрогать все возможности, а не только
основные команды и методы адресации
3 - Встретились тексты на asm, в которых сплошные процедуры, а вот ассемблировать их нечем
получается... и тд...


