Микроконтроллеры и микропроцессорные системы

Автор работы: Пользователь скрыл имя, 10 Сентября 2013 в 16:43, реферат

Краткое описание

Мировая промышленность выпускает огромную номенклатуру микроконтроллеров. По области применения их можно разделить на два класса : специализированные, предназначенные для применения в какой-либо одной конкретной области (контроллер для телевизора, контроллер для модема, контроллер для компьютерной мышки ) и универсальные, которые не имеют конкретной специализации и могут применяться в самых различных областях микроэлектроники, с помощью которых можно создать как любое из перечисленных выше устройств, так и принципиально новое устройство.
Цель курсовой работы – основываясь на знаниях, полученных при изучении темы «Микроконтроллеры и микропроцессорные системы» разработать микропроцессорную систему цифрового термометра на базе микроконтроллера.

Содержание

Введение
1. Описание объекта и функциональная спецификация
2. Описание структуры системы
3. Описание ресурсов МК PIC16F628
3.1 Характеристика RISC ядра
3.2 Особенности микроконтроллеров
3.3 Характеристики пониженного энергопотребления
3.4 Периферия
3.5 Расположение выводов
3.6 Особенности структурной организации PIC 16С84
3.7 Обозначение выводов и их функциональное назначение
3.8 Организация памяти данных (ОЗУ)
4. Разработка алгоритма работы устройства
5. Ассемблирование
6. Описание функциональных узлов МПС и алгоритма их взаимодействия
7. Описание выбора элементной базы и работы принципиальной схемы
8. Работа с устройством
Заключение
Список литературы

Прикрепленные файлы: 1 файл

электронный термометр.doc

— 975.50 Кб (Скачать документ)

 CALLWXO1;НА ВХОД = 1 НА ВЫХОДЕ.

 MOVLW.15;УДЕРЖИВАЕМ 60 МКС.

CALLX4;

 GOTOPOS1;ПОВТОРИМ.

;==================================

; 23. ВЫДЕЛЕНИЕ 1.

;==================================

CXET1

BTFSCFLAG1,4;НАЧАЛЬНАЯ ПАУЗА.

GOTO$+3;

BSFFLAG1,4;

RETURN;

BCFFLAG1,3;ПО УМОЛЧАНИЮ  ЗНАК ПЛЮС.

BTFSCLSBH,3;ЕСЛИ ИНАЧЕ,

BSFFLAG1,3;ТО УСТАНОВИМ МИНУС.

BTFSSFLAG1,3;ЕСЛИ ЗНАК ПЛЮС,

GOTO$+7;ТО НЕ ИНВЕРТИРУЕМ.

COMFLSB,1;ПРОИНВЕРТИРУЕМ  МЛАДШИЙ

COMFLSBH,1;И СТАРШИЙ РЕГИСТРЫ  ПРИЕМА.

BCFSTATUS,0;

INCFLSB,1;ПРИБАВИМ ЕДИНИЦУ.

BTFSCSTATUS,0;ЕСЛИ ЕСТЬ ПЕРЕНОС,

INCFLSBH,1;ТО УВЕЛИЧИМ  СТАРШИЙ РЕГИСТР.

MOVFWLSB;ВЫДЕЛИМ ДЕСЯТЫЕ.

ANDLWB'00001111';ЗАМАСКИРУЕМ.

CALLDESATI;ПЕРЕКОДИРУЕМ С  ОКРУГЛЕНИЕМ.

MOVWFDST1;ЗАПИШЕМ В РЕГИСТР  ДЕСЯТЫХ.

MOVLW.4;СДВИГОМ ВПРАВО  НА 4 РАЗРЯДА

MOVWFCOUN;

BCFSTATUS,0;ВЫДЕЛИМ ЦЕЛУЮ  ЧАСТЬ.

RRFLSBH,1;

RRFLSB,1;

DECFSZCOUN,1;

GOTO$-4;

MOVLW.251;ПО УМОЛЧАНИЮ  ЗНАК ПЛЮС.

MOVWFSOT1;

BTFSSFLAG1,3;ЕСЛИ ИНАЧЕ,

GOTO$+3;ТО УСТАНОВИМ

MOVLW.253;МИНУС.

MOVWFSOT1;

;======================================================

; 24. ВЫБОР СРАВНЕНИЯ  ПО СОХРАНЕННОМУ И ИЗМЕРЕННОМУ  ЗНАКАМ 1.

;======================================================

MAXZ

MOVFWSOT1;ЕСЛИ ЗНАКИ РАВНЫ,

SUBWFSOT1X,0;

SKPZ;ТО ОПРЕДЕЛИМ ЗНАК.

GOTO$+5;

BTFSSFLAG1,3;ЕСЛИ ЗНАК ПЛЮС,

GOTOCOPL1X;ТО ПРОВЕРЯЕМ  НА ПРЕВЫШЕНИЕ.

BTFSCFLAG1,3;ЕСЛИ ЗНАК МИНУС,

GOTOCOMI1X;ТО ПРОВЕРЯЕМ  НА УМЕНЬШЕНИЕ.

SKPNC;ЕСЛИ ИЗМЕРЕННЫЙ  ЗНАК МЕНЬШЕ (+) СОХРАНЕННОГО,

GOTOCOXPX;ТО СОХРАНИМ ИЗМЕРЕННОЕ  ЗНАЧЕНИЕ.

MINZ

MOVFWSOT1;ЕСЛИ ЗНАКИ РАВНЫ,

SUBWFSOT1N,0;

SKPZ;ТО ОПРЕДЕЛИМ ЗНАК.

GOTO$+5;

BTFSCFLAG1,3;ЕСЛИ ЗНАК МИНУС,

GOTOCOPL1N;ТО СРАВНИВАЕМ  НА ПРЕВЫШЕНИЕ.

BTFSSFLAG1,3;ЕСЛИ ЗНАК ПЛЮС,

GOTOCOMI1N;ТО СРАВНИВАЕМ  НА УМЕНЬШЕНИЕ.

SKPC;ЕСЛИ ИЗМЕРЕННЫЙ  ЗНАК БОЛЬШЕ (-) СОХРАНЕННОГО,

GOTOCOXPN;ТО СОХРАНИМ ИЗМЕРЕННОЕ  ЗНАЧЕНИЕ.

GOTOBDIN1;НА ПЕРЕКОДИРОВКУ.

;===================================

; 25. СРАВНЕНИЕ НА MAX 1.

;===================================

COPL1X

MOVFWLSB1X;ЕСЛИ СОХРАНЕННОЕ ЗНАЧЕНИЕ

SUBWFLSB,0;БОЛЬШЕ ИЗМЕРЕННОГО,

BTFSSSTATUS,0;ТО СОХРАНЕНИЯ  НЕТ.

GOTOMINZ;.

BTFSSSTATUS,2;ЕСЛИ РАВЕНСТВО  ЦЕЛЫХ,

GOTO$+5;

MOVFWDST1X;ТО ПРОВЕРИМ  ДЕСЯТЫЕ.

SUBWFDST1,0;ЕСЛИ БОЛЬШЕ

BTFSSSTATUS,0;ИЛИ РАВНО,  ТО СОХРАНИМ.

GOTOMINZ;ИНАЧЕ ПРОВЕРИМ НА МИНИМУМ.

COXPX

BTFSSFLAG1,3;-0 НЕТ.

GOTO$+4;

TSTFLSB;

BZMINZ;

MOVFWSOT1;СОХРАНИМ МАКСИМАЛЬНОЕ  ЗНАЧЕНИЕ.

MOVWFSOT1X;ЗНАК.

MOVFWLSB;СОХРАНИМ НОВОЕ  ЗНАЧЕНИЕ

MOVWFLSB1X;ЦЕЛЫХ

MOVFWDST1;И ДЕСЯТЫХ.

MOVWFDST1X;

MOVFWMIN;

MOVWFMIN1X;МИНУТЫ.

MOVFWHOU;

MOVWFHOU1X;ЧАСЫ.

