bsuir.info
БГУИР: Дистанционное и заочное обучение
(файловый архив)
Вход (быстрый)
Регистрация
Категории каталога
Другое [49]
Форма входа
Поиск
Статистика

Онлайн всего: 19
Гостей: 19
Пользователей: 0
Файловый архив
Файлы » Радиотехника » Другое

ЦиМПУ, Генератор сигналов специальной формы контрольная номер 1.
Подробности о скачивании 14.05.2013, 14:43
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

Контрольная работа № 1
по ЦиМПУ
студента ФЗДО БГУИР

Минск 2010
Генератор сигналов специальной формы
Исходные данные:
1. Тип микроконтроллера – PIC-контроллер.
2. Вид генерируемых сигналов – прямоугольные импульсы с частотой 1 Гц.
3. Реализовать возможность цифровой установки и индикации длительности в пределах от 5 с до 7 с.
4. Цифровая индикация прошедшего времени.
5. Выдавать световой сигнал по окончании заданной выдержки времени.

Введение
В течение последних 20 лет методам проектирования цифровых устройств уделялось возрастающее внимание, и в настоящее время они входят в учебные программы большинства университетов и политехнических институтов. Сначала при проектировании использовались дискретные компоненты, но в последние 20 лет стали широко применяться схемы с малым и средним уровнями интеграции. Это позволило упростить процесс проектирования и свести его к задаче сборки устройств из интегральных схем. С появлением больших интегральных схем появилась возможность разрабатывать микропроцессоры. Можно выделить два альтернативных метода проектирования цифровых устройств, основанных на использовании схем «жесткой» логики и на применении микропроцессоров. Первый подход требует знания методов проектирования, изложенных в учебной литературе, в то время как второй подход является программным способом решения той же проблемы. На завершающей стадии анализа проектного задания необходимо выбрать один из этих двух подходов, используя экономический критерий.
Однако на практике при решении многих задач обычно сочетают оба подхода. Поэтому следует добиваться, что бы проектировщики обладали хорошими знаниями по булевой алгебре и умели применять её методы для решения задач проектирования цифровых устройств. Кроме того, проектировщик должен обладать глубокими знаниями методов программирования.
Развитие микроэлектроники и освоение производства интегральных микросхем в последнее двадцатилетие обусловило появление новых методов построения и конструирования электронной аппаратуры различного назначения, отличающейся малыми массой и габаритными размерами, а так же высокой надёжностью.
Одновременно происходит интенсивное внедрение цифровой техники, так как цифровая обработка сигналов обладает большими преимуществами по сравнению с аналоговой. Противоречие, существующее между повышенной сложностью цифровых устройств и требованиями к их надёжности, объёмно-весовым и другим эксплуатационным характеристикам, может удовлетворительно разрешить лишь интегральная технология.
Одними из широко применяемых элементов не только аналоговой, но и цифровой техники являются генераторы импульсов и пачек импульсов различной формы. Они используются в АВР, в блоках управления, ввода и вывода ЦВМ, в приборах телеметрических систем и централизованного контроля, в аппаратуре связи, радионавигационной и радиолокационной аппаратуре, для устройств автоматики, дискретного управления или проверки работы отдельных узлов схемы, в цифровых и цифроаналоговых измерительных приборах и т.д.
В подавляющем большинстве случаев от такого генератора не требуются рекордные параметры. Современная элементная база позволяет создать очень простой и недорогой генератор, обладающий в то же время достаточно неплохими параметрами.
Выбор и обоснование технических требований к устройству

Существует большое число вариантов построения генераторов, которые удовлетворяют различным требованиям и имеют те или иные достоинства и недостатки, что и определяет область их применения (простота схемы, удобство управления, экономическая эффективность и т.д.).
Схема генератора, изображённая на рисунке 1.1, обеспечивает при нажатии кнопки однократное формирование пачки до 15 импульсов (на схеме показаны только 10 кнопок). Для повторной генерации необходимо повторно нажать соответствующую кнопку. При этом происходит запись соответствующего двоичного числа в регистр предварительной установки счётчика DD2, и он начинает считать на вычитание до момента времени, пока на всех выводах не установится логический “0”. Логический “0” установится и на выходе DD1.4. Собственно генерация осуществляется элементами DD1.1 и DD1.2, синхронизацию осуществляет счетчик DD2 сигналом с вывода 15.

