Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






ПМ.02 Применение микропроцессорных систем, установка и настройка периферийного оборудования

Министерство образования и молодежной политики СК

ГБПОУ «Лермонтовский региональный многопрофильный колледж»

 

Работа допущена к защите

Зав. кафедрой «Компьютерные системы

и комплексы»

______________Н.Н. Шляхова

«____»______________2016 г.

 

 

КУРСОВАЯ РАБОТА

Пояснительная записка

 

Тема: Разработка измерителя частоты сигналов на микроконтроллере pic16f628

ПМ.02 Применение микропроцессорных систем, установка и настройка периферийного оборудования

специальность 09.02.01 «Компьютерные системы и комплексы»

Выполнил студент гр. ВТ-44       Бойко Артём Владимирович
    группа   подпись   ФИО студента
Проверил     Томулевич Д.В.
    оценка и подпись ФИО проверяющего
                 

 

 

Лермонтов, 2016

 

СОДЕРЖАНИЕ

 

СОДЕРЖАНИЕ. 3

ВВЕДЕНИЕ. 4

1. ВЫБОР МИКРОКОНТРОЛЛЕРА ДЛЯ РАЗРАБОТКИ ИЗМЕРИТЕЛЯ ЧАСТОТЫ СИГНАЛОВ НА МИКРОКОНТРОЛЛЕРЕ PIC16F628. 6

2. ПРОЕКТИРОВАНИЕ ИЗМЕРИТЕЛЯ ЧАСТОТЫ СИГНАЛОВ НА МИКРОКОНТРОЛЛЕРЕ PIC16F628. 8

3. РАЗРАБОТКА ИЗМЕРИТЕЛЯ ЧАСТОТЫ СИГНАЛОВ НА МИКРОКОНТРОЛЛЕРЕ PIC16F628. 10

4. РАЗРАБОТКА ПРОГРАММЫ ИЗМЕРИТЕЛЯ ЧАСТОТЫ СИГНАЛОВ НА МИКРОКОНТРОЛЛЕРЕ PIC16F628. 12

5. ТЕСТИРОВАНИЕ ПРОГРАММЫ ИЗМЕРИТЕЛЯ ЧАСТОТЫ СИГНАЛОВ НА МИКРОКОНТРОЛЛЕРЕ PIC16F628. 16

ЗАКЛЮЧЕНИЕ. 19

СПИСОК ЛИТЕРАТУРЫ.. 20

ПРИЛОЖЕНИЯ………………………...…………………………………21


 

ВВЕДЕНИЕ

 

Измеритель частоты может применяться практически где угодно. Радиолюбители применяют такие устройства при разработке своих приборов, они являются основой измерителей скорости и схожих приспособлений.

Измеритель частоты может потребоваться для калибровки цифровых устройств, а так же повсеместно применяются на заводах и предприятиях, т.е. там где требуется отслеживать технические процессы. Частота импульсов может быть образованна не только другим цифровым устройством, но и всяческими датчиками, отслеживающими количество циклов различных операций.

Несмотря на это, измерители частоты обычно не встречаются в мультиметрах и в виде простых дешёвых модулей, вместо этого на рынке в основном встречаются большие и сложные приборы с соответствующей стоимостью. Даже если учесть высокий функционал, широкий диапазон измерений и гибкую настройку, короб весом один-два килограмма точно нельзя назвать мобильным. Поэтому и возникла идея создания простого дешёвого и компактного частотомера на базе микроконтроллера.

Практически во всех современных микроконтроллерах одним из базовых устройств является таймер-счётчик. Зачастую они способны так же работать в режиме широтно-импульсной модуляции (ШИМ).

Изучая рынок микроконтроллеров, сразу же в глаза бросаются крайне популярные контроллеры фирмы AVR, однако, предпочтение всё таки было отдано компании microchip с их микроконтроллерами PIC. Дело в том что наиболее распространённые модели AVR являются крайне универсальными устройствами, что связанно с большим количеством периферии и ножек. Если стоит вопрос о размере готовой платы, то AVR готова предложить микроконтроллер ATtiny 2313, однако он не имеет аналого-цифрового преобразователя и во многом уступает более дорогим моделям. ATmega 8 имеет на борту АЦП, но у неё уже 24 вывода, а где-то этого может быть слишком много. PIC же может предложить крайне недорогой контроллер с небольшим количеством выводов, но с достаточно широким функционалом. Конечно, к недостаткам можно отнести надобность в относительно дорогом программаторе, который вряд ли удастся найти в глубинке. Здесь на помощь придут интернет магазины, к тому же такой программатор будет отличаться гораздо большей надёжностью.

Максимальная частота, которую может измерить контроллер, определяется выбранной моделью, если точнее, то периферией, которой он оборудован. В основном это разрядность самого контроллера и его таймеров.

Важный момент заключается в том, что разрабатываемый частотомер может быть выполнен не только как отдельное устройство, но и как внутрисхемный модуль. Для реализации подобного приспособления без микроконтроллера понадобились бы десятки цифровых микросхем, а микроконтроллер, особенно в smd-исполнении, сможет выполнять всю эту работу самостоятельно, занимая при этом несколько сантиметров на печатной плате устройства.

 


 

1. ВЫБОР МИКРОКОНТРОЛЛЕРА ДЛЯ РАЗРАБОТКИ ИЗМЕРИТЕЛЯ ЧАСТОТЫ СИГНАЛОВ НА МИКРОКОНТРОЛЛЕРЕ PIC16F628

 

Выбор микроконтроллера должен производиться не «с потолка» и пропускать этот шаг ни в коем случае нельзя. Подбор оптимальной модели во многом определяет стоимость будущего изделия, интерфейсы, через которыми он может «держать связь» с другими контроллерами и с пользовательским интерфейсом. Разные контроллеры требует разных подходов при программировании и разных программаторов. Стоит сразу определить, какие требования будут предъявляться к микроконтроллеру:

· наличие всей необходимой периферии для поставленной задачи – лучше сразу выбрать устройство, оборудованное некоторыми полезными аппаратными средствами, чем усложнять код дополнительными процедурами для компенсации этих функций;

· отсутствие избыточности функционала – само собой для частотомера подойдёт и какая-нибудь сороконогая схема контроллера ATmega 16, но большинство её выводов будет висеть в воздухе, а огромное количество периферии потреблять лишний ток, не говоря уже о занятии лишнего места на плате;

· доступность – в некоторых ситуациях легче купить модель микроконтроллера, которая есть на прилавке, чем заказывать из сети и платить двойную, а то тройную цену с учётом доставки;

· надёжность – этим давно хвастают как Microchip, так и AVR, так что в этом вопросе особенных проблем быть не может, большинство контроллеров этих фирм зарекомендовали себя как качественные и редко дающие сбои устройства.

 

Далее будут рассмотрены несколько моделей микроконтроллеров компании Microchip из линейки PIC:

      Таблица 1
  Сравнение типовых микроконтроллеров PIC    
  PIC12F629 PIC16F628 PIC16F84A
Кол-во выводов      
Кол-во таймеров      
Каналов ШИМ -    
Объём памяти программ, Кб      
           

 

Как видно из сравнения, первый контроллер PIC12F629 обладает достаточным объёмом памяти для достаточно объёмных программ, но при этом не имеет каналов широтно-импульсной модуляцией, которая может оказаться полезной практически в любом устройстве. PIC16F84A обладает модулем ШИМ, имеет 18 ножек и один таймер, но объём памяти – всего 1 Кб, этого очень мало даже для небольшого проекта.

PIC16F628 же обладает очень большим объёмом памяти, имеет модуль ШИМ, оборудован тремя таймерами и 18 выводами. Стоимость такого контроллера составляет порядка 100 рублей в розничной продаже, и выбор будет остановлен именно на нём.

2. ПРОЕКТИРОВАНИЕ ИЗМЕРИТЕЛЯ ЧАСТОТЫ СИГНАЛОВ НА МИКРОКОНТРОЛЛЕРЕ PIC16F628

 

Чтобы спроектировать устройство частотомера, нужно первым делом понять, что требуется от схемы, какие операции будет выполнять устройство и что для этого нужно, чтобы позже не путаться и лучше понимать суть проводимой работы.

Итак, прибор будет выполнять следующие операции:

· считать количество импульсов за заданный период времени;

· обрабатывать это число и преобразовывать его для вывода на индикатор;

· выводить на индикатор числа поочерёдно с определённым интервалом;

При этом желательно, чтобы применялся внешний кварцевый резонатор, для чего это нужно – будет описано в следующей главе.

Обобщая предыдущие три пункта, можно составить функциональную схему данного устройства.

Входной измеряемый сигнал
  Микроконтроллер ATmega 16
  LCD-дисплей
Тактовый генератор

 

 


Рис. 1. Функциональная схема измерителя частоты сигналов


Для измерения частоты планируется применить встроенный в микроконтроллер аппаратный счётчик. Принцип его работы заложен в самом устройстве, а функционирование элементарно – устройство следит за появлением на специальной ножке высокого уровня напряжения и как только он будет зарегистрирован, прибавляет к значению счётчика единицу.

Несмотря на наличие системы прерываний, задержка будет формироваться пропуском тактов, такой метод неэффективен с точки зрения грамотного расходования ресурсов контроллера. Последний в данном устройстве не должен выполнять каких-либо сложных задач, которые требовали постоянной обработки. Вернее, конечно, счётный вход должен работать постоянно, но именно поэтому им занимается аппаратный счётчик, независимый от центрального процессора. В общем, такое формирование задержки вполне допустимо.

3. РАЗРАБОТКА ИЗМЕРИТЕЛЯ ЧАСТОТЫ СИГНАЛОВ НА МИКРОКОНТРОЛЛЕРЕ PIC16F628

 

Для индикации входной частоты будет применяться семисегментный трёхразрядный светодиодный индикатор. Специфика его работы такова, что в простых моделях индикатор не имеет ни встроенных декодеров, ни каких-либо устройств для поддержания сегмента активным. Требуется постоянно поочерёдно зажигать числа со скоростью достаточной, чтобы человеческий глаз не видел мерцания. При этом, конечно, создаётся эффект широтно‑импульсной модуляции, т.е. сегменты получают лишь часть энергии из-за того что работают не постоянно, свечение становится более тусклым, но обычно это не является большой проблемой.

Сегменты можно питать и напрямую от контроллера, но при этом яркость их действительно будет заметно занижена, к тому же, может возникнуть просадка напряжения, из-за которой станут нестабильно работать модуль компаратора и тактовый генератор. Чтобы избежать этого, лучше включать сегменты через npn или pnp транзистор, в зависимости от того, какую логику планируется использовать, положительную или отрицательную.

Так как ток от ножки контроллера будет течь через базу на землю, требуется защитить микроконтроллер добавлением резисторов, номиналом в несколько КОм. Так как биполярный транзистор открывается напряжением, стоит взять запас, поэтому применён будет резистор номиналом 4 КОм-а.

Но в защите от замыкания нуждается не только контроллер, но и сам индикатор. Так как он всё ещё остаётся светодиодным и достаточно примитивным, то, как и любой светодиод, его сегменты могут быть повреждены большим током. Для ограничения этого тока установим резисторы возле каждой из ножек-анодов. Обычно применяются резисторы номиналом порядка 100 Ом, но так как было решено брать номиналы с запасом, будут установлены варианты с номиналом 400 Ом, это так же не изменит яркость, но обеспечит лишнюю защиту.

Контроллеру необходима тактовая частота. Изначально он берёт её со встроенного генератора, но тот не отличается высокой точностью и иногда желательно заменить его внешней частотозадающей цепью. В данном случае устройство будет измерять сигналы до одного мегагерца, поэтому временные задержки, между которыми производится считывание счётчика, должно быть задано очень точно. В качестве внешней тактовой цепи будет служить кварцевый резонатор на четыре мегагерца, вполне штатная скорость для этого микроконтроллера.

Для надёжности и уменьшения помех будут установлены два конденсатора на землю.

Электрическая схема устройства приведена в Приложении 1.


4. РАЗРАБОТКА ПРОГРАММЫ ИЗМЕРИТЕЛЯ ЧАСТОТЫ СИГНАЛОВ НА МИКРОКОНТРОЛЛЕРЕ PIC16F628

 

При написании программы всегда первым делом проводится инициализация. Она позволяет подготовить микроконтроллер к работе, запустить необходимые функции и описать, за что будут отвечать ножки. Это общие правила. При разработке программ в среде AVR studio многие вещи выполняются в автоматическом режиме. С контроллерами компании Microchip дело обстоит сложнее, среда программирования для PIC не предусматривает автоматическое именование служебных регистров, поэтому его необходимо провести самостоятельно.

Это делается с помощью директивы EQU, пример: d16 EQU H'36' – ячейке 36 присвоить имя D16. Буква H в данном случае говорит о том, что число записано в шестнадцатеричной системе счисления. Таким образом нужно дать имена всем основным специальным регистрам.

Далее, опять же, для удобства программиста, назначаются имена переменных.

Кроме того, обязательно применение директивы #include, она указывает на информационный файл конкретного микроконтроллера, в котором описана структура его памяти, система команд и другие элементы.

В программе реализована функция временной задержки. Она исполняется за счёт занесения в два регистра определённых чисел и в применении специально обставленного цикла.

DELAY1

movlw D'125'

movwf timer1

movlw D'7'

movwf timer2

LOOP1

decfsz timer1, f

goto loop1

decfsz timer2, f

goto loop1

return

 

В приведённом участке кода DELAY1 и LOOP1 – метки, предназначенные для удобного перемещения по программе и осуществлении условных переходов.

В два регистра, timer1 и timer2, записываются значения, буква D говорит о том, что используется десятичная система счисления. В следующей части применяется команда decfsz, которая декрементирует число в регистре и пропускает следующую команду, если оно достигло нуля. Таким образом, цикл выполняет чётко определённое количество раз, пересчётом тактов и определяется величина задержки.

Другой участок кода отвечает за пересчёт чисел. Дело в том, что на семисегментный индикатор требуется вывести три отдельных числа. Информация же с таймера представляет из себя цельное двоичное число. Его необходимо превратить в три, в каждом будет число, соответствующее числу десятков, сотен и единиц. Для этого используется следующий участок программы:

dsp1

movfw dgt100

addlw H'20'

movwf FSR

movfw INDF

movwf PORTB

movfw dgt100

addlw H'30'

movwf FSR

movfw INDF

movwf PORTA

return

 

dsp2

movfw dgt10

addlw H'20'

movwf FSR

movfw INDF

movwf PORTB

movfw dgt10

addlw H'30'

movwf FSR

movfw INDF

movwf PORTA

return

 

dsp3

movfw dgt1

addlw H'20'

movwf FSR

movfw INDF

movwf PORTB

movfw dgt1

addlw H'30'

movwf FSR

movfw INDF

movwf PORTA

return

 

Здесь, путём взаимодействия с буферными регистрами W и F, проходит следующий процесс:

· в буфер заранее заносится число;

· в цикле из него вычитаются сотни, десятки или единицы, каждый раз инкрементируется счётчик;

· в тот момент, когда исходное число станет меньше или равно нулю, происходит переход к следующему циклу.

В итоге из одного числа выводятся три. Их уже можно выводить на индикатор.

Сам же счёт проходит с помощью аппаратного таймера-счётчика. Программа просто очищает его, выдерживает временной интервал и после этого считывает значение. Т.к. считывания происходят не каждую секунду, а гораздо чаще, полученное значение так же нужно умножить на определённый коэффициент, с этим тоже легко расправляется программный модуль.

Полный текст программы приведён в Приложении 2.

 


 

5. ТЕСТИРОВАНИЕ ПРОГРАММЫ ИЗМЕРИТЕЛЯ ЧАСТОТЫ СИГНАЛОВ НА МИКРОКОНТРОЛЛЕРЕ PIC16F628

 

При разработке программы, в первую, очередь, применялась среда программирования. Их представлено достаточно много, но была выбрана так называемая MicroCode Studio Plus.


Интегрированная среда разработки MicroCode Studio Plus представляет собой удобное и функциональное приложение для написания и редактирования текстов программ для микроконтроллеров семейства PIC. Кроме того приложение позволяет компилировать программы в машинный код, записывать их при помощи программатора в микроконтроллер и осуществлять внутрисхемное программирование при поддержке встроенного загрузчика бутлоадера.

Рис. 2. Программирование в среде MicroCode Studio Plus

Редактор приложения MicroCode Studio Plus поддерживает подсветку и подсказки синтаксиса кода, контекстно-зависимую справку, установку контрольных точек, интеллектуальную табуляцию, выравнивание строк комментариев, автоизменение формы записи идентификаторов, модификацию используемых шрифтов и многое-многое другое. Имеются функции распечатки страниц редактора, отмена/возврат последних сделанных изменений, вырезка/копирование/вставка/удаление выделенного текста, поиск/замена текстовых фрагментов.

Рис. 3. Процесс прошивки FUSE-битов

 

Программа предназначена для работы с компилятором PICBasic или PicBasic Pro (ассемблер PM.EXE). Также имеется возможность устанавливать ассемблер MPASM компании Microchip. При первом запуске программа MicroCode Studio Plus автоматически находит и прописывает месторасположение компилятора (не находит, если в пути к папке есть русские буквы). Если в системе присутствуют несколько компиляторов, то путь можно прописать вручную. Поддерживаются следующие режимы работы: компилирование активного окна, компилирование активного окна с записью кода в МК, компилирование с созданием шестнадцатеричного файла с дополнительной информацией для работы в отладочном режиме, компилирование и трансляция текста с добавлением отладочной информации и записью в контроллер. Окно результатов компилирования дает возможность мгновенно перейти к строкам программы, содержащим ошибки. Режим анимации процесса выполнения программы подсвечивает строки кода и показывает текущие значения всех регистров, переменных, СППЗУ и памяти. Имеется возможность провести интерактивную отладку программы.

 

 


 

ЗАКЛЮЧЕНИЕ

 

В ходе разработке курсового проекта были освоены микроконтроллеры линейки PIC компании Microchip, что в условиях современной «избалованности» заказчиков является крайне полезным навыком, ведь задачи бывают самые разные и в какой-то момент под рукой может не оказаться привычной AVR. Так же, переключиться на другой род контроллеров может понадобиться, если вдруг среди основных не окажется устройства, отвечающего всем требованиям.

Так как PIC-и устроены довольно специфично, это послужило своеобразной тренировкой. Пришлось освоить новые команды и особенности языка. Например, банки памяти, в которых распределена информация и между которыми необходимо постоянно переключаться.

Говоря об устройстве, был разработан частотомер, измеряющий частоту входного сигнала до 1 Мгц - устройство, полезное как в быту, так и на производстве, радиолюбителям и профессиональным техникам. В отличие от частотомеров, находящихся в продаже, этот прибор гораздо меньше и, что важно, гораздо дешевле. При использовании семисегментных индикаторов стоимость изделия может составлять около 200-300 рублей.

СПИСОК ЛИТЕРАТУРЫ

 

1. Гелль П.П., Н.К.Иванов-Есипович. Конструирование и микроминиатюризация радиоэлектронной аппаратуры: Учебник для вузов. - Л.: Энергоатомиздат. Ленингр.отд-ние, 1984. – 536 с.

2. Гуткин А.С. Проектирование радиосистем и радиоустройств. - М: Высш. Шк., 1989.

3. Микроконтроллеры. Выпуск 2: Однокристальные микроконтроллеры PIC12c5x, PIC16x8x, PIC14000, M16C/61/62. Перевод с англ. Б.Я. Прокопенко / Под ред. Б. Я. Прокопенко. - М.: ДОДЭКА, 2000.- 336 с.

4. Радио №1, 2001г. - с.21, "Частотомер на PIC-контроллере".

5. Справочник по конструированию РЭА под ред. А.И. Горобец, А.И. Степаненко, В.М. Коронкевич.

6. Угрюмов Е.П. Цифровая схемотехника. - СПб.: БХВ-Санкт-Петербург, 2000. - 528 с.: ил.

7. Фрумкин Г.Д. Расчет и конструирование радиоаппаратуры: Учебник для радиотехнич. спец. Техникумов. М.: Высш. Шк.,1989. - 463 с.: ил.

8. microchip:8101/

9. paguo/

10. disall.narod/picpro.htm

11. chipnews/html.cgi/arhiv/index.htm

 


 

ПРИЛОЖЕНИЕ 1

ПРИНЦИПИАЛЬНАЯ ЭЛЕКТРИЧЕСКАЯ СХЕМА ИЗМЕРИТЕЛЯ ЧАСТОТЫ СИГНАЛОВ НА МИКРОКОНТРОЛЛЕРЕ PIC16F628

 

 

 


 

ПРИЛОЖЕНИЕ 2

ПОЛНЫЙ ТЕКСТ РАЗРАБОТАННОЙ ПРОГРАММЫ ИЗМЕРИТЕЛЯ ЧАСТОТЫ СИГНАЛОВ НА МИКРОКОНТРОЛЛЕРЕ PIC16F628

Да
Да
Да
#include <p16F628.inc>

 

_BODEN_ON EQU H'3FFF'

_BODEN_OFF EQU H'3FBF'

_CP_ALL EQU H'03FF'

_CP_75 EQU H'17FF'

_CP_50 EQU H'2BFF'

_CP_OFF EQU H'3FFF'

_DATA_CP_ON EQU H'3EFF'

_DATA_CP_OFF EQU H'3FFF'

_PWRTE_OFF EQU H'3FFF'

_PWRTE_ON EQU H'3FF7'

_WDT_ON EQU H'3FFF'

_WDT_OFF EQU H'3FFB'

_LVP_ON EQU H'3FFF'

_LVP_OFF EQU H'3F7F'

_MCLRE_ON EQU H'3FFF'

_MCLRE_OFF EQU H'3FDF'

_ER_OSC_CLKOUT EQU H'3FFF'

_ER_OSC_NOCLKOUT EQU H'3FFE'

_INTRC_OSC_CLKOUT EQU H'3FFD'

_INTRC_OSC_NOCLKOUT EQU H'3FFC'

_EXTCLK_OSC EQU H'3FEF'

_LP_OSC EQU H'3FEC'

_XT_OSC EQU H'3FED'

_HS_OSC EQU H'3FEE'

 

 

d0 EQU H'20'

d1 EQU H'21'

d2 EQU H'22'

d3 EQU H'23'

d4 EQU H'24'

d5 EQU H'25'

d6 EQU H'26'

d7 EQU H'27'

d8 EQU H'28'

d9 EQU H'29'

dF EQU H'2A'

d10 EQU H'30'

d11 EQU H'31'

d12 EQU H'32'

d13 EQU H'33'

d14 EQU H'34'

d15 EQU H'35'

d16 EQU H'36'

d17 EQU H'37'

d18 EQU H'38'

d19 EQU H'39'

dFF EQU H'3A'

dgt100 EQU H'3B'

dgt10 EQU H'2B'

