Рисунок 19 – Не рекомендуемые места установки извещателей
Монтаж поверхностных пьезоэлектрических извещателей, предназначенных для блокировки потолочных перекрытий, полов и стен помещений от пролома молотком, ломом или другим тяжелым предметом, производится в местах, защищенных от механических повреждений и доступа посторонних лиц из расчета 75 - 100% охвата охраняемой площади. При этом должно учитываться количество находящихся в охраняемом помещении ценностей.
При монтаже извещателей, блокирующих оконные и дверные проемы в деревянной обвязке, следует применять, как правило, скрытую их установку. (В строго обоснованных случаях допускаются отступления от данного правила.)
Монтаж электропроводок технических средств сигнализации.
Монтаж электропроводок технических средств сигнализации должен выполняться в соответствии с проектом (актом обследования), типовыми проектными решениями и с учетом требований СНиП 2.04.09-84, СНиП 3.05.06-85*, ПУЭ, ВСН 600-81, "Общей инструкции по строительству линейных сооружений городских телефонных сетей", "Инструкции по монтажу сооружений и устройств связи, радиовещания и телевидения".
Соединения и ответвления проводов и кабелей должны производиться в соединительных или распределительных коробках способом пайки или с помощью винтов.
Прокладка незащищенных проводов и кабелей через помещения, которые не подлежат защите, должна производиться скрытым способом или в металлических тонкостенных трубах.
При прокладке скрытым способом провода и кабели сигнализации должны быть проложены в отдельной штробе.
Прокладка проводов и кабелей по стенам внутри охраняемых зданий должна производиться на расстоянии не менее 0,1 м от потолка и, как правило, на высоте не менее 2,2 м от пола. При прокладке проводов и кабелей на высоте менее 2,2 м от пола должна быть предусмотрена их защита от механических повреждений.
Технические средства сигнализации должны быть заземлены
Устройства заземления (зануления) должны выполняться в соответствии с требованиями СНиП 3.05.06-85, ПУЭ, технической документации предприятий – изготовителей.
3. Разработка программного обеспечения для микроконтроллера
3.1 Выбор инструментальных средств (среда Ассемблер)
Язы́к ассе́мблера (в отечественных источниках, также автокод) — язык программирования низкого уровня, мнемонические команды которого (за редким исключением) соответствуют инструкциям процессора вычислительной системы. Трансляция программы в исполняемый машинный код производится ассемблером (от англ. assembler - сборщик) - программой-транслятором, которая и дала языку ассемблера его название.
Содержание языка Ассемблер.
Команды языка ассемблера один к одному соответствуют командам процессора, фактически, они представляют собой более удобную для человека символьную форму записи (мнемокод) команд и их аргументов. При этом одной команде языка ассемблера может соответствовать несколько команд процессора.
Кроме того, язык ассемблера позволяет использовать символические метки вместо адресов ячеек памяти, которые при ассемблировании заменяются на автоматически рассчитываемые абсолютные или относительные адреса, а также так называемые директивы (команды, не переводящиеся в процессорные инструкции, а выполняемые самим ассемблером).
Директивы ассемблера позволяют, в частности, включать блоки данных, задать ассемблирование фрагмента программы по условию, задать значения меток, использовать макроопределения с параметрами.
Каждая модель (или семейство) процессоров имеет свой набор команд и соответствующий ему язык ассемблера. Наиболее популярные синтаксисы — Intel-синтаксис и AT&T-синтаксис.
Существуют компьютеры, реализующие в качестве машинного язык программирования высокого уровня (Forth, Lisp, Эль-76); фактически, в них он является языком ассемблера.
Достоинства языка Ассемблер.
При достаточной квалификации программиста, язык ассемблера позволяет писать самый быстрый и компактный код. Возможно, даже лучше, чем генерируемый трансляторами языков более высокого уровня.
Если код программы достаточно большой, данные, которыми он оперирует, не помещаются целиком в регистрах процессора, то есть частично или полностью находятся в оперативной памяти, то искусный программист, как правило, способен значительно оптимизировать программу по сравнению с высокоуровневыми трансляторами по одному или нескольким параметрам: скорость работы (за счёт оптимизации вычислений и/или более рационального обращения к ОП, перераспределения данных), объём кода (в том числе за счёт эффективного использования промежуточных результатов).
Обеспечение максимального использования специфических возможностей конкретной платформы, что также позволяет создавать более эффективные программы с меньшими затратами ресурсов.
При программировании на языке ассемблера возможен непосредственный доступ к аппаратуре, в том числе портам ввода-вывода, регистрам процессора и др.
Язык ассемблера применяется для создания драйверов оборудования и ядра операционной системы.
Язык ассемблера используется для создания «прошивок» BIOS.
С помощью языка ассемблера создаются компиляторы и интерпретаторы языков высокого уровня, а также реализуется совместимость платформ.
Существует возможность исследования других программ с отсутствующим исходным кодом с помощью дизассемблера.
Недостатки языка Ассемблер.
В силу машинной ориентации («низкого» уровня) языка ассемблера человеку сложнее читать и понимать программу на нём по сравнению с языками программирования высокого уровня; программа состоит из слишком «мелких» элементов — машинных команд, соответственно, усложняются программирование и отладка, растёт трудоёмкость, велика вероятность внесения ошибок.
Требуется высокая квалификация программиста. Код на ассемблере, написанный неопытным программистом, обычно оказывается хуже сгенерированного компилятором.
Как правило, меньшее количество доступных библиотек по сравнению с современными индустриальными языками программирования.
Отсутствует переносимость программ на компьютеры с другой архитектурой и системой команд.
Применение языка Ассемблер.
Исторически можно рассматривать язык ассемблера как второе поколение языков программирования ЭВМ (если первым считать машинный код). Недостатки языка ассемблера, сложность разработки на нём больших программных комплексов привели к появлению языков третьего поколения — языков программирования высокого уровня (Фортран, Лисп, Кобол, Паскаль, Си и др.). Именно языки программирования высокого уровня и их наследники в основном используются в настоящее время в индустрии информационных технологий. Однако языки ассемблера сохраняют свою нишу, обуславливаемую их уникальными преимуществами в части эффективности и возможности полного использования специфических средств конкретной платформы.
На языке ассемблера пишутся программы или фрагменты программ, для которых критически важны:
быстродействие (драйверы, игры);
объем используемой памяти (загрузочные секторы, встраиваемое (англ. embedded) программное обеспечение, программы для микроконтроллеров и процессоров с ограниченными ресурсами, вирусы, программные защиты).
С использованием программирования на языке ассемблера производятся:
Оптимизация критичных к скорости участков программ, написанных на языке высокого уровня, таком как C++. Это особенно актуально для игровых приставок, имеющих фиксированную производительность, и для мультимедийных кодеков, которые стремятся делать менее ресурсоёмкими и более популярными.
Создание операционных систем (ОС). ОС часто пишут на Си, языке, который специально был создан для написания одной из первых версий UNIX. Аппаратно зависимые участки кода, такие как загрузчик ОС, уровень абстрагирования от аппаратного обеспечения (hardware abstraction layer) и ядро, часто пишутся на языке ассемблера. Ассемблерного кода в ядрах Windows или Linux совсем немного, поскольку авторы стремятся к переносимости и надёжности, но, тем не менее, он присутствует. Некоторые любительские ОС, такие как MenuetOS, целиком написаны на языке ассемблера. При этом MenuetOS помещается на дискету и содержит графический многооконный интерфейс.
Программирование микроконтроллеров (МК) и других встраиваемых процессоров. По мнению профессора Таненбаума, развитие МК повторяет историческое развитие компьютеров новейшего времени. На сегодняшний день для программирования МК весьма часто применяют язык ассемблера. В МК приходится перемещать отдельные байты и биты между различными ячейками памяти. Программирование МК весьма важно, так как, по мнению Таненбаума, в автомобиле и квартире современного цивилизованного человека в среднем содержится 50 микроконтроллеров.
Создание драйверов. Некоторые участки драйверов, взаимодействующие с аппаратным обеспечением, программируют на языке ассемблера. Хотя в целом в настоящее время драйверы стараются писать на языках высокого уровня в связи с повышенными требованиями к надёжности. Надёжность для драйверов играет особую роль, поскольку в Windows NT и Linux драйверы работают в режиме ядра. Одна ошибка может привести к краху системы.
Создание антивирусов и других защитных программ.
Написание трансляторов языков программирования.
Связывание программ на разных языках.
Поскольку на языке ассемблера часто разрабатываются только фрагменты программ, их необходимо связывать с остальными частями программной системы, написанными на других языках программирования.
Это достигается двумя основными способами:
На этапе компиляции — вставка в программу ассемблерных фрагментов (англ. inline assembler) с помощью специальных директив языка (в частности, данный способ поддерживается языками программирования Си и Delphi), в том числе написание функций на языке ассемблера. Способ удобен для несложных преобразований данных, но полноценного ассемблерного кода, с данными и подпрограммами, включая подпрограммы с множеством входов и выходов, не поддерживаемых высокоуровневыми языками, с его помощью сделать нельзя.