Рисунок 1.1 – Формирователь пачки импульсов

Номиналы элементов частотозадающей цепочки R2,C1 на схеме указаны для частоты генератора 10Гц (частота набора номера в телефонной линии). На схеме показан также пример дешифратора десятичных чисел в двоичный код на диодах типа Д9 (Д2), однако для уменьшения габаритов устройства вместо них целесообразно использовать две диодные матрицы типа КДС627А.
Для увеличения количества импульсов в пачке можно последовательно со счётчиком DD2 включить ещё такие же счётчики, а вместо диодов VD1…VD13 применить тумблеры для начальной установки необходимого числа импульсов (в двоичном коде). Для запуска работы формирователя необходимо подать положительный кратковременный импульс на входы DD2/1…DDn/1 – при этом происходит запись установленного кода.

Рисунок 1.2.а) Формирователь кодовой последовательности; б) форма импульсов

Иногда требуется иметь пачки импульсов, состоящие из произвольной комбинации положения импульсов относительно начального, - кодовую последовательность. Такой режим обеспечивает схема, рисунок 1.2.а. Если ни одна из кнопок не нажата, то на выходе (DD1\11) будут появляться одинарные импульсы, с периодом, определяемым частотой задающего генератора на элементах DD1.1, DD1.2.
В зависимости от того, какая кнопка нажата, на выходе появится пачка из комбинации импульсов. Причём каждой нажатой кнопке будет соответствовать определённое положение импульса относительно начального. Эпюры выходного напряжения, изображённые на рис.1.2.б, поясняют работу схемы.
Развитие микросхематехники дало возможность построения программно-управляемых генераторов пачек импульсов прямоугольной формы.
Примером такого устройства является генератор пачек прямоугольных импульсов, построенный на микроконтроллере, и управляемый через последовательный порт с компьютера. Максимальная частота импульсов в пачке, выдаваемая генератором немного больше 13 кГц, минимальная меньше 0,01 Гц (для частоты кварцевого генератора 4 МГц). Схема электрическая принципиальная данного устройства приведена на рисунке 1.3.
Схема достаточно простая. Она собрана на основе микроконтроллера PIC16C63A, сигнал снимается с двух его выводов, их состояние всегда разное. Без нагрузки уровень единицы отличается от напряжения питания меньше чем на 0,1 вольт, уровень нуля тоже очень низкий. Выводы рассчитаны на ток до 30 мА. Через разъём DB9 осуществляется подключение генератора к последовательному порту персонального компьютера. Микросхема МАХ232 используется для преобразования уровней интерфейса RS232 в уровни TTL, то есть управляющие сигналы, поступающие с порта компьютера, преобразует в понятные для микроконтроллера сигналы. Для установки параметров сигнала выдаваемого микроконтроллером необходимо использовать специальную программу, написанную для ОС Windows (в примере не приводится).

Рисунок 1.3 – Программно-управляемый генератора пачек прямоугольных импульсов
Другая схема программно-управляемого генератора пачек импульсов, приведённая на рисунке 1.4, собрана на основе микроконтроллера АТ90S2313, выпускаемого фирмой “ATMEL” (рисунок 1.4).
Генератор является многофункциональным устройством и имеет несколько режимов работы: генерация пачек импульсов, генерация меандра, положительного импульса, отрицательного импульса, режим удержания на выходе логического нуля или единицы. Управление генератором осуществляется с помощью 4-х кнопок. Его основой является микроконтроллер U1, для питания которого применён интегральный стабилизатор U2 со встроенным монитором питания. Через разъём XP2 к микроконтроллеру подключается ЖКИ - модуль для индикации режимов работы и значений временных интервалов, в состав которого входят 4 кнопки управления.

Рисунок 1.4 - Принципиальная схема основной части генератора

Посредством кнопок осуществляется перестройка количества импульсов, их длительность и т.д. Нажатие кнопок сопровождается звуковым сигналом, для этого используется динамический излучатель. Частота сигнала различна для разных кнопок. Звуковой сигнал также используется в некоторых специальных случаях: при включении питания и при возникновении ошибки. Микросхема U4, питающаяся от стабилизатора U5, служит для уменьшения высокочастотных помех в выходном сигнале.
Для получения необходимых электрических параметров выходного сигнала используется специальный выходной каскад (на схеме не показан).
Рассмотренный на рисунке 1.1 генератор имеет ряд недостатков. Интервал между пачками импульсов не фиксированный, т.е. определяется интервалом времени между нажатиями кнопок оператором, когда в ряде случаев необходимо иметь на выходе генератора сигнал с заданной частотой следования пачек импульсов. Для увеличения количества импульсов в пачке необходимо включать дополнительные счетчики, что влечёт усложнение схемы и увеличение габаритов устройства. Также данный генератор не обеспечивает изменения длительности импульса в пачке. Все эти недостатки ограничивают область применения такого генератора.
Генератор, показанный на рисунке 1.2, предназначен для формирования последовательности пачек прямоугольных импульсов (кодовых последова - тельностей). Частота следования пачек постоянна, однако такая схема не обеспечивает изменения длительности импульсов в пачке, а также перестройку частоты следования пачек, изменяется лишь количество импульсов в пачке, что не всегда удовлетворяет предъявляемым к устройству требованиям.
Недостатком генератора, показанного на рисунке 1.3, является то, что он управляется посредством компьютера и для установки параметров сигнала, выдаваемого микроконтроллером необходимо использовать специальную программу для операционной системы компьютера. Это сужает область применения генератора из-за необходимости ПК.
Изображённый на рисунке 1.4 генератор обладает хорошими показателями и имеет большое число функций. Это дает большое преимущество такому генератору перед подобными устройствами, однако вызывает усложнение схемы и соответственно увеличение стоимости устройства. Микроконтроллеры фирмы «ATMEL» имеют довольно не маленькую стоимость по сравнению с теми же микроконтроллерами фирмы «Microchip technology».
Можно построить генератор, который удовлетворяет заданным требованиям, управляется посредством клавиатуры без применения компьютера, имеет простую схему и невысокую стоимость, и при этом обладает достаточно хорошими параметрами. Такой генератор можно выполнить на основе микроконтроллера PIC16С84. Он имеет невысокую стоимость по сравнению с АТ90S2313, и при этом не уступает ему по быстродействию.
PIC16CXX - это 8-pазpядные микроконтроллеры с RISC архитектурой, производимые фиpмой Microchip Technology. Это семейство микроконтроллеров отличается низкой ценой, низким энергопотреблением и высокой скоростью. Микроконтроллеры имеют встроенное ЭППЗУ программы, ОЗУ данных и выпускаются в 18 и 28 выводных корпусах.
PIC16C84 относится к семейству КМОП микроконтроллеров. Отличается тем, что имеет внутреннее 1K x 14 бит EEPROM для программ, 8-битовые данные и 64байт EEPROM памяти данных. При этом отличаются низкой стоимостью и высокой производительностью. Все команды состоят из одного слова (14 бит шириной) и исполняются за один цикл (400 нс при 10 МГц), кроме команд перехода, которые выполняются за два цикла (800 нс). PIC16C84 имеет прерывание, срабатывающее от четырех источников, и восьмиуровневый аппаратный стек. Периферия включает в себя 8-битный таймер/счетчик с 8-битным программируемым предварительным делителем (фактически 16 - битный таймер) и 13 линий двунаправленного ввода/вывода. Высокая нагрузочная способность (25 мА - максимальный втекающий ток, 20 мА - максимальный вытекающий ток) линий ввода/вывода упрощают внешние драйверы и, тем самым, уменьшается общая стоимость системы. Разработки на базе контроллеров PIC16C84 поддерживается ассемблером, программным симулятором, внутрисхемным эмулятором (только фирмы Microchip) и программатором.
Серия PIC16C84 подходит для широкого спектра приложений от схем высокоскоростного управления автомобильными и электрическими двигателями до экономичных удаленных приемопередатчиков, показывающих приборов и связных процессоров. Наличие ПЗУ позволяет подстраивать параметры в прикладных программах (коды передатчика, скорости двигателя, частоты приемника и т.д.).
Малые размеры корпусов, как для обычного, так и для поверхностного монтажа, делает эту серию микроконтроллеров пригодной для портативных приложений. Низкая цена, экономичность, быстродействие, простота использования и гибкость ввода/вывода делает PIC16C84 привлекательным даже в тех областях, где ранее не применялись микроконтроллеры. Например, таймеры, замена жесткой логики в больших системах, сопроцессоры.
Cледует добавить, что встроенный автомат программирования EEPROM кристалла PIC16C84 позволяет легко подстраивать программу и данные под конкретные требования даже после завершения ассемблирования и тестирования. Эта возможность может быть использована как для тиражирования, так и для занесения калибровочных данных уже после окончательного тестирования.
Обзор характеристик:
- только 35 простых команд;
- все команды выполняются за один машинный цикл, кроме команд перехода -2 цикла;
- рабочая частота 0 Гц ... 10 МГц (min 400 нс цикл команды)
- 14 - битовые команды;
- 8 - битовые данные;
- 1024 х 14 электрически перепрограммируемой программной памяти на кристалле (EEPROM);
- 36 х 8 регистров общего использования;
- 15 специальных аппаратных регистров SFR;
- 64 x 8 электрически перепрограммируемой EEPROM памяти для данных;
- восьмиуровневый аппаратный стек;
- прямая, косвенная и относительная адресация данных и команд;
- четыре источника прерывания:
• внешний вход INT
• переполнение таймера RTCC
• прерывание при изменении сигналов на линиях порта B
• по завершению записи данных в память EEPROM
Структурная схема PIC16C84 приведена на рисунке 2.1
Высокая скорость выполнения команд в микроконтроллерах PIC достигается за счет использования двухшинной Гарвардской архитектуры вместо традиционной одношинной Фон-Неймановской. В Гарвардской архитектуре разделена память программ и память данных. Обращение к памяти по отдельным шинам адреса и данных, значительно повышает производительность процессора по сравнению с традиционной архитектурой. Набор регистров означает, что все программные объекты, такие как порты ввода/вывода, ячейки памяти и таймер, представляют собой физически реализованные аппаратные регистры.


