Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Proteus, KiCAD и другие ECAD Разработчик так или иначе сталкивается с системами автоматизированного проектирования. Данный раздел - по САПР.

 
Опции темы
Непрочитано 25.07.2007, 15:50  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Макросы в MPLAB

Начал применять макросы при написании на ассамблере,хорошая вещь.Без передачи макросу аргументов получается,но как написать если передать макросу аргументы? Например нашел пример,интересует надо ли выделять под device, buffer, count регистры или макрос так примет числа?
Simple Example
;Define macro Read
Read macro device, buffer, count
movlw device
movwf ram_20
movlw buffer ; buffer address
movwf ram_21
movlw count ; byte count
call sys_21 ; subroutine call
endm
:
;Use macro Read
Read 0x0, 0x55, 0x05
CERGEI1982 вне форума  
Непрочитано 25.07.2007, 16:38  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

А в примерах как сделано ?
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 25.07.2007, 17:19  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Точно,чо то я ступил
CERGEI1982 вне форума  
Непрочитано 26.07.2007, 17:00  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Можно ли вызывать из одного макроса другой?
Пробовал вот так:
OFF MACRO
;ВЫКЛЮЧЕНИЕ ДИСПЛЕЯ
MOVLW 08H ; 08H=0000 01000
MOVWF PORTB
BSF E
NOP
BCF E
DELAY_50US ;ЗАДЕРЖКА 50 МКС

;ВКЛЮЧЕНИЕ
MOVLW 0EH ; 0EH=0000 1110
MOVWF PORTB
BSF E
NOP
BCF E
DELAY_50US ;ЗАДЕРЖКА 50 МКС
;ОЧИСТКА ДИСПЛЕЯ
MOVLW 01H
MOVWF PORTB
BSF E
NOP
BCF E
DELAY_3MS ;ЗАДЕРЖКА 3МС
ENDM

DELAY_50US MACRO
;delay = 50 machine cycles
movlw .16
movwf Reg_1
wr_1 decfsz Reg_1, F
goto wr_1
clrwdt
ENDM

Выдает ошибку такую Address label duplicated or different in second pass (wr_1),макрос задержки вызывается несколько раз в одном и том же макросе.
CERGEI1982 вне форума  
Непрочитано 26.07.2007, 21:06  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Сергей, дело не в этом.Конечно, можно, но нужно ли ? Вызов макроса и вызов функции отличается тем, что макрос вставляется в код столько раз, сколько ты его вызываешь.
Макрос занимает 20 слов, ты его вызываешь 10 раз и занимаешь 200 слов кода. Функция занимает 20 слов, ты ее вызываешь 10 раз и занимаешь 10+2*10= 30 слов кода, что существенно экономней - я, конечно, утрирую немного, дав 2 слова на колл и ретурн.
В твоем случае возникает ошибка 2 меток, расположенных в разных местах и имеющих одинаковый адрес. Метка -то одна
wr_1, но поскольку макрос вставляется в тело программы 2 раза ... Какой у нее адрес ? Обойти это достаточно легко - замени
wr_1 decfsz Reg_1, F
goto wr_1

на
decfsz Reg_1,F
goto $-1 ; переход на предыдущий адрес
и прога откомпилится без ошибок.

Какое-то путаное объяснение...
urry вне форума  
Непрочитано 27.07.2007, 01:53  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Спасибо urry за объяснение Я все понял,мало пользовался макросами и асемом вот и решил немного потренироватся,теперь буду знать.Значит макрос это просто подстановка програмного кода в основную программу.
CERGEI1982 вне форума  
Непрочитано 27.07.2007, 10:54  
buka_2004
Временная регистрация
 
Регистрация: 28.02.2007
Сообщений: 90
Сказал спасибо: 6
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
buka_2004 на пути к лучшему
По умолчанию

Да еще можно метку как локальную для макроса сделать.
Тогда можно макрос сколько угодно раз в программе вызывать.
Например:
Код:
MACROSS	macro	TEMP

	local	nochk

	tstfsz	TEMP
	bra	nochk
	
	....

nochk	
	......

	endm
buka_2004 вне форума  
Непрочитано 27.07.2007, 15:59  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Бука не совсем понятно как это сделать,можно но ли с коментариями?
При симуляции MPLAB SIM у меня программа не заходит в макросы,где у меня ошибка и он просто зацикливается при вызове макроса.Можно ли настроить так что входил в макрос по клавише F7,пошагово,а то выполняет макрос как одну команду
CERGEI1982 вне форума  
Непрочитано 28.07.2007, 01:50  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Вот учишь, учишь ... и одни двойки.. Забудь о макросах.. Нема их... фсе.. И вообще, ты же на си переходил.. Я сейчас на асме и под пистолетом писать не буду.
urry вне форума  
Непрочитано 28.07.2007, 02:50  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Сообщение от urry
Вот учишь, учишь ... и одни двойки.. Забудь о макросах.. Нема их... фсе.. И вообще, ты же на си переходил.. Я сейчас на асме и под пистолетом писать не буду.
я так для практики(разобрался уже в чем дело),сначало хотел на асеме написать потом на си,сейчас сяду писать отладочный модуль на жки подключая в шину i2c на си.Пускай асем труден и много времени надо,но зато он развивает мышление програмировая.Ведь попробуй умножить на асеме два числа(это надо хорошо подумать и понять),а на си написал умножить и все дела.Да я согласен если ты там на заказ делаеш и время мало дают,конкуренция у вас то на си лучше,но я то для себя пока что делаю ради интереса.Но все таки перейду на си полностью,еще немного со структурами разбесь.(что то похоже на класс в языке С++)

urry если тебе задавать вопросы через электроную почту ответиш?
CERGEI1982 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MPLAB 488 Proteus, KiCAD и другие ECAD 6 31.10.2007 16:59
MPLAB ??? retas Отвлекитесь, эмбеддеры! 0 04.10.2007 19:54
mplab EVGENIY1962 Proteus, KiCAD и другие ECAD 18 10.07.2007 18:48
mplab EVGENIY1962 Proteus, KiCAD и другие ECAD 29 21.06.2007 05:32
AVR STUDIO, макросы Dozer Микроконтроллеры, АЦП, память и т.д 2 25.01.2006 21:20


Часовой пояс GMT +4, время: 23:44.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot