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

ИНЖЕНЕРНЫЕ РЕШЕНИЯ 26 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 8 2021 возможное максимальное значение. Если они сравняются, то выполнит- ся IF-THEN – условие превышения, и на экране сформируется сообщение о превышении размера программы. Дополнительно прозвучит звуковой тревожный сигнал, и программа пре- кратит работу. Все слова форт-ассемблерных команд МК доступны для модифи- кации, что удобно при переходе к другим типам МК. Вторая строка данного примера определяется ана- логично по тому же цепочному прин- ципу поиска. Описание цепочной структуры, т.е. определения форт-слов, показано в порядке последовательности работы. В тексте программы определения расположены в обратном порядке, т.е. 2 строки примера завершают определе- ния. Первым определяется переменная ORG , затем TEST_ORG_COMP и так далее. Завершает определение в нашем при- мере bcf . На данном примере показано, что форт-слова допускают любую функ- цию или действие: ● исполняемое действие; ● компиляция в область памяти; ● указатель на переменную и значение. Все форт-слова имеют цепочную связь, которая позволяет определить назначение, состав форт-слова, усло- вия и возможности в работе. Пример 3. При отсутствии сигналов по шине 1-Wire более 2 секунд выполняется сброс ключей шины MAIN и AUX В исходной микросхеме DS2409 тако- го режима нет, но поскольку существу- ет вероятность сохранения подключе- ния коммутируемой шины из-за помех при передаче, автор счёл необходимым добавить такую функцию. Используются три общих регистра, которые определены так: 0x26 equ time_n0 \ счетчик 0r вре- мени паузы, 0x27 equ time_n1 \ счетчик 1r вре- мени паузы, 0x28 equ time_n2 \ счетчик 2r време- ни паузы; итого 3 байта 2r1r0r Интервал отсутствия сигнала на шине 1-Wire задаётся в форт-слове UST_ TIME_IZM_PAUSE_1W# и оформлен под- программой. \ задаём значения подсчета в пере- менные регистры, начиная с младше- го байта 0x40 movlw \ тут можно и FF или 0 time_n0 movwf \ счётчик 0r време- ни паузы 0x4B movlw \ time_n1 movwf \ счётчик 1r време- ни паузы 0x04 movlw \ time_n2 movwf \ счётчик 2r времени паузы 04 4b 40 = 2 cек; если сигнала нет, выдается уст. 0 main aux В форт-слове ST_RST_1W нахо- дится участок, который отвечает за фиксацию начала сигнала RST. Там и расположен учёт отсутствия сигнала. (ждём перепада до --\__ и если очень долго ждём, то выдаём сигнал уст. aux=main=0, т.е. выкл.) ORG @ m1 ! porta 0x3 btfss \ про- верка на 0 gp3 выв.4 in-out-1w пропу- стить, если =1 m1 goto \ нет 1 далее, есть 0 возврат m1 1 UST_TIME_IZM_PAUSE_1W# (подпро- грамма уст. значения для паузы) O RG @ m2 ! 1 IZM_TIME_PAUSE_1W# (подсчёт по отниманию 1 и, если =0, то выкл. aux-main) porta 0x3 btfsc \ проверка на 0 gp3 выв.4 in-out-1w; пропустить, если =0 m2 goto \ нет 0 далее, есть 1 возврат m2 Если программа ждёт сигнала 0, то она «циклится», и выполняется подпро- грамма IZM_TIME_PAUSE_1W# . Поясним определение подпрограм- мы: \ отнимаем 1 и смотрим, пока не будет всё 0, тогда выдаём сигнал выклю- чения main aux 0x1 movlw \ значение 1 для вычита- ния в общий регистр time_n0 0xF decfsz \ декремент вычесть 1 из f и пропустить, когда будет 0, т.е. к след. разряду m10 goto \ уходим time_n1 0xF decfsz \ декремент вычесть 1 из f и пропустить, когда будет 0, т.е. к след. разряду m10 goto \ уходим time_n2 0xF decfsz \ декремент вычесть 1 из f и пропустить, когда будет 0, т.е. выполним выкл. m10 goto \ уходим \ или выключаем main aux в случае всех 0 в time_n0 n1 n2 porta 0x1 bcf (b'001м-x1аw' м/4/= а/1/= w/0/= - выбор bsf=1 bcf=0 нет aux) porta 0x4 bcf (b'001м-x1аw' м/4/= а/1/= w/0/= - выбор bsf=1 bcf=0 нет main) 1 UST_TIME_IZM_PAUSE_1W# (подпро- грамма уст. значения для паузы) ORG @ m10 ! (выход) Таким образом, при «зависании» или ожидании сигнала RST сброса от веду- щего шины 1-Wire периодически выда- ётся сигнал 0 на управляемые транзи- сторы для их закрытия. Необходимо обратить внимание, что большая точность данного интер- вала не требуется, и можно значения для регистров time_n0 time_n1 не уста- навливать. Время определяет регистр time_n2 , и примерное значение 1 равно задержке в 0,5 секунды. Более подроб- ное изучение Форт-ассемблера выхо- дит за рамки данной темы. Необходи- мо отметить, что в тексте программы имеются комментарии и пояснения по функционированию. Выводы Предложенная схема и програм- ма замены специальной микросхемы на универсальный микроконтроллер позволяет снизить монополизм про- изводителей и фирм, поставляющих электронные компоненты. Универсальный микроконтроллер создаёт возможность формирования новых функций к работающим систе- мам измерений без их существенной модификации. Использование языкапрограммирова- ния FORTH и подготовленного на этом языке FORTH-ASSEMBLERпозволяет лег- копереходитьна другие типымикрокон- троллеровитакже создаватьпрограммыс хорошейоптимизациейкодов длямикро- контроллеров смалымобъёмомпамяти. Язык программирования FORTH, кро- ме Windows, работает на всех основ- ных типах операционных систем (Linux, Unix, Android и т.д.), существу- ющих в настоящее время, что позволя- ет использовать данную программу на любых компьютерах. Литература 1. Описание DS2409 шины 1-Wire // URL: http://www.gaw.ru/html.cgi/txt/ic/ Maxim/1-Wire/start.htm. 2. Описание 12F765 // URL: http:// www.microchip.ru/files/d-sheets-rus/ PIC12F629_675.pdf. 3. Каталог программы, платы: URL: http://90.189.213.191:4422/doc_sh/ toguchin_2020n/test/ и копия в «облач- ном хранилище»: URL: https://disk.yandex. ru/d/aKAo_DVD1LzrUQ. 4. ОписаниеязыкаФортspf4.exe,авторверсииА. Черезов // URL: http://www.forth.org.ru/.

RkJQdWJsaXNoZXIy MTQ4NjUy