реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> вопрос, по АВР студио
skilful
сообщение Jul 26 2007, 11:31
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



Всем привет! Можно ли в Студии при написании на асме сделать внешние процедуры - чтобы они хранились в другом файле? Ну то есть написал подрограммку и есть параметр, который ей передается, а сама подпрограмма находится во внешнем файле. А то на асме бывают листинги большими smile.gif
Go to the top of the page
 
+Quote Post
Dima_Ag
сообщение Jul 26 2007, 11:36
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 156
Регистрация: 12-09-06
Пользователь №: 20 304



Цитата(skilful @ Jul 26 2007, 15:31) *
Всем привет! Можно ли в Студии при написании на асме сделать внешние процедуры


в студии можно сделать исходник, состоящий из нескольких асм файлов.

Для этого в основном файле код лучше не размещать, а разместить только команды типа

.include "my_file1.asm"
.include "my_file2.asm"
.....

И так все файлы, которые должны быть в проекте.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Jul 26 2007, 20:27
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(Dima_Ag @ Jul 26 2007, 14:36) *
Для этого в основном файле код лучше не размещать, а разместить только команды типа

.include "my_file1.asm"
.include "my_file2.asm"
.....

И так все файлы, которые должны быть в проекте.


Честно говоря этого не понял. Почему лучше не размещать?

Я не вижу проблем. Например у вас идёт основная прога в файле, а в конце размещено несколько вложений с таблицами. Или идёт основная прога а вместо прерываний - вложенный файл. И п/программы отдельным файлом. По-моему вполне стандартный подход. Кроме того вы уверены, что где ваш файл будет помещён - туда и будет скомпилирован.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jul 26 2007, 20:48
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата
Для этого в основном файле код лучше не размещать, а разместить только команды типа

очень сомнительное предложение.
в основном файле как минимум можно описать таблицу векторов прерываний, инициализацию девайса, и организовать бесконечный цикл.
Go to the top of the page
 
+Quote Post
Dima_Ag
сообщение Jul 27 2007, 06:40
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 156
Регистрация: 12-09-06
Пользователь №: 20 304



Цитата(defunct @ Jul 27 2007, 00:48) *
очень сомнительное предложение.
в основном файле как минимум можно описать таблицу векторов прерываний, инициализацию девайса, и организовать бесконечный цикл.


Размещать код в основном файле, или нет - дело вкуса и привычки.
Мне, например, нравится делать так, как я уже выше описал.
Кому-то может быть удобным Ваш подход.
Go to the top of the page
 
+Quote Post
add
сообщение Jul 27 2007, 07:47
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



Цитата
Всем привет! Можно ли в Студии ...


Всегда делаю так, как в хелпе.Очень удобно разбивать на файлы когда много девайсов. Получается своеобразная библиотека функций. Вот пример:

Код
...
.include    "macro.inc"
.include    "cfg_ports.inc"
.include    "delay_.inc"
.include    "leds.inc"
.include    "lcd_coder.inc"        
.include    "soft_uart.inc"
.include    "adc_m8535.inc"
.include    "AD9764.inc"
.include    "pca9555.inc"
.include    "spi_ad5570.inc"
.include    "commun.inc"
...

(Включаемые в проект файлы с расширением *.inc)


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post
skilful
сообщение Jul 27 2007, 10:34
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 186
Регистрация: 23-04-06
Из: Сочи
Пользователь №: 16 411



thX 2 all smile.gif
Go to the top of the page
 
+Quote Post
demaven
сообщение Jul 29 2007, 04:43
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 108
Регистрация: 10-05-05
Из: Киргизия Бишкек
Пользователь №: 4 886



необходимо только помнить, что текс файла, вставляемого по инклуде, будет вставлен в листинг именно в место, где стоит инклуде, и соответствующим образом откомпилирован.
пример кода:
.include "M8def.inc"
.include "opisanie.asm"
;-----------------------------------
; векторы прерываний
;-----------------------------------
.cseg
.org $000
rjmp RESET ;старт по включению питания
.org $001
rjmp SERV_INT0 ;прерывание от нулевого ридера
;добавлена обработка прерываия 1 для первого ридера
.org $002
rjmp SERV_INT1;прерывание от первого ридера
.org $009
...
...
.include "macros.asm"
...
://///// Подпрограммы ///
SendCmd_2:
cbi PORTC,DIN_2
sbi PORTC,SCLK_2
sbi PORTC,DIN_2
cbi PORTC,SCLK_2
...
... ret

.include"subDS1307.ASM"
.include "init.asm"
.include "initDS1307.asm"

;///////////////////////////////////
; основная программа
;///////////////////////////////////
dalshe:

.include "initHTRC.asm"
...
Go to the top of the page
 
+Quote Post
add
сообщение Jul 29 2007, 06:51
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 345
Регистрация: 10-10-05
Пользователь №: 9 459



Цитата
необходимо только помнить, что текс файла, вставляемого по инклуде, будет вставлен в листинг именно в место, где стоит инклуде, и соответствующим образом откомпилирован

Уточню, что еще и в той последовательности в которой перечислены. т.е. если ,к примеру,"macros.inc" записать последним файлом в списке включаемых, то макросы для файлов выше по списку "видны" не будут. компилятор выдаст ошибку. В связи с этим нужно внимательно размещать определения в разных файлах, или использовать отдельный файл для всех макросов и ставить его в начало списка (первым в коде).


--------------------
Если задачу можно решить, то не надо тревожиться. А если нельзя решить, то тревожиться бесполезно.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2024 - 04:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01438 секунд с 7
ELECTRONIX ©2004-2016