ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
12 июля
429804 Топик полностью
mazur (03.08.2013 09:21 - 09:24, просмотров: 97) ответил SciFi на Вопрос слишком расплывчатый.
Например, у меня таймерная служба. На асме я в файле таймерной службы создал макрос автоматического добавления порядкового номера таймера и автоматического добавления блока в ОЗУ. При компиляции создаются порядковые номера и очередь таймеров. Размер очереди зависит от списка таймеров. Что я хочу, на си создавать независимые файлы. Скажем, в модуле у меня 2 таймера, вот и хотелось бы, чтобы таймеры определять в файлах, а не в одном месте, потому как, бывает, забываешь добавлять в список таймеры. И не всегда помнишь, сколько у тебя таймеров. А так, сделал макрос на си и при компиляции все делается автоматом. На асме я сделал так: //======================================================================== .equ SYS_TICK = 1 // Период системного таймера 1 мс //======================================================================== //======================================================================== .equ ST_SIZE = 2 //======================================================================== //======================================================================== //--------------------- Флаги системных таймеров ------------------------- Def_Flag SYS_TICK_FLG //------------------------------------------------------------------------ //------------------------------------------------------------------------ .equ ST_UNLOCK_FLG = 0 // Флаг активности таймера. .equ ST_TIME_OUT_FLG = 1 // Время вышло. //======================================================================== .dseg //======================================================================== //-------------------- Очередь системных таймеров ------------------------ .set NUM_ST = -1 .set ST_QUANTITY = 0 .macro Def_Sys_Timer .set NUM_ST = (NUM_ST+1) .set ST_QUANTITY = (ST_QUANTITY+1) .set @0 = NUM_ST .message "System Timer Defined!" .endmacro Def_Sys_Timer ST_DRV_LCD Def_Sys_Timer ST_KBD Def_Sys_Timer ST_PROC_GAME_1 Def_Sys_Timer ST_PROC_GAME_2 ST_CNT_QUEUE: .byte ST_QUANTITY*(ST_SIZE+1) //========================================================================