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

Автор работы: Пользователь скрыл имя, 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 Кб (Скачать документ)

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

; 12. ПРИЕМ 16 БИТ ОТ DS2.

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

PRIEM2

CALLHYL2;ПОСЫЛ ИМПУЛЬСА  ОБНУЛЕНИЯ.

MOVLW0xCC;ПРОПУСК НОМЕРА.

CALLPOSIL2;ПОСЫЛ.

MOVLW0xBE;ЧТЕНИЕ ТЕМПЕРАТУРЫ  ИЗ БЛОКНОТА.

CALLPOSIL2;ПОСЫЛ.

BCFINTCON,7;ЗАПРЕТ ПРЕРЫВАНИЙ.

 CALL PRIE2;НА ПРИЕМ.

MOVFWLSBH;ПЕРЕПИШЕМ ПРИНЯТЫЙ  БАЙТ

MOVWFLSB;В МЛАДШИЙ РЕГИСТР.

BCFINTCON,7;ЗАПРЕТ ПРЕРЫВАНИЙ.

CALLPRIE2;И ПРИМЕМ СТАРШИЙ  БАЙТ.

GOTOCXET2;НА ПЕРЕСЧЕТ.

PRIE2

MOVLW.8

MOVWFCOUN;ЗАПИШЕМ ЧИСЛО  БИТ.

 CLRFLSBH;ОБНУЛИМ РЕГИСТР ПРИЕМА.

PRI2

CALLWUX2;ВЫДАЕМ КОРОТКИЙ  НОЛЬ И ЖДЕМ ОТКЛИКА.

CALLWXO2;НА ПРИЕМ.

MOVLW.2;ЗАДЕРЖКА

CALLX4;8 МКС.

 MOVFWPORTA;ПЕРЕПИШЕМ

MOVWFTEMP;ЗНАЧЕНИЕ ПОРТА.

BTFSSTEMP,DS2;

BCFSTATUS,0;УСТАНОВИМ БИТ  ПРИЕМА В НОЛЬ.

BTFSCTEMP,DS2;

BSFSTATUS,0;ИЛИ ЕДИНИЦУ.

 RRFLSBH,1;ЗАПИШЕМ В РЕГИСТР.

MOVLW.12;ОБЩАЯ ПАУЗА 60 МКС.

 CALLX4;

 DECFSZCOUN,1;УМЕНЬШИМ СЧЕТЧИК.

 GOTOPRI2;ПОВТОРИМ ПРИЕМ.

BSFINTCON,7;РАЗРЕШАЕМ ПРЕРЫВАНИЯ.

 RETURN;ВЕРНЕМСЯ.

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

; 13. ПОСЫЛ КОМАНДЫ В  DS2.

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

POSIL2

BCFINTCON,7;ЗАПРЕТ ПРЕРЫВАНИЙ.

MOVWFTEMP;ПЕРЕПИШЕМ ВО ВРЕМЕННЫЙ.

MOVLW.8;ЗАПИШЕМ ЧИСЛО  БИТ.

 MOVWFCOUN;

POSI2

RRFTEMP,1;ВЫТОЛКНЕМ МЛАДШИЙ  БИТ.

 BTFSSSTATUS,0;ЕСЛИ ОН НУЛЕВОЙ,

GOTOW0_2;ПОШЛЕМ ИМПУЛЬС  НУЛЯ.

GOTOW1_2;ИЛИ ЕДИНИЦЫ.

POS2

DECFSZCOUN,1;УМЕНЬШАЕМ СЧЕТЧИК.

 GOTOPOSI2;НА СЛЕДУЮЩИЙ БИТ.

BSFINTCON,7;РАЗРЕШАЕМ ПРЕРЫВАНИЯ.

 RETURN;ВОЗВРАТ.

W0_2

CALLWUX2;УСТАНОВИМ ВЫХОД  В НОЛЬ.

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

CALL X4;

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

 GOTOPOS2;ПОВТОРИМ.

W1_2

CALLWUX2;КОРОТКИЙ НУЛЕВОЙ  ИМПУЛЬС.

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

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

CALLX4;

 GOTOPOS2;ПОВТОРИМ.

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

; 14. ВЫДЕЛЕНИЕ 2.

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

CXET2

BTFSCFLAG1,6;ЗАДЕРЖКА ПРИ  ВКЛЮЧЕНИИ ВЫПОЛНЕНА.

GOTO$+3;

BSFFLAG1,6;ЗАДЕРЖКА ПРИ  ВКЛЮЧЕНИИ.

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;ПЕРЕКОДИРУЕМ С  ОКРУГЛЕНИЕМ.

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

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

MOVWFCOUN;

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

RRFLSBH,1;

RRFLSB,1;

DECFSZCOUN,1;

GOTO$-4;

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

MOVWFSOT2;

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

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

MOVLW.253;МИНУС.

MOVWFSOT2;

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

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

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

MAXZ2

MOVFWSOT2;ЕСЛИ СОХРАНЕННЫЙ

SUBWFSOT2X,0;И ИЗМЕРЕННЫЙ  ЗНАКИ РАВНЫ,

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

GOTO$+5;

BTFSSFLAG1,3;ЕСЛИ ЗНАК ПОЛОЖИТЕЛЬНЫЙ,

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

BTFSCFLAG1,3;ЕСЛИ ЗНАК ОТРИЦАТЕЛЬНЫЙ,

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

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

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

MINZ2

MOVFWSOT2;ЕСЛИ СОХРАНЕННЫЙ

SUBWFSOT2N,0;И ИЗМЕРЕННЫЙ  ЗНАКИ РАВНЫ,

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

GOTO$+5;

BTFSCFLAG1,3;ЕСЛИ ЗНАК ОТРИЦАТЕЛЬНЫЙ,

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

BTFSSFLAG1,3;ЕСЛИ ЗНАК ПОЛОЖИТЕЛЬНЫЙ,

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

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

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

GOTOBDIN2;НА ЗАПИСЬ ЗНАЧЕНИЙ  В РЕГИСТРЫ ИНДИКАЦИИ.

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

; 16. СРАВНЕНИЕ НА MAX 2.

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

COPL2X

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

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

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

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

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

GOTO$+5;

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

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

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

GOTOMINZ2;ЕСЛИ МЕНЬШЕ, ТО  ПРОВЕРИМ НА МИНИМУМ.

COXP2X

BTFSSFLAG1,3;-0 НЕТ.

GOTO$+4;

TSTFLSB;

BZMINZ2;

MOVFWSOT2;СОХРАНИМ ЗНАК.

MOVWFSOT2X;

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

MOVWFLSB2X;ЦЕЛЫХ

MOVFWDST2;И ДЕСЯТЫХ.

MOVWFDST2X;

MOVFWMIN;СОХРАНИМ

MOVWFMIN2X;МИНУТЫ

MOVFWHOU;

MOVWFHOU2X;И ЧАСЫ.

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

BSFFLAG2,3;ВО ФЛАГ ХРАНЕНИЯ.

BTFSSFLAG1,3;

BCFFLAG2,3;

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

COMI2X

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

SUBWFLSB,0;РАВНО ИЗМЕРЕННОМУ,

BTFSCSTATUS,2;

GOTO$+3;ТО ПРОВЕРИМ ДЕСЯТЫЕ.

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

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

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

SUBWFDST2,0;ЕСЛИ СОХРАНЕННОЕ  МЕНЬШЕ

BTFSCSTATUS,0;ИЛИ РАВНО ИЗМЕРЕННОМУ,

GOTOMINZ2;ТО ПРОВЕРИМ НА  МИНИМУМ.

GOTOCOXP2X;ИЛИ СОХРАНИМ.

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

; 17. СРАВНЕНИЕ НА MIN 2.

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

COPL2N

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

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

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

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

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

GOTO$+5;

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

SUBWFDST2,0;

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

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

COXP2N