Рисунок 2.1 – Структурная схема микроконтроллера PIC16C84

Микроконтроллеры семейства PIC имеют очень эффективную систему команд, состоящую всего из 35 инструкций. Все инструкции выполняются за один цикл, за исключением условных переходов и команд, изменяющих программный счетчик, которые выполняются за 2 цикла. Один цикл выполнения инструкции состоит из 4 периодов тактовой частоты. Таким образом, при частоте 4 МГц, время выполнения инструкции составляет 1 мксек. Каждая инструкция состоит из 14 бит, делящихся на код операции и операнд (возможна манипуляция с регистрами, ячейками памяти и непосредственными данными).
Генератор пачек прямоугольных импульсов на микроконтроллере позволяет получать пачки импульсов любой длительности с большой точностью, при этом частота следования пачек может иметь любые значения. Такой генератор позволяет получать частоты инфранизкого диапазона, что трудно обеспечить в любом другом генераторе. Программное управление даёт возможность перестройки частоты пачек и длительности импульсов в больших пределах, что не всегда возможно в обычных генераторах на RC –элементах или КМОП - микросхемах. Устройства, построенные на базе микроконтроллеров PIC16C84, характеризуются простотой схемы и дешевизной в изготовлении.
Разработка функциональной схемы устройства
Так как мы применяем микроконтроллер, то схема будет включать в себя непосредственно данный микроконтроллер, блок питания, блок управления, для задания необходимых интервалов, блок индикации прошедшего времени, блок световой индикации заданной выдержки и, конечно же, выход генератора, с которого будут сниматься полученные сигналы.
Схема функциональная генератора приведена на чертеже (формат А4).

Разработка принципиальной схемы устройства
Схема электрическая принципиальная генератора приведена на чертеже (формат А4).
Схема состоит из PIC-контроллера, источника питания 5v, входных и выходных устройств. Перед включением микросхемы в устройство, она предварительно программируется – прошивается рабочей программой.
К ножкам 17, 18 и 1 микросхемы, которые являются выводами порта A(данный порт сконфигурирован на ввод), подключены выключатели S2, S3 и S1 соответственно. Данные выводы через резисторы R1,R2 и R3 подключены к шине (-) источника питания, это позволяет установить на соответствующих выводах логический ноль. При нажатии кнопки происходит замыкание вывода на (+). На это изменение состояния, на каком либо выводе, микроконтроллер реагирует, выполняя те или иные операции. Нажатию кнопки S1 соответствует установка на выходе генератора пачек с длительностью импульсов 5с, S2 – 6с, S3-7с. Выводы 2, 3 микросхемы DA1 являются выводами порта A, которые сконфигурированы на вывод. К ножке 3 подключен светодиод VD1, служащий для индикации окончания выдержки времени. Ножка 2 является выходом микроконтроллера, на который он выводит последовательность пачек импульсов.
К ножкам 16 и 15 подключён кварц QZ1, который задает тактовую частоту процессора, в данном случае частота кварца составляет 4кГц.
К ножкам 6-12 подключена светодиодная матрица для индикации прошедшего времени, с помощью которой двоичный код преобразуется в десятичный.
Разработка алгоритма работы управляющей программы
В основе работы генератора пачек прямоугольных импульсов лежит формирование временных задержек. Задержка логической единицы на выходе микроконтроллера соответствует положительному импульсу необходимой длительности, задержка логического нуля – паузе между импульсами. Пачка импульсов получается в результате формирования циклов, то есть однократное появление на выходе контроллера единицы-нуля является периодом импульсов, необходимое количество импульсов в пачке можно получить, формируя определённое число периодов. Пауза между пачками импульсов формируется по такому же принципу, что и пауза между импульсами, только большей длительности. Всё это легко выполняется посредством программируемого микроконтроллера PIC16C84. Блок-схема алгоритма работы устройства представлена в приложении 1 на формате A4 .
Работа микропроцессора начинается с загрузки начального адреса программы. По которому осуществляется вызов программы из ПЗУ.
Затем выполняется конфигурация портов контроллера на ввод\вывод, для этого переходят на первый банк памяти, установив бит RP0 в единицу. Загружая в регистры портов TRIS A и TRIS B двоичные числа 00111 и 0000000 соответственно, получаем, что первые 3 вывода порта A сконфигурированы на ввод(остальные вывод), а первые все выводы порта B – на вывод. К выводам RA0, RA1, RA2 порта A подключаются кнопки выбора длительности импульсов в пачке 5с, 6с и 7с соответственно. Вывод RA3 порта A является выходным, с него снимается последовательность пачек. По окончании выполняется возврат на нулевую страницу памяти.
Для изменения длительности импульсов контроллер должен реагировать на изменения состояния кнопок, для этого используется программа опроса клавиатуры. Если какая-то кнопка нажата , т.е. состояние порта RA0 (RA1, RA2) сменилось на единицу, происходит переход программы на участок загрузки соответствующих констант для формирования нужных временных задержек.
После получения необходимого числа импульсов выполняется формирование сигнала на VD1 и переход на начало.
При формировании импульсов и пауз между ними перед декрементированием содержимого регистров A и B используется так называемая «пустая» операция (команда NOP). Это позволяет получить более точные временные задержки, которые определяются количеством тактов, выполняемых микроконтроллером и его тактовой частотой. Это является одним из достоинства программно-управляемого генератора пачек прямоугольных импульсов на микроконтроллере: изменяя константы, загружаемые в регистры и подбирая тактовую частоту контроллера можно получить последовательности импульсов любой длительности.
Разработка управляющей программы
Программа (с подробными комментариями) управления PIC-контроллером, написанная на ассемблере и проверенная в интегрированной среде MPLAB приведена ниже:
;--------------------------------- "ШАПКА" ПРОГРАММЫ ----------------------------------------
;*********************************************************************************************
; Файл текста программы: generic.asm
; Программа разработана для генератора специальных сигналов(1Гц)
;*********************************************************************************************
; Автор: Сергеенко Артём Константинович БГУИР гр.700102(2010)
;*********************************************************************************************
; Используется микроконтроллер PIC16F84A. Частота кварца 4кГц.
;*********************************************************************************************
; Объем программы: 46 слов в памяти программ.
;*********************************************************************************************
;=============================================================================================
; В "шапке" программы используются директивы: LIST, __CONFIG, equ, org.
;=============================================================================================
LIST p=16F84A ; Назначение типа ПИКа: PIC16F84A.
__CONFIG 03FF5H ; Установка битов конфигурации: стандартный XT-генератор,
; WDT включен, бит защиты не установлен, PWRT
; включен (1111 0101).
;=============================================================================================
; Определение адресов регистров специального назначения.
;=============================================================================================
OptionR equ 01h ; Регистр Option - банк1
Status equ 03h ; Регистр Status
PortA equ 05h ; Порт А
TrisA equ 05h ; Регистр Tris A - банк1
PortB equ 06h ; Порт B
TrisB equ 06h ; Регистр Tris B - Банк1
IntCon equ 0Bh ; Регистр IntCon
;=============================================================================================
; Определение названия и адресов регистров общего назначения.
;=============================================================================================
Sec equ 0Ch ; Счетчик времени полупериода.
SecL equ 0Eh ; Байт таймера.
;=============================================================================================
; Присвоение буквенного обозначения операции направления результата выполнения команды в
; регистр, с содержимым которого производится действие (для удобства восприятия текста
; программы).
;=============================================================================================
F equ 1 ; Результат направить в регистр, с содержимым которого
; производится действие.
;=============================================================================================
; Присвоение биту выбора банка регистра STATUS (пятому) его стандартного названия
; для удобства восприятия текста программы).
;=============================================================================================
RP0 equ 5 ; Присвоение 5-му биту регистра STATUS названия RP0.
;=============================================================================================
; Определение точки входа в программу.
;=============================================================================================
org 0 ; Установка нулевого адреса в счетчике команд PC.
goto START ; Безусловный переход на подпрограмму START.
;*********************************************************************************************

;------------------------------- РАБОЧАЯ ЧАСТЬ ПРОГРАММЫ -----------------------------------
;*********************************************************************************************
; Подготовительные операции.
;---------------------------------------------------------------------------------------------
START clrf IntCon ; Сброс в ноль всех битов регистра IntCon.

clrwdt ; Установка начала отсчета сторожевого таймера WDT.

bsf Status,RP0 ; Установка 5-го бита регистра Status в единицу.

movlw .7 ; Запись в регистр W константы .7
movwf TrisA ; Установка 0, 1 и 2-го битов регистра TrisА
; в единицу, а остальных - в ноль.

movlw .0 ; Запись в регистр W константы .0
movwf TrisB ; Установка всех битов регистра TrisB
; в ноль.

movlw .143 ; Запись в регистр W константы .143
movwf OptionR ; Установка 4,5,6-го битов регистра OptionR
; в ноль, а остальных - в единицу.

bcf Status,RP0 ; Установка 5-го бита регистра Status в ноль.
;--------------------------------------------------------------------------------------------
; Проверка наличия включения кнопок.
;--------------------------------------------------------------------------------------------
btfsc PortA,0 ; Если нулевой бит регистра PortA равен 1, то выполняется
goto Five ; следующая команда (goto Five), а если равен 0, то сле-
; дующая команда не выполняется (вместо нее - nop) и
; следующей активной командой будет btfsc PortA,1

btfsc PortA,1 ; Если первый бит регистра PortA равен 1, то выполняется
goto Sex ; следующая команда (goto Sex), а если равен 0, то сле-
; дующая команда не выполняется (вместо нее - nop) и
; следующей активной командой будет btfsc PortA,2

btfsc PortA,2 ; Если второй бит регистра PortA равен 1, то выполняется
goto Seven ; следующая команда (goto Seven), а если равен 0, то сле-
; дующая команда не выполняется (вместо нее - nop) и
; следующей активной командой будет goto START

goto START ; Безусловный переход на подпрограмму START.
;--------------------------------------------------------------------------------------------
; Запись констант времени работы таймера.
;--------------------------------------------------------------------------------------------
Five movlw .6 ; Запись в регистр W константы .6
movwf SecL ; Копирование константы .6 из регистра W в регистр SecL.
goto PRD ; Безусловный переход на подпрограмму PRD.
;--------------------------------------------------------------------------------------------
Sex movlw .7 ; Запись в регистр W константы .7
movwf SecL ; Копирование константы .7 из регистра W в регистр SecL.
goto PRD ; Безусловный переход на подпрограмму PRD.
;--------------------------------------------------------------------------------------------
Seven movlw .8 ; Запись в регистр W константы .8
movwf SecL ; Копирование константы .8 из регистра W в регистр SecL.
goto PRD ; Безусловный переход на подпрограмму PRD.
;--------------------------------------------------------------------------------------------
; Формирование импульса(положительный).
;--------------------------------------------------------------------------------------------
CYCLE bsf PortA,3 ; Установить 0-й бит регистра PortB в 1.
incf PortB,F
nop
movlw .124 ; Запись в регистр W константы .124
movwf Sec ; Копирование константы .124 из регистра W в регистр Sec.

PAUSE_1 clrwdt ; Установка начала отсчета сторожевого таймера WDT.

decfsz Sec,F ; Декремент (-1) содержимого регистра Sec с сохранением
; результата декремента в нем же.
; Если этот результат не=0, то выполняется следующая коман-
; да (goto PAUSE_1), а если =0, то следующая команда не
; выполняется (вместо нее - nop) и следующей активной
; командой будет bsf PortB,0

goto PAUSE_1 ; Безусловный переход на подпрограмму PAUSE_1.
;--------------------------------------------------------------------------------------------
; Формирование импульса(отрицательный).
;--------------------------------------------------------------------------------------------
bcf PortA,3 ; То же самое, что и при формировании
nop ; отрицательного полупериода, только
nop ; 0-й бит регистра PortB
nop ; устанавливается в 0.
movlw .123 ; То же самое, что и при формировании отрицательного полу-
movwf Sec ; периода, только в регистр Sec записывается константа .123

PAUSE_2 clrwdt ; Установка начала отсчета сторожевого таймера WDT.

decfsz Sec,F ; То же самое, что и при формировании отрицательного полу-
goto PAUSE_2 ; периода, только безусловный переход осуществляется
; на подпрограмму PAUSE_2.
;--------------------------------------------------------------------------------------------
; "Очистка" (декремент) таймера.
;--------------------------------------------------------------------------------------------
PRD decfsz SecL,F ; Декремент (-1) содержимого регистра SecL с сохранением
goto CYCLE ; результата в нем же.
; Если этот результат не=0, то выполняется следующая коман-
; да (goto CYCLE), а если =0, то следующая команда не
; выполняется (вместо нее - nop) и следующей активной
; командой будет decfsz SecH,F
bsf PortA,4 ; Установить 3-й бит регистра PortA в 1.
bcf PortA,4 ; Установить 3-й бит регистра PortA в 0.
goto START ; Безусловный переход на подпрограмму START
;============================================================================================
end ; Директива конца текста программы.
Литература
1. Левкович В. Н. Архитектура и основы программирования однокристальных микроконтроллеров PIC16F84. Методическое пособие. БГУИР. 2002.
2. Левкович В. Н., Шабров О. В. Микропроцессорные устройства. Учебно-методическое пособие. БГУИР. 2007.
3. Левкович В. Н., Грицук А. С., Коваленко И. В. Конструирование программ на ассемблере для микроконтроллеров PICMICRO. Учебное пособие. БГУИР. 2004.
Категория: Другое | Добавил: Batman211
Просмотров: 2411 | Загрузок: 27
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]