Современная электроника №8/2021

ИНЖЕНЕРНЫЕ РЕШЕНИЯ 25 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 8 2021 во – это начало комментария до конца строки, и также комментарии заклю- чены в круглые скобки внутри форт- слов. Открыть файл test.f с помощью файла 100_spf4.exe , т.е. выполнить программу. Программа выполнится, и в окне консоли отобразится одина- ковый ряд натуральных чисел в систе- ме счисления 16…2. Компилятор рабо- тает в Windows/XP/7/8/10 и доступен без ограничений [4]. Пример 2. Формирование низкоуровневых команд в конфигурации микроконтроллера В форт-слове START_BLOK опреде- ляются используемые подпрограммы и настройки МК. Например, две следующие строки определяют режим установки порта МК: status 5 bcf (выбор банка 0 бит 5=0) porta clrf (установка и сброс пор- та, выполняется инициализация режи- ма фиксации сигналов) Поясним определение первой строки: status – специальный регистр опре- делён как 0x03 equ status , согласно тех. описанию на МК; 5 – цифра, определяющая, какой бит установить в 0 для регистра status ; bcf – команда выполнения установ- ки бита в указанном регистре. Поясним определение bcf: : bcf (status Ni – компилируем в область памяти команду по org уст. бита в 0) || status NI || (локальные перемен- ные) -> NI -> status (сохранили в локаль- ных переменных) 0x1000 NI 0x80 * + status + (Kkm – получили код команды) WRITE_ORG (Kkm – запись и сдвиг на +1 и проверка на превышение); В определяемом слове bcf слово status – это локальная переменная, а не специальный регистр. И значение локальной переменной приходит из входного стека, в нашем случае это 3 и 5. Далее выполнется обработка для получения кода команды. Форт-слово WRITE_ORG записывает этот код в область памяти. Поясним определение WRITE_ORG : : WRITE_ORG (Kkm– запись и сдвиг на +1 и проверка на превышение) 0x100 /MOD SWAP 0x100 * + (пере- вернули мл. и ст. байты) ORG 4+ @ ORG @ 2* + W! (записали словом в 2 байта) ORG 1 + ! (переходк след. ячейке записи) TEST_ORG_COMP (тестирование на пре- вышение кол-ва компиляции ячеек); В определяемом слове WRITE_ORG арифметические операции подготовки кода и сдвиг на +1 байт счетчика кода в переменной ORG . Поясним определение TEST_ORG_ COMP : : TEST_ORG_COMP (тестирование на превышение кол-ва компиляции ячеек) ORG @ ORG 2 4* + @ = IF UST_ATR_ LIM_CMD (установка атрибутов цветно- сти знаков для тревоги) CR ." превышен код компиляции 0x3FF FORTH-ACEMBLERA pic12f629 " (текст для тревоги) 5 0 BEGIN BEEP2 0x100 PAUSE exBEEP4 1+ 2DUP = UNTIL 2DROP (цикл 5 звуковых сигналов тревоги) BYE (прекращение работы програм- мы) THEN ; Используемая переменная ORG содер- жит значения текущей компиляции и

RkJQdWJsaXNoZXIy MTQ4NjUy