dgt1 EQU H'2F'

TIMER1 EQU H'2C'

TIMER2 EQU H'2D'

count EQU H'2E'

cnvrt EQU H'3C'

 

 

ORG 0

GOTO init

 

DELAY1 movlw D'125'

movwf timer1

movlw D'7'

movwf timer2

LOOP1 decfsz timer1, f

goto loop1

decfsz timer2, f

goto loop1

return

 

dsp1 movfw dgt100

addlw H'20'

movwf FSR

movfw INDF

movwf PORTB

movfw dgt100

addlw H'30'

movwf FSR

movfw INDF

movwf PORTA

return

 

dsp2 movfw dgt10

addlw H'20'

movwf FSR

movfw INDF

movwf PORTB

movfw dgt10

addlw H'30'

movwf FSR

movfw INDF

movwf PORTA

return

 

dsp3 movfw dgt1

addlw H'20'

movwf FSR

movfw INDF

movwf PORTB

movfw dgt1

addlw H'30'

movwf FSR

movfw INDF

movwf PORTA

return

 

init MOVLW B'00000111'

MOVWF CMCON

movlw B'11101'

movwf T2CON

movlw B'101110'

movwf T1CON

BSF STATUS,RP0

movlw.250

movwf PR2

MOVLW B'100'

MOVWF OPTION_REG

movlw B'11000000'

movwf TRISB

MOVLW B'11100000'

MOVWF TRISA

BCF STATUS,RP0

 

movlw B'111111'

movwf d0

clrf d10

movlw B'110'

movwf d1

clrf d11

movlw B'11011'

movwf d2

clrf d12

bsf d12,3

movlw B'1111'

movwf d3

clrf d13

bsf d13,3

movlw B'100110'

movwf d4

clrf d14

bsf d14,3

movlw B'101101'

movwf d5

clrf d15

bsf d15,3

movlw B'111100'

movwf d6

clrf d16

bsf d16,3

movlw B'111'

movwf d7

clrf d17

movlw B'111111'

movwf d8

clrf d18

bsf d18,3

movlw B'100111'

movwf d9

clrf d19

bsf d19,3

movlw B'110001'

movwf dF

clrf dFF

bsf dFF,3

 

clrf dgt1

clrf dgt10

clrf dgt100

 

main movlw.120

movwf count

loop2 call dsp1

bsf PORTA,0

call delay1

call dsp2

bsf PORTA,1

call delay1

call dsp3

bsf PORTA,2

call delay1

decfsz count,f

goto loop2

 

bcf PIR1,TMR2IF

clrf TMR1L

clrf TMR1H

gopen btfss PIR1,TMR2IF

goto gopen

bsf T1CON,TMR1ON

bcf PIR1,TMR2IF

gclse btfss PIR1,TMR2IF

goto gclse

bcf T1CON,TMR1ON

bcf PIR1,TMR2IF

incf TMR1H,f

movfw TMR1L

movwf cnvrt

incf cnvrt,f

clrf dgt1

clrf dgt10

clrf dgt100

 

b2d decfsz cnvrt,f

goto b2d1

goto b2d2

 

b2d1 incf dgt1,f

movlw.10

subwf dgt1,w

btfss status,z

goto b2d

incf dgt10,f

clrf dgt1

movlw.10

subwf dgt10,w

btfss status,z

goto b2d

incf dgt100,f

clrf dgt10

movlw.10

subwf dgt100,w

btfss status,z

goto b2d

clrf dgt100

movlw.10

movwf dgt10

movlw.120

movwf count

loop3 call dsp1

bsf PORTA,0

call delay1

call dsp2

bsf PORTA,1

call delay1

call dsp3

bcf PORTA,2

call delay1

decfsz count,f

goto loop3

goto main

b2d2 decfsz TMR1H,f

goto b2d

END


<== предыдущая | следующая ==>
Финансовые результаты предприятия | 

Date: 2016-07-05; view: 999; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию