Разработка генератора сигналов тональных рельсовых цепей
Общая характеристика микроконтроллера PIC16F873A, его корпус, технические параметры, структурная схема и организация памяти. Подключение питания и тактирование, анализ принципиальной схемы. Разработка рабочей программы для заданного микроконтроллера.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 23.04.2015 |
Размер файла | 667,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Разработка генератора сигналов тональных рельсовых цепей
Введение
микроконтроллер программа технический
В настоящее время все большая часть информации, передаваемой по разнообразным каналам связи, существует в цифровом виде. Это означает, что передаче подлежит не непрерывный (аналоговый) модулирующий сигнал, а последовательность целых чисел n0, n1, n2, …, которые могут принимать значения из некоторого фиксированного конечного множества. Эти числа, называемые символами (symbol), поступают от источника информации с периодом T, а частота, соответствующая этому периоду, называется символьной скоростью (symbol rate): fT = 1/T.
В настоящее время в устройствах железнодорожной автоматики, телемеханики и связи применяется большое количество различных микропроцессоров и микроконтроллеров. В зависимости от решаемых задач они могут иметь отличия в архитектуре, наборе периферийных устройств, производительности, системе команд.
В данной научной работе используется 8-разрядный универсальный микроконтроллер PIC16F873A фирмы Microchip, построенный по гарвардской архитектуре и включающий в себя весь необходимый набор периферийных модулей, таких, как системный монитор, запоминающие устройства, порты ввода-вывода, таймеры, аналого-цифровой преобразователь, схемы захвата и сравнения, широтно-импульсный модулятор, аналоговые компараторы.
Целью данной научной работы является:
· разработка микропроцессорного устройства генератора АМ сигналов ТРЦ. При выполнении поставленной задачи, происходит укрепление полученных ранее знаний работы микроконтроллера PIC16F873a и приобретение новых.
· Изучение программных средств разработки микропроцессорных устройств и программирования микроконтроллеров.
· В результате полученные наработки позволят создать макет генератора сигналов тональных рельсовых цепей.
Для начала я решила сравнить виды модуляции:
1. Амплитудная модуляция
Данный тип модуляции достаточно прост в исполнении, но отличается невысокой помехоустойчивостью. Помехонеустойчивость возникает вследствие узкой полосы модулируемого сигнала.
2. Частотная модуляция
В результате данного типа модуляции сигнал модулирует частоту опорного сигнала, а не мощность. Поэтому если величина сигнала увеличивается, то, соответственно, растет частота. Ввиду того, что полоса получаемого сигнала намного шире исходной величины сигнала. Такая модуляция характеризуется высокой помехоустойчивостью, однако для ее применения следует использовать высокочастотный диапазон.
3. Фазовая модуляция
В процессе данного типа модуляции модулирующий сигнал использует фазу опорного сигнала. При данном типе модулирования получаемый сигнал имеет достаточно широкий спектр, потому что фаза оборачивается на 180 градусов. Фазовая модуляция активно используется для формирования помехозащищенной связи в микроволновом диапазоне.
1. Техническое задание
При амплитудной модуляции несущей частоты «пачке импульсов» соответствует генерация меандра 0-1-1. Интервалу соответствует уровень логического «0». Частота манипулированного сигнала остаются неизменными. Амплитудная манипуляция редко используется на практике, так как из всех видов манипуляции наименее помехоустойчива.
При амплитудной манипуляции модулируемым параметром радиосигнала является его амплитуда. В настоящее время применяется лишь двоичная амплитудная манипуляция.
В данной научной работе применены несущие частоты: 420Гц, 480Гц, 580Гц, 720Гц, 780Гц. При переключении пятипозиционного переключателя SA2 будут формироваться частоты 420 Гц, 480Гц, 580Гц, 720Гц, 780Гц соответственно.
Применяется двухпозиционный переключатель, при переключении которого будут формироваться частоты манипуляции, либо 8 ГЦ, либо 12 Гц.
Устройство будет формировать амплитудно-манипулированный сигнал только тогда, когда:
1. Первой нажимается кнопка несущей частоты 420 Гц
2. Затем нажимается кнопка 8 Гц или 12 Гц.
В случае нарушения последовательности нажатия кнопок, устройство перестает работать.
Скважность импульсов:
На выходе получают «пачку импульсов»
Рис. 1 Форма сигнала при амплитудной манипуляции
Произведенные расчеты
- период несущей частоты
1) (сек)
2) (сек)
3) (сек)
4) (сек)
5) (сек)
Половина периода несущей частоты
1. (сек)
2. (сек)
3. (сек)
4. (сек)
5. (сек)
- период модуляции
1) (сек)
2) (сек)
Найдем полупериод частоты 8 Гц и 12 Гц
1) Полупериод частоты 8 Гц находится:
(сек)
0,0625 - полупериод частоты 8 Гц.
2) Полупериод частоты 12 Гц находится:
(сек)
0,0417 - полупериод частоты 12 Гц.
2 - это полупериод
8 (12) - модулирующие частоты
1000000 - число машинных циклов
5 - подобрано из условия, чтобы самое большое (где 238) не превышало 256, но было максимальным чтобы была максимальная точность.
Задается выдержка времени:
1)
2)
3)
4)
5)
· предделитель 5*238 - 420.2Гц
· предделитель 5*208 - 480.8Гц
· предделитель 5*172 - 581.4Гц
· предделитель 5*139 - 719.4Гц
· предделитель 5*128 - 781.3Гц
v
Период будет с точностью до 0,00128205 секунды
2. Общая характеристика микроконтроллера PIC16F873A
Микроконтроллер PIC16F873A относится к среднему семейству восьмиразрядных микроконтроллеров PIC-micro, имеет гарвардскую RISC архитектуру. Микроконтроллеры семейства PIC16 различаются объемом внутренней памяти, а так же набором и количеством периферийных устройств, но имеют одинаковое вычислительное ядро и одинаковую систему команд.
Корпуса микроконтроллеров
Микроконтроллеры PIC16F873A выпускаются в 28 выводных корпусах
PDIP, SOIC, SSOP и QFP (рис. 2.1)
Рис. 2.1. Корпуса микроконтроллеров:
а - PDIP; б - SOIC; с - QFP
v Корпус PDIP (Plastic Dual In-line Package - пластиковый корпус с
двумя рядами выводов) представляет собой пластиковый прямоугольник с двумя рядами выводов по длинным сторонам, предназначенный для монтажа в отверстия печатной платы.
v Корпус SOIC (Small-Outline Integrated Circuit - малогабаритная интегральная схема) также представляет собой прямоугольник с двумя рядами выводов и предназначен для поверхностного монтажа, габариты SOIC примерно в два раза меньше, чем у аналогичного PDIP корпуса.
v Разновидностью SOIC является корпус SSOP (Shrink Small-
Outline Package - уменьшенный малогабаритный корпус), имеющий еще меньшие габариты.
v Корпус QFP (Quad Flat Package - квадратный тонкий корпус) предназначен для поверхностного монтажа и представляет собой квадратный пластиковый квадрат, выводы которого расположены по периметру. За счет чего габариты корпуса меньше чем у SSOP.
Большинство выводов мультиплексировано, то есть один вывод используется различными устройствами в зависимости от настроек.
Назначение выводов микроконтроллера PIC16F873A для PDIP, SOIC и
SSOP корпусов приведено на рисунке 2.2.
Рис. 2.2. Назначение ножек микроконтроллера PIC16F873A
В данной научной работе были использованы ножки, описание которых приведены в таблице 1.
Таблица 1. Назначение выводов микроконтроллеров PIC16F873
Обозначение вывода |
Описание |
|
MCLR/ |
Вход сброса микроконтроллера или вход напряжения программирования. Сброс микроконтроллера происходит при низком логическом уровне сигнала на входе. |
|
RA2/AN2/VREF |
RA2 может быть настроен как аналоговый канал 2 или вход отрицательного опорного напряжения |
|
OSC1/CLKIN |
Вход генератора / вход внешнего тактового сигнала |
|
OSC2/CLKOUT |
Выход генератора. Подключается кварцевый или керамический резонатор. В RC режиме тактового генератора на выходе OSC2 присутствует сигнал CLKOUT, равный ; |
|
RB0/INT |
Может использоваться в качестве входа внешних прерываний; |
|
RB1; |
||
RB2; |
||
RB3/PGM |
Может использоваться в качестве входа для режима низковольтного программирования |
|
RB4 |
Может использоваться в качестве источника прерывания по изменению уровня входного сигнала |
|
RB5 |
Может использоваться в качестве источника прерывания по изменению уровня входного сигнала |
|
RB6/PGC |
Может использоваться в качестве источника прерывания по изменению уровня входного сигнала или вывода для режима внутрисхемной отладки ICD, а также как тактовый вход в режиме программирования; |
|
RB7/PGD |
Используется в качестве источника по изменению уровня входного сигнал или вывод для режима внутрисхемной отладки ICD. Вывод данных в режиме программирования |
Основные технические характеристики микроконтроллера PIC16F873A
Ниже приведены Основные технические характеристики микроконтроллера PIC16F873A:
Ш количество машинных команд - 35;
Ш команды выполняются за 1 машинный цикл, за исключением команд перехода, которые выполняются за 2 цикла;
Ш тактовая частота до 20 МГц;
Ш объем FLASH памяти программ - 4096 14-разрядных слов;
Ш объем памяти данных - 192 байта;
Ш объем энергонезависимой памяти данных EEPROM - 128 байт;
Ш система прерываний включает 14 источников;
Ш 8-уровневый аппаратный стек;
Ш прямой и косвенный режим адресации ячеек памяти данных;
Ш внутренняя схема сброса по включению питания (POR);
Ш сторожевой таймер WDT с собственным RC генератором;
Ш возможность программирования и отладки в готовом устройстве;
Ш широкий диапазон напряжений питания - от 2,0 до 5,5 В;
Ш малое энергопотребление - до 10 мА в рабочем режиме и <1 мкА в режиме ожидания.
Структурная схема микроконтроллера
Микроконтроллер включает вычислительное ядро и ряд периферийных модулей, связанных между собой 8-разрядной шиной данных. Структурная схема PIC16F873A представлена на рис. 2.3.
Рис. 2.3. Структурная схема микроконтроллера
Ядро микроконтроллера осуществляет выборку и исполнение команд из памяти программ, а также управление процессом вычисления.
Схема сброса (системный монитор), предназначена для приведения микроконтроллера в исходное состояние при включении электропитания (POR), просадке напряжения питания ниже заданного уровня (BOR), в случае зависания программы (WDT) или при подаче логического «0» на внешний вывод MCLR.
Параллельные порты ввода-вывода PORTA, PORTB и PORTC, предназначены для передачи воздействий объектам управления и получения информации от внешних устройств в параллельном виде. Порт А имеет шесть линий ввода-вывода (RA0…RA5), а порты В и С - по восемь (RB0…RB7 и RC0…RC7, соответственно). Большинство линий ввода-вывода имеют одну или две альтернативные функции, и могут использоваться другими периферийными модулями.
Модуль последовательного порта ввода-вывода USART позволяет обмениваться информацией в последовательном виде с другими микропроцессорными системами через интерфейсы RS-232, RS-422 или RS-485.
Модуль ведущего синхронного последовательного порта (MSSP - Мaster Synchronous Serial Port), так же предназначен для передачи информации в последовательном виде, но в отличие от USART обмен выполняется внутри микропроцессорной системы. При этом используются интерфейсы SPI либо I2C.
Энергонезависимая память данных EEPROM служит для хранения данных, которые не должны стираться при выключении источника питания.
Три модуля таймеров TMR0, TMR1 и TMR2 позволяют аппаратно формировать интервалы времени. Таймеры TMR0 и TMR2 имеют 8 - разрядный счетчик, а таймер TMR1 - 16-разрядный.
Модуль 10-разрядного аналого-цифрового преобразователя АЦП, предназначен для преобразования аналоговых сигналов в цифровой вид.
Два модуля CCP (Capture, Compare, PWM) схем захвата, сравнения и широтно-импульсной модуляции (ШИМ) CCP1 и CCP2 могут работать в трех режимах. В режиме захвата модули позволяют сохранить в памяти микроконтроллера длительность входного сигнала содержимое таймера TMR1 в момент поступления внешнего сигнала. В режиме сравнения, наоборот, формируется сигнал на выходе микроконтроллера при достижении счетчиком таймера TMR1 определенного значения. В режиме ШИМ модуль ССР, совместно с таймером TMR2, позволяет сформировать на выходе микроконтроллера импульсный широтно-модулированный сигнал.
Два аналоговых компаратора С1 и С2, позволяющие производить попарное сравнение уровня четырех аналоговых сигналов.
Организация памяти микроконтроллера PIC16F873A
В микроконтроллере PIC16F873A реализовано три вида памяти:
ь оперативное запоминающее устройство (ОЗУ) - статическая память данных объемом 192 байта;
ь Flash память программ объемом 4096 строк, где размещается последовательность команд, составляющих программу;
ь EEPROM энергонезависимая память объемом 128 байт.
Память данных и память программ имеют раздельные шины адреса и данных, что позволяет выполнять параллельный доступ.
Параллельные порты микроконтроллера PIC16F873A
Порты используются для ввода информации от внешних устройств к микропроцессору и вывода информации от процессора к внешним устройствам. Параллельные порты могут одновременно передавать несколько бит информации.
Микроконтроллер PIC16F873A имеет три параллельных порта ввода-вывода: 6-ти разрядный порт A и два 8-ми разрядных порта B и C. Выводы порта A мультиплексированы с входами аналогово-цифрового преобразователя и выходами компараторов. Выводы порта B со схемой низковольтного программирования и с входом внешнего прерывания, а порта C со схемами интервального таймера, широтно-импульсного модулятора, последовательной шины и последовательного порта.
Каналы портов ввода-вывода имеют отличия, которые заключаются в устройстве входного и выходного каскада, содержат различные дополнительные цепи, позволяющие мультиплексировать порты с другими периферийными модулями.
Все каналы порта B имеют встроенную отключаемую нагрузку, реализованную на транзисторах P, подключенных к шине питания. Эквивалентное сопротивление открытого транзистора P составляет примерно 20 кОм. Нагрузка включается и отключается одновременно для всех выводов при помощи 7-го бита RBPU регистра OPTION_REG. При включении питания каналы порта B настроены на ввод данных, бит RBPU = 1 и нагрузка отключена. Сброс бита в ноль подключает нагрузку, но для каналов, настроенных на вывод нагрузка отключается. Все каналы порта B имеют выход с тремя состояниями. Особенность каналы RB4-RB7 заключается в том, что они могут использоваться как входы прерывания по изменению уровня. Вывод RB0 может использоваться как вход внешнего прерывания. В зависимости от настроек устанавливается флаг INTF по переднему или заднему фронту сигнала на RB0. Выводы RB6 и RB7 могут быть использованы для внутрисхемного программирования микроконтроллера.
Каналы порта C мультиплексированы с коммуникационными периферийными модулями, имеют триггеры Шмитта на входе и выходы с
тремя состояниями.
Для управления работой портов ввода-вывода используются следующие регистры:
ь TRISA, TRISB и TRISC - определяют направление передачи информации, при записи 0 в какой-либо разряд регистра TRIS соответствующий разряд порта работает как выход, а при записи 1 - как вход (0 как O - Out, 1 как I - In). Направление передачи информации можно задавать для каждого бита порта отдельно;
ь PORTA, PORTB, PORTC - регистры портов ввода-вывода. Если порт настроен на вывод информации, то запись 0 или 1 в разряд этих регистров приводит к появлению соответствующего сигнала на выходах параллельного порта, если порт настроен на ввод информации, то из этих регистров можно считать логические уровни, присутствующие на входах параллельного порта;
В данной научной работе соответствующие выводы параллельных портов настроены на следующие функции:
Таймеры
В микропроцессорных системах некоторые операции должны выполняться через определенные, заданные заранее, интервалы времени. Формировать временные интервалы можно программными или аппаратными средствами. Программно интервал времени формируется циклом с известной продолжительностью. Если формирование временных интервалов не единственная задача, возложенная на микроконтроллер, то временные интервалы целесообразно формировать аппаратным способом. Для этого предназначены таймеры, которые входят в состав большинства микроконтроллеров.
Таймер представляет собой счетный регистр, переключение которого выполняется периодической импульсной последовательностью, сформированной из тактового сигнала.
Микроконтроллер PIC16F873A содержит 4 таймера: TMR0, TMR1, TMR2 и сторожевой таймер WDT (Watch Dog Timer).
Таймеры TMR0 и WDT используют общий программируемый делитель. Таймер TMR0 представляет собой 8-и разрядный счетчик, при переполнении которого устанавливается флаг прерывания TMR0IF. Счетчик увеличивается на 1 при каждом поступлении импульса через синхронизатор, который служит для синхронизации активного фронта внешнего сигнала с внутренней тактовой частотой. В качестве источников счетных импульсов может выступать внутренний тактовый генератор микроконтроллера, период следования этих импульсов равен длительности машинного цикла, либо внешний сигнал, подаваемый на ножку RA4 микросхемы PIC16F873A. Переключение источника тактового сигнала выполняется битом T0CS. С помощью бита T0SE настраивается активный фронт внешнего сигнала.
Таймер TMR1
Периферийный модуль TMR1 (рис 3.14) представляет собой 16 - разрядный регистр, состоящий из двух 8-разрядных регистров TMR1H и TMR1L.
Управление работой TMR1 осуществляется битами регистра T1CON. Включение таймера выполняется установкой бита TMR1ON. После включения TMR1, значение спаренного регистра инкрементируется (увеличивается на 1) от h'0000' до h'FFFF'. При переполнении TMR1 флаг TMR1IF в регистре PIR1 устанавливается в 1. Само прерывание можно разрешить или запретить битом TMR1IE в регистре PIE1. Частота тактовых импульсов, управляющих таймером, может быть уменьшена в 2, 4 или 8 раз делителем T1CKPS1:T1CKPS0. Состоянием бита TMR1CS выбирается источник тактовых импульсов. Если TMR1CS = 0, то модуль работает от тактовых импульсов микроконтроллера и увеличивается на 1 в каждом машинном цикле. При работе от внешнего источника импульсов приращение таймера происходит по каждому переднему фронту сигнала на входе T1OSI (если T1OSCEN = 1) или T1OSO (если T1OSCEN = 0). Бит T1OSCENуправляет тактовым генератором TMR1. Внешний тактовый сигнал может быть синхронизирован с внутренним тактовым сигналом микроконтроллера, если бит T1SYNC сброшен.
Таймер TMR2
Таймер TMR2 представляет собой 8-разрядный регистр с 2-разрядным предделителем, 4-разрядным выходным делителем и 8-разрядным регистром периода PR2. Настройка TMR2 выполняется битами регистра T2CON. Таймер имеет единственный источник тактового сигнала - внутренний тактовый сигнал микроконтроллера (Fosc / 4). Частота тактового сигнала может быть уменьшена предделителем в зависимости от состояния битов T2CKPS0 и T2CKPS1. Для отключения предделителя указанные биты следует обнулить. По каждому импульсу от предделителя содержимое таймера TMR2 увеличивается на 1 от 0 до значения, записанного в PR2. При достижении значения PR2, схема сравнения формирует выходной сигнал, который передается выходному делителю и модулю MSSP для управления скоростью передачи данных. Коэффициент деления выходного делителя настраивается битами TOUTPS0, TOUTPS1, TOUTPS2 и TOUTPS3. Запуск работы таймера выполняется установкой в 1 бита TMR2ON.
Сторожевой таймер WDT используется для сброса микроконтроллера в случае программного сбоя. Сторожевой таймер должен обнуляться программно командой CLRWDT. При зависании микроконтроллера, либо невозможности выполнения команды обнуления сторожевого таймера, после его переполнения осуществляется сброс микроконтроллера. Тактирование WDT выполняется отдельным встроенным RC-генератором. Время переполнения сторожевого таймера составляет примерно 18 мс с отключенным делителем.
3. Подключение питания и тактирование микроконтроллера
Питания устройства микропроцессорной системы в научной работе осуществляется от батареи, номиналом 5В. Применяется кварцевый резонатор типа: Murate Erie CSA4.00MG с конденсаторами, емкость которых в пределах от 15 до 68 пФ. Тактовую частоту работы микроконтроллера формирует внутренний генератор. Этот сигнал необходим для выполнения инструкций микроконтроллера и работы периферийных модулей. Один внутренний машинный цикл микроконтроллера состоит из четырех периодов тактового сигнала. Внутренний генератор может работать в одном из восьми режимов в зависимости от настроек на нужную частоту такта. Для работы данной микропроцессорной системы используется кварцевый резонатор с параллельным резонансом. Кварцевый резонатор ZQ1 подключается к выводам OSC1, OSC2 микроконтроллера.
4. Подключение устройств к микроконтроллеру
Использованные устройства:
Ш Вывод через ограничивающий резистор R1 соединен с плюсом батареи питания. Этот вывод связан с кнопкой сброса RESET.
Ш Выводы OSC1, OSC2 подключены в кварцевому резонатору.
Ш Выводы PORTА соединены с звукоизлучателем, который в свою очередь подключен к нулевому потенциалу источника питания.
Ш Выводы PORTВ соединены:
к портам RB7 и RB6 подключен двухпозиционный переключатель, к портам RB4, RB3, RB2, RB1, RB0 подключен пятипозиционный переключатель.
5. Принципиальная схема
1. Применяется кварцевый резонатор типа: Murate Erie CSA4.00MG с конденсаторами емкостью .
2. Сопротивления . Это сопротивление ограничивает ток, поступающий на вход сброса микроконтроллера. Так как возникают броски напряжения на выводе, приводящие к появлению больших токов, необходимо использование . Поэтому для исключения срабатывания защелки последовательно необходимо включить резистор сопротивлением , чтобы обеспечить подачу низкого уровня напряжения, вместо непосредственного подключения к нулевому потенциалу источника питания.
3. Питания устройства микропроцессорной системы осуществляется от батареи номиналом 5В.
Спецификация элементов |
|||
№ по порядку |
Элемент |
Тип |
|
1 |
DD1 |
PIC16F873A |
|
2 |
ZQ |
Murate Erie CSA4.00MG |
|
3 |
C1, C2 |
БМ-2-300-15±10%, 20пФ |
|
4 |
RC |
МЛТ-0.5-1К |
|
5 |
Звукоизлучатель BZ1 |
HCM1201X |
|
6 |
SA1 |
С нормально разомкнутыми контактами без фиксации |
|
7 |
SA2 |
Рис. 5.1. Принципиальная схема
6. Разработка программы для микроконтроллера
Для функционирования микроконтроллера требуется разработка управляющей программы и ее загрузка в память программ. Микроконтроллеры хранят и выполняют программы в виде двоичных кодов, но разработка двоичных программ не удобна для человека. Программы разрабатываются на языке ассемблера или языках программирования высокого уровня таких, как C, Pascal и Basic. Для загрузки программы в процессор, она должна быть специально подготовлена - преобразована в машинный (двоичный) код. В настоящее время для разработки программ микропроцессоров и микроконтроллеров используются персональные компьютеры совместно с интегрированными средами разработки (IDE, Integrated Development Environment), например MPLAB IDE. Интегрированная среда разработки включает текстовый редактор, ассемблер MPASM, набор программ для программирования и отладки, ряд файлов упрощающих разработку. Существует возможность подключить компиляторы языков высокого уровня, предназначенных для программирования микроконтроллеров (например, MPLAB C, HI-TECH, MPLAB XC).
Загрузка программы выполняется устройствами, называемыми программаторами по последовательному интерфейсу внутрисхемного программирования (ICSP, In-Circuit Serial Programming). Для этого используются три вывода микроконтроллера: PGC (RB6) - вывод синхронизации, PGD (RB7) - вывод передачи данных, PGM (RB3) - вывод перехода в режим программирования.
Написание текста программы на языке Ассемблер
#include p16f873a.inc
__CONFIG _HS_OSC
CNTW EQU H'20' ; определим буфер хранения рабочего регистра
CNTS EQU H'21' ; определим буфер хранения регистра статуса
CNTP EQU H'22' ; определим буфер хранения частоты несущей
CNTM EQU H'23' ; определим буфер хранения частоты манипуляции
ORG H'000'
GOTO I10 ; перехожу к инициализации
ORG H'004'
MOVWF CNTW ; зарезервируем значение рабочего регистра
MOVF STATUS, 0 ; и регистра статуса
MOVWF CNTS
BCF STATUS, RP0; после чего выберим банк 0
BCF STATUS, RP1
BTFSC PIR1, TMR2IF ; проверка того, что прерывание по второму таймеру
GOTO I8 ; если прервались по второму таймеру - переход к BZ
BTFSS PIR1, TMR1IF ; проверка того, что прерывание по первому таймеру
GOTO I9 ; переход к выходу из подпрограммы
BCF PIR1, TMR1IF ; сброс флага прерываний по первому таймеру
MOVLW H'04' ; включаем / выключаем таймер 2 для генерации АМ звука
XORWF T2CON, 1
BTFSS CNTM, 0 ; CNTM помнит частоту манипуляции
GOTO M1
MOVLW H'51' ; 0.0417 с - полупериод частоты 12Гц
MOVWF TMR1H
MOVLW H'56'
MOVWF TMR1L
GOTO I9 ; переход к выходу из подпрограммы
M1: MOVLW H'0B' ; 0.0625 с - полупериод частоты 8Гц
MOVWF TMR1H
MOVLW H'DC'
MOVWF TMR1L
GOTO I9 ; переход к выходу из подпрограммы
; включение пищалки
I8: MOVLW H'04' ; включение пищалки
XORWF PORTA, 2
BCF PIR1, TMR2IF ; сброс флага прерываний по второму таймеру
; выход из подпрограммы
I9: MOVF CNTS, 0 ; выход из подпрограммы
MOVWF STATUS ; востановим значение регистра статуса
MOVF CNTW, 0 ; и рабочего регистра
RETFIE ; возврат к основной программе с разрешением прерываний
; инициализация
I10:
CLRF T1CON ; инициализация, предделитель таймеру 1 не нужен
MOVLW H'20' ; предделитель 5
MOVWF T2CON
BSF STATUS, RP0
MOVLW H'0E'
; задаю режимы работы параллельных портов
MOVWF ADCON1
MOVLW B'00000001'
MOVWF TRISA
MOVWF OPTION_REG
MOVLW B'11111111'
MOVWF TRISB
MOVLW B'11100000'
MOVWF TRISC
BSF PIE1, TMR1IE
BSF PIE1, TMR2IE
BSF INTCON, PEIE
BSF INTCON, GIE
BCF STATUS, RP0
BCF STATUS, RP1
CLRF PORTA ; очищаю PORTA, PORTC
CLRF PORTC
I0: BTFSS PORTB, 4 ; здесь проверяю положение переключателя SA2
GOTO I1
BTFSS PORTB, 3 ; здесь проверяю положение переключателя SA2
GOTO I2
BTFSS PORTB, 2 ; здесь проверяю положение переключателя SA2
GOTO I3
BTFSS PORTB, 1 ; здесь проверяю положение переключателя SA2
GOTO I4
BTFSS PORTB, 0 ; здесь проверяю положение переключателя SA2
GOTO I5
GOTO I0 ; зациклимся на проверке положения переключателя при выборе частоты несущей
I1: MOVLW D'238' ; предделитель 5*238 - 420.2Гц
GOTO I6
I2: MOVLW D'208' ; предделитель 5*208 - 480.8Гц
GOTO I6
I3: MOVLW D'172' ; предделитель 5*172 - 581.4Гц
GOTO I6
I4: MOVLW D'139' ; предделитель 5*139 - 719.4Гц
GOTO I6
I5: MOVLW D'128' ; предделитель 5*128 - 781.3Гц
I6: MOVWF CNTP ; резервируем значение частоты, менять пока недопустимо
A0: BTFSS PORTB, 7 ; здесь проверяю положение переключателя SA1
GOTO A1
BTFSS PORTB, 6 ; здесь проверяю положение переключателя SA1
GOTO A2
GOTO A0 ; зациклимся на проверке положения переключателя при выборе частоты манипуляции
A1: MOVLW H'0B' ; 0.0625 с - полупериод частоты 8Гц
MOVWF TMR1H
MOVLW H'DC'
MOVWF TMR1L
MOVF CNTP, 0 ; помещаем значение CNTP в PR2
BSF STATUS, RP0
MOVWF PR2
BCF STATUS, RP0
BCF CNTM, 0 ; запоминуем частоту манипуляции
BSF T1CON, TMR1ON ; включаем первый таймер
GOTO I0 ; возврат к проверке кнопок выбора частоты несущей
A2: MOVLW H'51' ; 0.0417 с - полупериод частоты 12Гц
MOVWF TMR1H
MOVLW H'56'
MOVWF TMR1L
MOVF CNTP, 0 ; помещаем значение CNTP в PR2
BSF STATUS, RP0
MOVWF PR2
BCF STATUS, RP0
BSF CNTM, 0 ; запоминуем частоту манипуляции
BSF T1CON, TMR1ON ; включаем первый таймер
GOTO I0 ; возврат к проверке кнопок выбора частоты несущей
END
Список использованной литературы
1. Дубров И.А., Белошицкий М.Ю., Попов А.Н. Основы микропроцессорной техники: учеб.-метод. пособие. - Екатеринбург: Издательство УрГУПС, - 2012. - 99 с.
2. PIC16F873A Datasheet [Электронный ресурс] // Компания Microchip Tеchnology Inc: [сайт]. [2014]. - URL: http://ww1.microchip.com/downloads/en/DeviceDoc/39582C.pdf (дата обращения 20.12.2014).
Размещено на Allbest.ru
Подобные документы
Разработка принципиальной схемы и описание работы контроллера клавиатуры/дисплея КР580ВД79. Схема сопряжения микроконтроллера с фотоимпульсным датчиком. Расчет потребляемого тока от источника питания. Блок-схема программы вывода информации на индикацию.
курсовая работа [736,9 K], добавлен 18.02.2011Функциональная спецификация и структурная схема электронных автомобильных часов-термометра-вольтметра. Разработка алгоритма работы и принципиальной электрической схемы. Получение прошивки программы для памяти микроконтроллера в результате ассеблирования.
курсовая работа [2,0 M], добавлен 26.12.2009Разработка структурной схемы микроконтроллера. Проектирование подсистемы памяти. Разработка адресного дешифратора, "раскраска" адресной шины. Расчет нагрузочной способности шин. Разработка принципиальной схемы. Программа начальной инициализации системы.
курсовая работа [1,3 M], добавлен 02.05.2016Формирование кодовой таблицы аналогового сигнала. Общая характеристика микроконтроллера P83C51RB+. Дискретизация заданного сигнала генератора. Организация памяти и программная модель, регистры SFR микроконтроллера. Параллельные порты ввода/вывода.
курсовая работа [1005,6 K], добавлен 07.08.2013Описание алгоритма работы и разработка структурной схемы микропроцессорной системы управления. Разработка принципиальной схемы. Подключение микроконтроллера, ввод цифровых и аналоговых сигналов. Разработка блок-схемы алгоритма главной программы.
курсовая работа [3,3 M], добавлен 26.06.2016Проектирование цифрового генератора аналоговых сигналов. Разработка структурной, электрической и функциональной схемы устройства, блок-схемы опроса кнопок и работы генератора. Схема делителя с выходом в виде напряжения на инверсной резистивной матрице.
курсовая работа [268,1 K], добавлен 05.08.2011Функциональная спецификация, описание объекта, структура системы и ресурсов микроконтроллера. Ассемблирование, программирование микроконтроллера и разработка алгоритма работы устройства, описание выбора элементной базы и работы принципиальной схемы.
курсовая работа [2,2 M], добавлен 02.01.2010Роль микроконтроллерных технологий в развитии микроэлектроники. Алгоритм разработки микропроцессорной системы термометр-часы на базе микроконтроллера PIC16F84A. Разработка схемы электрической принципиальной устройства и программы для микроконтроллера.
курсовая работа [584,1 K], добавлен 19.03.2012Расчет генератора синусоидальных сигналов как цель работы. Выбор принципиальной схемы высокочастотного генератора средней мощности. Порядок расчета LC-генератора на транзисторе, выбор транзистора. Анализ схемы (разработка математической модели) на ЭВМ.
курсовая работа [258,5 K], добавлен 10.05.2009Цифровой термостат с регулируемым гистерезисом на базе микроконтроллера ATtiny2313. Разработка алгоритма функционирования устройства. Разработка принципиальной схемы. Подключение устройств к МК PIC16F84A. Разработка цепи питания устройства, программа.
курсовая работа [10,9 M], добавлен 07.01.2013