BTFSSFLAG1,3;-0 НЕТ.

GOTO$+4;

TSTFLSB;

BZBDIN2;

MOVFWSOT2;СОХРАНИМ ЗНАК.

MOVWFSOT2N;

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

MOVWFLSB2N;ЦЕЛЫХ

MOVFWDST2;И ДЕСЯТЫХ.

MOVWFDST2N;

MOVFWMIN;СОХРАНИМ

MOVWFMIN2N;МИНУТЫ

MOVFWHOU;

MOVWFHOU2N;И ЧАСЫ.

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

BSFFLAG2,4;ВО ФЛАГ ХРАНЕНИЯ.

BTFSSFLAG1,3;

BCFFLAG2,4;

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

COMI2N

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

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

BTFSCSTATUS,2;

GOTO$+3;

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

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

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

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

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

GOTOBDIN2;

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

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

; 18. ЗАДЕРЖКА МКС, УМНОЖЕННАЯ  НА 4.

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

X4

ADDLW-1;

BTFSSSTATUS,2;

GOTO$-2;

RETURN;

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

; 19. ИНИЦИАЛИЗАЦИЯ DS1.

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

INIDS1

CALLHYL1;ПОСЫЛ ИМПУЛЬСА ОБНУЛЕНИЯ.

MOVLW0xCC;ПРОПУСК НОМЕРА.

CALLPOSIL1;ПОШЛЕМ.

MOVLW0x4E;РАЗРЕШАЕМ ЗАПИСЬ  УСТАНОВКИ 0,1 ГРАДУСА.

CALLPOSIL1;ПОШЛЕМ.

MOVLW0x7D;ВЕРХНИЙ ПРЕДЕЛ +125. МОЖНО ПОСТАВИТЬ ЛЮБОЕ ЗНАЧЕНИЕ.

CALLPOSIL1;ПОШЛЕМ.

MOVLW0x77;НИЖНИЙ ПРЕДЕЛ -55. ЛЮБОЙ.

CALLPOSIL1;ПОШЛЕМ.

MOVLW0x7F;КОНФИГУРАЦИЯ 11 = 0,1 ГРАДУС.

CALLPOSIL1;ПОШЛЕМ.

CALLHYL1;ПОСЫЛ ИМПУЛЬСА  ОБНУЛЕНИЯ.

MOVLW0xCC;ПРОПУСК ПОСЫЛА  НОМЕРА DS.

CALLPOSIL1;ПОШЛЕМ.

MOVLW0x44;РАЗРЕШАЕМ ПРЕОБРАЗОВАНИЕ.

CALLPOSIL1;ПОШЛЕМ.

MOVLW.3;ПАУЗА 0,75 СЕК.

MOVWFCOUN;МАКСИМАЛЬНО 750 МС.

SPLU1

 MOVLW .255

 MOVWF TEMP

PLUS1

 MOVLW .255

 ADDLW -1

 BTFSS STATUS,2

 GOTO $-2

 DECFSZ TEMP,1

 GOTO PLUS1

DECFSZCOUN,1

GOTOSPLU1

GOTOPRIEM1;НА ПРИЕМ ТЕМПЕРАТУРЫ.

HYL1

CALLWUX1;ВЫХОД НУЛЯ.

MOVLW.125;НУЛЕВОЙ ИМПУЛЬС

ADDLW-1;= 500 МКС.

BTFSSSTATUS,2;

GOTO$-2;

CALLWXO1;ВЫХОД ЕДИНИЦЫ.

MOVLW.125;ИМПУЛЬС =

ADDLW-1;500 МКС.

BTFSSSTATUS,2;

GOTO$-2;

RETURN

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

; 20. ИЗМЕНЕНИЕ ВХОДА  НА ПРИЕМ/ПЕРЕДАЧУ.

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

WUX1

BCFPORTA,DS1;

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

BCFTRISA^80H,DS1;НА ВЫХОД.

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

RETURN

WXO1

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

BSFTRISA^80H,DS1;НА ВХОД.

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

RETURN

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

; 21. ПРИЕМ 16 БИТ ОТ DS1.

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

PRIEM1

CALLHYL1;ПОСЫЛ ИМПУЛЬСА ОБНУЛЕНИЯ.

MOVLW0xCC;ПРОПУСК НОМЕРА.

CALLPOSIL1;ПОСЫЛ.

MOVLW0xBE;ЧТЕНИЕ ТЕМПЕРАТУРЫ  ИЗ БЛОКНОТА.

CALLPOSIL1;ПОСЫЛ.

BCFINTCON,7;ЗАПРЕТ ПРЕРЫВАНИЙ.

 CALL PRIE1;НА ПРИЕМ.

MOVFWLSBH;ПЕРЕПИШЕМ ПРИНЯТЫЙ  БАЙТ

MOVWFLSB;В МЛАДШИЙ РЕГИСТР.

BCFINTCON,7;ЗАПРЕТ ПРЕРЫВАНИЙ.

CALLPRIE1;И ПРИМЕМ СТАРШИЙ  БАЙТ.

GOTOCXET1;НА ПЕРЕСЧЕТ.

PRIE1

MOVLW.8

MOVWFCOUN;ЗАПИШЕМ ЧИСЛО  БИТ.

 CLRFLSBH;ОБНУЛИМ РЕГИСТР ПРИЕМА.

PRI1

CALLWUX1;ВЫДАЕМ КОРОТКИЙ  НОЛЬ И ЖДЕМ ОТКЛИКА.

CALLWXO1;НА ПРИЕМ.

MOVLW.2;ЗАДЕРЖКА

CALLX4;8 МКС.

 MOVFWPORTA;ПЕРЕПИШЕМ

MOVWFTEMP;ЗНАЧЕНИЕ ПОРТА.

BTFSSTEMP,DS1;

BCFSTATUS,0;УСТАНОВИМ БИТ  ПРИЕМА В НОЛЬ.

BTFSCTEMP,DS1;

BSFSTATUS,0;ИЛИ ЕДИНИЦУ.

 RRFLSBH,1;ЗАПИШЕМ В РЕГИСТР.

MOVLW.12;ОБЩАЯ ПАУЗА 60 МКС.

 CALLX4;

 DECFSZCOUN,1;УМЕНЬШИМ СЧЕТЧИК.

 GOTOPRI1;ПОВТОРИМ ПРИЕМ.

BSFINTCON,7;РАЗРЕШАЕМ ПРЕРЫВАНИЯ.

 RETURN;ВЕРНЕМСЯ.

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

; 22. ПОСЫЛ КОМАНДЫ В  DS1.

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

POSIL1

BCFINTCON,7;ЗАПРЕТ ПРЕРЫВАНИЙ.

MOVWFTEMP;ПЕРЕПИШЕМ ВО  ВРЕМЕННЫЙ.

MOVLW.8;ЗАПИШЕМ ЧИСЛО  БИТ.

 MOVWFCOUN;

POSI1

RRFTEMP,1;ВЫТОЛКНЕМ МЛАДШИЙ  БИТ.

 BTFSSSTATUS,0;ЕСЛИ ОН НУЛЕВОЙ,

GOTOW0_1;ПОШЛЕМ ИМПУЛЬС  НУЛЯ.

GOTOW1_1;ИЛИ ЕДИНИЦЫ.

POS1

DECFSZCOUN,1;УМЕНЬШАЕМ СЧЕТЧИК.

 GOTOPOSI1;НА СЛЕДУЮЩИЙ БИТ.

BSFINTCON,7;РАЗРЕШАЕМ ПРЕРЫВАНИЯ.

 RETURN;ВОЗВРАТ.

W0_1

CALLWUX1;УСТАНОВИМ ВЫХОД  В НОЛЬ.

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

CALL X4;

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

 GOTOPOS1;ПОВТОРИМ.

W1_1

CALLWUX1;КОРОТКИЙ НУЛЕВОЙ  ИМПУЛЬС.

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