; ; файл объявленных имен, бит и констант (шаблон) ; ;------------------------------------------------------ ; variable definitions ;(таблица обьявленных имен) ;______________________________________________________ ;таблица обьявленных имен - пользовательские константы ; /equ, set/ start_PSP equ 0x90 ; адрес начала секции программного стека "команда indf,f/indf,w" ; при fsr=(psp_u) и IRP=1 всего 96 байт (0х190-0x1EF) ; создавать какие-либо секции в области 0х190-0x1EF обычным способом без коррекции 16f876a_g.lkr ; не допускает линкер (по умолчанию область, зарезервированная за дебаггером)!!! w equ .0 f equ .1 mask8 equ .8 mask24 equ .24 mask60 equ .60 mask100 equ .100 mark1 equ .50000 ; константа досчета таймера 1 ring0 equ .50 ; константа досчета счетчиков досчета генераторов секунд, второй круг mabod0 equ B'00000001' ; позиционная маска бодун0 mabod1 equ B'00000010' ; позиционная маска бодун1 mabod2 equ B'00000100' ; позиционная маска бодун2 mabod3 equ B'00001000' ; позиционная маска бодун3 wh_secp equ 0x4B ; адрес позиции единиц секунд "по умолчанию" frame0 equ 0 ; адрес начала ОЗУ верхней строки дисплея frame1 equ 0x40 ; адрес начала ОЗУ нижней строки дисплея left_bp equ 0 ; смещение размещения адреса соседнего левого субменю от базового FSB right_bp equ 1 ; смещение размещения адреса соседнего правого субменю от базового FSB main_bp equ 2 ; смещение размещения адреса прикладного модуля текущего FSB tabl_bp equ 3 ; смещение размещения начального адреса текущего табличного селектора target_bp equ 4 ; смещение размещения начального адреса текущего модуля target retter_bp equ 5 ; смещение размещения начального адреса текущего модуля retter prefekt_bp equ 6 ; смещение размещения элемента prefekt Clr_Display equ 1 ; команда "Write “00H” to DDRAM and set DDRAM address to “00H” from AC" Return_Home equ 2 ; команда "Set DDRAM address to “00H” from AC and return cursor to ; its original position if shifted. The contents of DDRAM are not changed ;______________________________________________________ ;таблица обьявленных имен - переназначение регистров РОН ; /res/ ; ; udata_shr - разделяемые данные, доступные из всех банков памяти ; частный случай - данные, приведенные к адресам РОН общего доступа ; ; example of using Shared Uninitialized Data Section shadow_temp UDATA_SHR 0x70 ; 0x70 - 0x7F = 16 byts w_temp RES 1 ; variable used for context saving status_temp RES 1 ; variable used for context saving pclath_temp RES 1 ; variable used for context saving bodun_flags res 1 ; g_flags0 общие флаги системы g_flags1 res 1 ; общие флаги системы g_flags2 res 1 ; общие флаги системы tabl_offset res 1 ; текущее смещение для ; псевдокоманд ijmp/icall tabl_bpl res 1 ; базовый адрес начала таблицы для ijmp/icall tabl_bph res 1 ; tmp0 res 1 ; tempo registers tmp1 res 1 ; tempo registers tmp2 res 1 ; tempo registers tmp3 res 1 ; tempo registers tmp4 res 1 ; tempo registers tmp5 res 1 ; tempo registers tmp6 res 1 ; tempo registers ; ; udata - данные разноименных секций стандартного расположения ; ;-------------------------------------------------- ; clockers udata 0x110 ; ; область РВХ кода символа строки вывода для текущего окна дисплея disp0 res 1 ; файл СОЗУ кода символа дисплея (16 байт), позиция 0 disp1 res 1 disp2 res 1 disp3 res 1 disp4 res 1 disp5 res 1 disp6 res 1 disp7 res 1 disp8 res 1 disp9 res 1 dispA res 1 dispB res 1 dispC res 1 dispD res 1 dispE res 1 dispF res 1 ; файл СОЗУ кода символа дисплея (16 байт), позиция F ; ;-------------------------------------------------- ; ; область универсального РВХ строки вывода текущего окна дисплея unibuf0 res 1 ; файл универсального буфера (16 байт), позиция 0 unibuf1 res 1 unibuf2 res 1 unibuf3 res 1 unibuf4 res 1 unibuf5 res 1 unibuf6 res 1 unibuf7 res 1 unibuf8 res 1 unibuf9 res 1 unibufA res 1 unibufB res 1 unibufC res 1 unibufD res 1 unibufE res 1 unibufF res 1 ; файл универсального буфера (16 байт), позиция F ; ;-------------------------------------------------- ; ; область рабочих регистров обработчика ввода/вывода дисплея ; tmp_datas res 1 ; данные для программы обмена с дисплеем mask_dispio res 1 ; маска текущего режима модулей чтения/записи дисплея refram res 1 ; смещение адреса первой позиции окна вывода относительно ; начала ОЗУ строки дисплея kursadr res 1 ; буфер текущего адреса курсора (абсолютный = frameN+refram) cntx res 1 ; счетчик формирователя программной задержки sek_spo res 1 ; РВХ стартпозиции вывода показаний главных часов cnt_ssdat res 1 ; счетчик данных в строке ; ;-------------------------------------------------- ; ; область регистров программ-обработчиков селектора клавиатуры skp_flags res 1 ; флаги диспетчера задач askm_s0 res 1 ; РВХ кода символа единиц секунд askm_s1 res 1 ; РВХ кода символа десятков секунд askm_m0 res 1 ; РВХ кода символа единиц минут askm_m1 res 1 ; РВХ кода символа десятков минут askm_h0 res 1 ; РВХ кода символа единиц часов askm_h1 res 1 ; РВХ кода символа десятков часов ; ;-------------------------------------------------- ; ; область регистров программ-обработчиков главных часов ; и секундомера/таймера обратного отсчета ; correcti res 2 ; значение константы досчета генератора Т1 rout_clk res 1 ; счетчик второго круга основного генератора секунды gct_sec res 1 ; счетчик секунд главных часов gct_min res 1 ; счетчик минут главных часов gct_hrs res 1 ; счетчик часов главных часов ubuoun0 res 3 ; уставки бодуна 0 (секунды:минуты:часы) ubuoun1 res 3 ; уставки бодуна 1 (секунды:минуты:часы) ubuoun2 res 3 ; уставки бодуна 2 (секунды:минуты:часы) ubuoun3 res 3 ; уставки бодуна 3 (секунды:минуты:часы) rout_stc res 1 ; счетчик второго круга генератора секунды таймера/секундомера stc_sec res 1 ; счетчик секунд таймера/секундомера stc_min res 1 ; счетчик минут таймера/секундомера stc_hrs res 1 ; счетчик часов таймера/секундомера utmo_sec res 1 ; уставка таймера обратного отсчета, секунды utmo_min res 1 ; уставка таймера обратного отсчета, минуты utmo_hrs res 1 ; уставка таймера обратного отсчета, часы ; ;-------------------------------------------------- ; udata_ovr - данные одноименных секций в одной и той же области (взаимозатирка) ;______________________________________________________ ; ;таблица обьявленных имен - секция флагов пользователя ; /equ, set/ ; dats7 equ RB7 ; линия данных дисплея d7/d3 dats6 equ RB6 ; линия данных дисплея d6/d2 dats5 equ RB5 ; линия данных дисплея d5/d1 dats4 equ RB4 ; линия данных дисплея d4/d0 rs_bit equ RB3 ; линия данные/команда (1/0) интерфейса дисплея rw_bit equ RB2 ; линия чтение/запись (1/0) интерфейса дисплея e_bit equ RB1 ; линия строба (_/-\_) интерфейса дисплея sens4 equ RB0 ; ЛВК кнопка s4 ;----------- ------------- ------------ sens3 equ RC5 ; ЛВК кнопка s3 sens2 equ RC4 ; ЛВК кнопка s2 sens1 equ RC3 ; ЛВК кнопка s1 sens0 equ RC2 ; ЛВК кнопка s0 ;----------- ------------- ------------ out_line equ RA5 ; линия управления выходным сигналом, активный уровень=0 ;----------- ------------- ------------ gcl_en equ 0 ; int_status.0 обработка вывода данных гл.часов и бодунов разрешена gcl_sec_en equ 1 ; int_status.1 флаг отображение секундомера гл.часов разрешено secmetr_en equ 2 ; int_status.2 работа секундомера разрешена tmdclk_en equ 3 ; int_status.3 работа таймера обратного отсчета разрешена cor_quest equ 4 ; int_status.4 требование замены константы досчета генератора Т1 tik_lvk equ 5 ; int_status.5 флаг продвижки сканера ЛВК tik_clk equ 6 ; int_status.6 флаг требования обработчика вывода информации на дисплей ; главных часов + обработчика уставок бодунов tik_stm equ 7 ; int_status.7 флаг требования обработчика вывода информации на дисплей ; секундомера/таймера ;----------- ------------- ------------ tic_sens equ 0 ; g_flags0.0 флаг интервала опроса ЛВК ;----------- ------------- ------------