BTFSCFLAG1,3;ПЕРЕПИШЕМ ФЛАГ  ЗНАКА

BSFFLAG,0;В ФЛАГ ХРАНЕНИЯ.

BTFSSFLAG1,3;

BCFFLAG,0;

GOTOMINZ;НА ПРОВЕРКУ ПО  МИНИМУМУ.

COMI1X

MOVFWLSB1X;ЕСЛИ СОХРАНЕННОЕ  ЗНАЧЕНИЕ

SUBWFLSB,0;МЕНЬШЕ ИЗМЕРЕННОГО,

BTFSCSTATUS,2;ТО СОХРАНЕНИЯ  НЕТ.

GOTO$+3;

BTFSSSTATUS,0;ЕСЛИ РАВЕНСТВО ЦЕЛЫХ,

GOTOCOXPX;

MOVFWDST1X;ТО ПРОВЕРИМ  ДЕСЯТЫЕ.

SUBWFDST1,0;ЕСЛИ МЕНЬШЕ

BTFSCSTATUS,0;ИЛИ РАВНО,

GOTOMINZ;СРАВНИМ ПО МИНИМУМУ.

GOTOCOXPX;ИНАЧЕ СОХРАНИМ.

;===================================

; 26. СРАВНЕНИЕ НА MIN 1.

;===================================

COPL1N

MOVFWLSB1N;ЕСЛИ СОХРАНЕННОЕ  ЗНАЧЕНИЕ

SUBWFLSB,0;МЕНЬШЕ ИЗМЕРЕННОГО,

BTFSSSTATUS,0;ТО СОХРАНЕНИЯ  НЕТ.

GOTOBDIN1;ПЕРЕПИШЕМ.

BTFSSSTATUS,2;ЕСЛИ РАВЕНСТВО  ЦЕЛЫХ,

GOTO$+5;

MOVFWDST1N;ТО ПРОВЕРИМ  ДЕСЯТЫЕ.

SUBWFDST1,0;ЕСЛИ ИЗМЕРЕННОЕ  МЕНЬШЕ

BTFSSSTATUS,0;ИЛИ РАВНО СОХРАНЕННОМУ, ТО СОХРАНИМ.

GOTOBDIN1;НА ПЕРЕКОДИРОВКУ.

COXPN

BTFSSFLAG1,3;-0 НЕТ.

GOTO$+4;

TSTFLSB;

BZBDIN1;

MOVFWSOT1;СОХРАНЕНИЕ МИНИМАЛЬНОГО.

MOVWFSOT1N;ЗНАК.

MOVFWLSB;СОХРАНИМ НОВОЕ  ЗНАЧЕНИЕ

MOVWFLSB1N;ЦЕЛЫХ

MOVFWDST1;И ДЕСЯТЫХ.

MOVWFDST1N;

MOVFWMIN;

MOVWFMIN1N;МИНУТЫ.

MOVFWHOU;

MOVWFHOU1N;ЧАСЫ.

BTFSCFLAG1,3;ПЕРЕПИШЕМ ФЛАГ  ЗНАКА

BSFFLAG,1;В ФЛАГ ХРАНЕНИЯ.

BTFSSFLAG1,3;

BCFFLAG,1;

GOTOBDIN1;НА ПЕРЕКОДИРОВКУ.

COMI1N

MOVFWLSB1N;ЕСЛИ СОХРАНЕННОЕ  ЗНАЧЕНИЕ

SUBWFLSB,0;МЕНЬШЕ ИЗМЕРЕННОГО,

BTFSCSTATUS,2;

GOTO$+3;ТО СОХРАНЕНИЯ  НЕТ.

BTFSSSTATUS,0;ЕСЛИ РАВЕНСТВО  ЦЕЛЫХ,

GOTOCOXPN;

MOVFWDST1N;ТО ПРОВЕРИМ  ДЕСЯТЫЕ.

SUBWFDST1,0;ЕСЛИ МЕНЬШЕ

BTFSCSTATUS,0;ИЛИ РАВНО,

GOTOBDIN1;

GOTOCOXPN;ТО СОХРАНИМ.

;=======================================

; 27. ПЕРЕКОДИРОВКА 1 ИЗ 2-ГО В 2_10.

;=======================================

BDIN1

CALLPERZAP;ПЕРЕПИШЕМ ТЕКУЩИЕ  ЗНАЧЕНИЯ.

MOVFWLSB;ПЕРЕКОДИРУЕМ

GOTOBZT1;

BDIN2

CALLPERZAP;ПЕРЕПИШЕМ ТЕКУЩИЕ  ЗНАЧЕНИЯ.

MOVFWLSB;ПЕРЕКОДИРУЕМ

GOTOBZT2;

PERZAP

MOVFWHOU1X;ТЕКУЩИЕ ЗНАЧЕНИЯ

MOVWFHOUZ1X;В РЕГИСТРЫ ИНДИКАЦИИ.

MOVFWMIN1X

MOVWFMINZ1X

MOVFWHOU1N

MOVWFHOUZ1N

MOVFWMIN1N

MOVWFMINZ1N

MOVFWHOU2X

MOVWFHOUZ2X

MOVFWMIN2X

MOVWFMINZ2X

MOVFWHOU2N

MOVWFHOUZ2N

MOVFWMIN2N

MOVWFMINZ2N

MOVFWLSB1X

MOVWFLSBZ1X

MOVFWDST1X

MOVWFDSTZ1X

MOVFWLSB1N

MOVWFLSBZ1N

MOVFWDST1N

MOVWFDSTZ1N

MOVFWLSB2X

MOVWFLSBZ2X

MOVFWDST2X

MOVWFDSTZ2X

MOVFWLSB2N

MOVWFLSBZ2N

MOVFWDST2N

MOVWFDSTZ2N

RETURN

BDINZ1

BTFSCFLAG1,1;ЕСЛИ ИНДИКАЦИЯ 2 ДАТЧИКА,

GOTOBDINZ2;ТО ИДЕМ НА 2 ДАТЧИК.

MOVFWLSBZ1X;ПО МАКСИМУМУ  - 1 СТРОКА 1 ДАТЧИКА.

CALLBZT1;

MOVFWDSTZ1X;

MOVWFDST1;

MOVFWLSBZ1N;ПО МИНИМУМУ - 2 СТРОКА 1 ДАТЧИКА.

CALLBZT2;

MOVFWDSTZ1N;

MOVWFDST2;

MOVFWHOUZ1X;ЧАСЫ МАКСИМУМА 1.

CALLHZ67;

MOVFWMINZ1X;МИНУТЫ МАКСИМУМА 1.

CALLMZ910;

MOVFWSOT1X;ЗНАК.

MOVWFR12;

RETURN;

BDIN12

BTFSCFLAG1,1;ЕСЛИ ИНДИКАЦИЯ 2 СТРОКИ,

GOTOBDIN22;ТО ИДЕМ НА 2 СТРОКУ.

MOVFWHOUZ1N;ПЕРЕЗАПИСЬ 1 ДАТЧИКА  2 СТРОКИ.

CALLHZ67;ЧАСЫ МИНИМУМА 1.

MOVFWMINZ1N;МИНУТЫ МИНИМУМА 1.

CALLMZ910;

MOVFWSOT1N;ЗНАК.

MOVWFR12;

RETURN;

BDIN22

MOVFWHOUZ2N;ПЕРЕЗАПИСЬ 2 ДАТЧИКА 2 СТРОКИ.

CALLHZ67;ЧАСЫ МИНИМУМА 2.

MOVFWMINZ2N;МИНУТЫ МИНИМУМА 2.

CALLMZ910;

MOVFWSOT2N;ЗНАК.

MOVWFR12;

RETURN;

BDINZ2

MOVFWLSBZ2X;ПОДГОТОВКА К ИНДИКАЦИИ 2 ДАТЧИКА.

CALLBZT1;ПО МАКСИМУМУ  - 1 СТРОКА.

MOVFWDSTZ2X;

MOVWFDST1;

MOVFWLSBZ2N;

CALLBZT2;ПО МИНИМУМУ - 2 СТРОКА

MOVFWDSTZ2N;

MOVWFDST2;

MOVFWHOUZ2X;ЧАСЫ МАКСИМУМА  2.

CALLHZ67;

MOVFWMINZ2X;МИНУТЫ МАКСИМУМА  2.

CALLMZ910;

MOVFWSOT2X;ЗНАК.

MOVWFR12;

RETURN;ПРОВЕРИМ КНОПКУ.

BZT1

MOVWFTEMP;ИЗ 2-ГО В 2_10-Е.

CALLBIDE;ТОЛЬКО ДО 99!

MOVWFDES1;ТЕМПЕРАТУРА В  ПЕРВОЙ СТРОКЕ.

MOVFWTEMP;

MOVWFEDI1;

RETURN;

BZT2

MOVWFTEMP;ИЗ 2-ГО В 2_10-Е.

CALLBIDE;ТОЛЬКО ДО 99!

MOVWFDES2;ТЕМПЕРАТУРА ВО  ВТОРОЙ СТРОКЕ.

MOVFWTEMP;

MOVWFEDI2;

RETURN;

HZ67

MOVWFTEMP;ИЗ 2-ГО В 2_10-Е.

CALLBIDE;ТОЛЬКО ДО 99!

MOVWFR6;6 И 7 РАЗРЯДЫ ИНДИКАТОРА.

MOVFWTEMP;ЧАСЫ.

MOVWFR7;

RETURN;

MZ910

MOVWFTEMP;ИЗ 2-ГО В 2_10-Е.

CALLBIDE;ТОЛЬКО ДО 99!

MOVWFR9;9 И 10 РАЗРЯДЫ ИНДИКАТОРА.

MOVFWTEMP;МИНУТЫ.

MOVWFR10;

RETURN;

;======================

; 28. ИНИЦИАЛИЗАЦИЯ МК.

;======================

INIT

BCFSTATUS,6;

BSFSTATUS,5;ПЕРЕХОДИМ В  БАНК 1.

MOVLWB'00000011';ПРЕДДЕЛИТЕЛЬ ПЕРЕД ТАЙМЕРОМ, К=16 ...11,

MOVWFOPTION_REG^80H;ПОДТЯГИВАЮЩИЕ  РЕЗИСТОРЫ ВКЛЮЧЕНЫ.

MOVLWB'10100000';РАЗРЕШЕНИЕ  ПРЕРЫВАНИЯ ПРИ ПЕРЕПОЛНЕНИИ  ТАЙМЕРА.

MOVWFINTCON;

MOVLWB'00100000';RA5 - НА ВХОД.

MOVWFTRISA^80H

MOVLWB'00000011';RB0, RB1 - НА ВХОД.

MOVWFTRISB^80H

CLRFVRCON^80H;ИОН ВЫКЛЮЧЕН.

CLRFPIE1^80H;

BCFSTATUS,5;ПЕРЕХОДИМ В  БАНК 0.

CLRFPORTA;ВСЕ ОБНУЛЯЕМ  И УСТАНАВЛИВАЕМ

CLRFPORTB

CLRFT1CON;

CLRFT2CON;

MOVLW7

MOVWFCMCON;КОМПАРАТОРЫ ВЫКЛЮЧЕНЫ.

CLRFTMR0

CLRFFLAG

CLRFFLAG1

CLRFFLAG2

BSFFLAG2,0;ИНДИКАЦИЯ ТЕКУЩАЯ,

CLRFCEK

CLRFMIN

CLRFHOU

CLRFHOUL

CLRFHOUH

CLRFMINL

CLRFMINH

CLRFREID

CLRFKYPC

CLRFCOUN

CLRFCOUZ

CLRFCOUE

CLRFCOYC

CLRFMCK;МИЛЛИСЕКУНД.

CLRFEDI2;ЕДИНИЦЫ 2.

CLRFDES2;ДЕСЯТКИ 2.

CLRFDST2;ДЕСЯТЫЕ 2.

CLRFEDI1;ЕДИНИЦЫ 1.

CLRFDES1;ДЕСЯТКИ 1.

CLRFDST1;ДЕСЯТЫЕ 1.

CLRFMECDI;ДЕСЯТКИ МЕСЯЦА  ИНДИКАЦИИ.

CLRFDHUDI;ДЕСЯТКИ ДНЕЙ  ИНДИКАЦИИ.

CLRFMECD;ДЕСЯТКИ МЕСЯЦА.

CLRFDHUD;ДЕСЯТКИ ДНЕЙ.

MOVLW.253;-

MOVWFSOT1;ЗНАК 1.

MOVWFSOT2;ЗНАК 2.

MOVWFSOT2X;ЗНАК 2 MAX.

MOVWFSOT1X;ЗНАК 1 MAX.

MOVLW.251;+

MOVWFSOT1N;ЗНАК 1 MIN.

MOVWFSOT2N;ЗНАК 2 MIN.

MOVLW.1

MOVWFDHU;ДНИ ДВОИЧНЫЕ.

MOVWFDHUE;ЕДИНИЦЫ ДНЕЙ.

MOVWFMEC;МЕСЯЦ ДВОИЧНЫЙ.

MOVWFMECE;ЕДИНИЦЫ МЕСЯЦА.

MOVWFMECEI;ЕДИНИЦЫ МЕСЯЦА  ИНДИКАЦИИ.

MOVWFMECZ;ДВОИЧНЫЙ МЕСЯЦ  ЗАПИСИ/СЧИТЫВАНИЯ.

MOVWFDHUEI;ЕДИНИЦЫ ДНЕЙ  ИНДИКАЦИИ.

MOVWFDHUZ;ДВОИЧНЫЕ ДНИ  ЗАПИСИ/СЧИТЫВАНИЯ.

CALLPOLNO;УСТАНОВКА МАКСИМАЛЬНЫХ  ЗНАЧЕНИЙ.

GOTOJEKINI;НА ИНИЦИАЛИЗАЦИЮ  ИНДИКАТОРА.

;=======================================

; 29. УСТАНОВКА ЧАСОВ,  ДАТЫ.

;=======================================

YC0

 INCFHOUH,1;УВЕЛИЧИМ ДЕСЯТКИ ЧАСОВ.

 MOVLW.3;НЕ БОЛЕЕ 2.

 SUBWFHOUH,0;

 SKPNC;

 CLRFHOUH;ЕСЛИ БОЛЬШЕ, ТО ОБНУЛИМ.

MOVFWHOUH;ПЕРЕКОДИРУЕМ В  ДВОИЧНЫЙ

CALLDEBIN;КОД ДЕСЯТКИ.

ADDWFHOUL,0;ПРИБАВИМ ЕДИНИЦЫ

MOVWFHOU;И ПОЛУЧИМ ДВОИЧНОЕ  ЧИСЛО.

 RETURN;ВЕРНЕМСЯ.

YC1

INCFHOUL,1;УВЕЛИЧИМ ЕДИНИЦЫ ЧАСОВ.

MOVLW.10;НЕ БОЛЕЕ 9.

SUBWFHOUL,0;

SKPNC;

CLRFHOUL;ЕСЛИ БОЛЬШЕ, ТО  ОБНУЛИМ.

MOVFWHOUH;ПЕРЕКОДИРУЕМ В  ДВОИЧНЫЙ

CALLDEBIN;КОД ДЕСЯТКИ.

ADDWFHOUL,0;ПРИБАВИМ ЕДИНИЦЫ

MOVWFHOU;ДВОИЧНОЕ ЗНАЧЕНИЕ  НЕ ДОЛЖНО

 ADDLW-18H;ПРЕВЫШАТЬ - 24.

SKPC;ЕСЛИ БОЛЬШЕ ИЛИ РАВНО 24,

RETURN

CLRFHOU;ТО ОБНУЛИМ ЧАСЫ  ДВОИЧНЫЕ

Информация о работе Микроконтроллеры и микропроцессорные системы