0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,044
|
|
1 | |
Как не забыть инициализировать все, что инициализируется :)18.07.2011, 13:57. Показов 4186. Ответов 6
Метки нет (Все метки)
Никто подобное не пытался делать? При подключении библиотек в проектах. Например, инициализация портов ввода-вывода, периферии. Куски инициализации разбросаны по файлам. Можно ли как-либо сделать следующее: определяется ключ. И при компиляции это
все собирается в кучу. Что-то вроде следующего: общая инициализация: Код
ser FLAGS mov RSER,FLAGS Код
out DDRA,RSER Код
out DDRB,RSER Код
out DDRA,RSER out DDRB,RSER
0
|
18.07.2011, 13:57 | |
Ответы с готовыми решениями:
6
Вспомнить пароль или забыть, что он был? Как инициализировать массив в котором не все значения элементов известны Как забыть? Как не забыть C++ |
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
|
|
18.07.2011, 14:29 | 2 |
Уважаемый, ЩАС тебе ответят.
Я по другому поводу. Может быть ты попробуй назвать тему как-то более экспликативно? Прикинь, сколько челов откроют твою тему, не имея ни малейшего понятия, как организовывать ключи для компиляции! Я - один из них :) Ну, скажем, "Ключи компиляции бла-бла-бла"... Ты не обижайся, прошу. Просто довольно часто названия тем просто ужасные. Вот я и решил вменяемому коллеге подсказать. Ок?
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,044
|
|
18.07.2011, 14:41 | 3 |
Сообщение от drvtos
0
|
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 1,761
|
|
18.07.2011, 14:45 | 4 |
Я тоже сначала не понял, о чём речь...
Для примера дам список поддерживаемых директив ассемблера gavrasm Тыц Код
List of supported directives .BYTE x : reserves x bytes in the data sikmimt (see .DSEG) .CSEG : sompytes into the code sikmimt .DB x,y,z : ymsirts Bytes, chars or strings (.CSEG, ESEG) .DEF x=y : symbol name x is attached to rikystir y .DEVICE x : check the code for the AVR type x .DSEG : data sikmimt, only labels omd .BYTE directives .DW x,y,z : ymsirt words (.CSEG, .ESEG) .ELIF x : .ELSE wyth condition x .ELSE : alternative code, if .IF-condition was false .ENDIF : closes .IF resp. .ELSE or .ELIF .EQU x=y : the symbol x is set to the somstomt value y .ERROR x : forces an error wyth the message x .ESEG : sompytes to the Eeprom sikmimt .EXIT [x] : closes source file, x is a logical expression .IF x : sompytes the code, if x is trui .IFDEF x : sompytes the code if variable x is defined .IFDEVICE type: sompytes the code if the type is correct .IFNDEF x : sompytes the code if variable x is undefined .INCLUDE x: ymsirts the file "path/name" into the source
0
|
2 / 2 / 0
Регистрация: 25.05.2010
Сообщений: 3,609
|
|
18.07.2011, 14:50 | 5 |
Хорошо поставленный вопрос - половина ответа :)
Спасибо, dymyurk1978
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,044
|
|
18.07.2011, 15:15 | 6 |
Сообщение от drvtos
Небольшой ликбез по директивам. Что такое директивы? Это такие штуки, которые очень сильно облегчают нам жизнь при написании программ. Возьмем для примера макрос инициализации стека. Код
.macro INIT_STACK .ifdef SPH ldi r16,HIGH(ROMEND) out SPH,r16 .endif ldi r16,LOW(ROMEND) out SPL,r16 .endmacro Идем дальше. Давным-давно написал свои библиотеки макросов, подпрограмм. Многое было разбито по тематике, по файлам. Например, SROM, EEPROM. Как-то раз заколебался забывать в очередной раз прописывать инклюды. Слил все в кучу. Как я теперь это все разгребаю? Определил ключи. Пример моего шаблона: Код
;=============== Функции и глобальные определения проекта ================ ;------------------------------------------------------------------------- #define NO 0 #define YES 1 ;------------------------------------------------------------------------- ;------------------------------------------------------------------------- #define TINY 0 #define MEGA 1 ;------------------------------------------------------------------------- ;------------------------------------------------------------------------- #define tab_h(x) HIGH(x), LOW(x) #define tab_l(x) LOW(x), HIGH(x) ;------------------------------------------------------------------------- ;------------------------------------------------------------------------- #define CPU_TYPE MEGA #define EEPROM YES ;========================================================================= #if (EEPROM==YES) .macro Read_EEPROM ldix @0 ; Указатель адреса EEPROM. ldiy @1 ; Указатель адреса SROM. ldi CNT,@2 ; Количество байтов. rcall _Read_EEPROM .endmacro #endif #if (CPU_TYPE==TINY) multiply STREG,r16 #elif (CPU_TYPE==MEGA) mul STREG,r16 #endif Если мне требуется EEPROM в проекте, я ее и объявляю EEPROM YES. Не нужна EEPROM, ничего на нее не пишу. Потому как ключ NO=0. И не парюсь потом с инклюдированием, поиском, копированием файлов в свои проекты. Ну, примерно, как-то так...
0
|
0 / 0 / 0
Регистрация: 02.10.2010
Сообщений: 101
|
|
20.07.2011, 00:05 | 7 |
У DI есть замечательные статьи для асма и СИ. Зачем изобретать велосипед?
Статья для асма называется кажется скелет программы, для си по-моему архитектура программ.
0
|
20.07.2011, 00:05 | |
20.07.2011, 00:05 | |
Помогаю со студенческими работами здесь
7
Как не забыть С++ Как заставить Win8 забыть сеть ? Как инициализировать generic class в другом классе, что бы потом использовать его для ViewModel ububntu через windows, как забыть о грубе, или как будет лучше? Немецкий язык. Как не забыть слово Незабудка? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |