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

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

MOVLW.1;1.

MOVWFR16;

RETURN

TEK2

MOVFWMECDI;ТЕКУЩАЯ ИНДИКАЦИЯ  2 СТРОКИ, ДЕСЯТКИ МЕСЯЦА.

MOVWFR1;

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

MOVWFR2;

MOVLW.240;ПУСТО.

MOVWFR3;

MOVWFR4;

MOVWFR5;

MOVWFR6;

MOVWFR7;

MOVWFR8;

MOVWFR9;

MOVFWSOT2;ЗНАК 2.

MOVWFR10;

MOVFWDES2;ДЕСЯТКИ ТЕМПЕРАТУРЫ  2.

MOVWFR11;

MOVFWEDI2;ЕДИНИЦЫ ТЕМПЕРАТУРЫ  2.

MOVWFR12;

MOVLW.252;ЗАПЯТАЯ 2.

MOVWFR13;

MOVFWDST2;ДЕСЯТЫЕ ТЕМПЕРАТУРЫ  2.

MOVWFR14;

MOVLW.14;>.

MOVWFR15;

MOVLW.2;2.

MOVWFR16;

RETURN

INDYC1

BTFSSPORTA,HOL;ЕСЛИ НАЖАТА КНОПКА "СБРОС",

CALLYC00;ТО ОБНУЛИМ СЕКУНДЫ  И МИНУТЫ.

MOVLW.123;УСТАНОВКА ЧАСОВ  И ДАТЫ 1 СТРОКА.

MOVWFR1;Ч.

MOVLW.17;А.

MOVWFR2;

MOVLW.19;С.

MOVWFR3;

MOVLW.126;Ы.

MOVWFR4;

MOVLW.240;ПУСТО.

MOVWFR5;

MOVWFR11;

MOVWFR12;

MOVWFR13;

MOVWFR14;

MOVWFR15;

MOVWFR16;

MOVFWHOUH;ТЕКУЩИЕ ЗНАЧЕНИЯ: ДЕСЯТКИ ЧАСОВ,

MOVWFR6;

MOVFWHOUL;ЕДИНИЦЫ ЧАСОВ.

MOVWFR7;

MOVLW.10;ДВОЕТОЧИЕ.

MOVWFR8;

MOVFWMINH;ДЕСЯТКИ МИНУТ.

MOVWFR9;

MOVFWMINL;ЕДИНИЦЫ МИНУТ.

MOVWFR10;

RETURN

INDYC2

MOVLW.176;Д.

MOVWFR1;

MOVLW.17;А.

MOVWFR2;

MOVLW.36;Т.

MOVWFR3;

MOVLW.17;А.

MOVWFR4;

MOVLW.240;ПУСТО.

MOVWFR5;

MOVWFR11;

MOVWFR12;

MOVWFR13;

MOVWFR14;

MOVWFR15;

MOVWFR16;

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

MOVWFR6;

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

MOVWFR7;

MOVLW.253;ПРОЧЕРК.

MOVWFR8;

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

MOVWFR9;

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

MOVWFR10;

RETURN

CMOTP1

MOVFWDHUDI;ЕСЛИ ПРОСМОТР

ADDWFDHUEI,0;СЕГОДНЯШНЕЙ ДАТЫ,

SUBWFDHU,0;ТО РЕГИСТРЫ  ИНДИКАЦИИ НЕ МЕНЯЕМ.

 SKPC;

GOTO$+5;

MOVFWMECDI;

ADDWFMECEI,0;

SUBWFMEC,0;

SKPNC;

CALLBDINZ1;ИНАЧЕ УСТАНОВИМ  СЧИТАННЫЕ ЗНАЧЕНИЯ 1 СТРОКИ.

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

MOVWFR1;

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

MOVWFR2;

MOVLW.14;>.

MOVWFR3;ПО УМОЛЧАНИЮ

MOVLW.1;1.

BTFSCFLAG1,1;ЕСЛИ ФЛАГ УСТАНОВЛЕН,

MOVLW.2;ТО - 2.

MOVWFR4;

MOVLW.240;ПУСТО.

MOVWFR5;

MOVWFR11;

MOVLW.253;ПРОЧЕРК.

MOVWFR8;

MOVFWDES1;ДЕСЯТКИ ТЕМПЕРАТУРЫ.

MOVWFR13;

MOVFWEDI1;ЕДИНИЦЫ ТЕМПЕРАТУРЫ.

MOVWFR14;

MOVLW.252;ЗАПЯТАЯ 1.

MOVWFR15;

MOVFWDST1;ДЕСЯТЫЕ ТЕМПЕРАТУРЫ.

MOVWFR16;

RETURN

CMOTP2

MOVFWDHUDI;ЕСЛИ ПРОСМОТР

ADDWFDHUEI,0;СЕГОДНЯШНЕЙ ДАТЫ,

SUBWFDHU,0;ТО РЕГИСТРЫ  ИНДИКАЦИИ НЕ МЕНЯЕМ.

 SKPC;

GOTO$+5;

MOVFWMECDI;

ADDWFMECEI,0;

SUBWFMEC,0;

SKPNC;

CALLBDIN12;ИНАЧЕ УСТАНОВИМ  СЧИТАННЫЕ ЗНАЧЕНИЯ 2 СТРОКИ.

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

MOVWFR1;

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

MOVWFR2;

MOVLW.240;ПУСТО.

MOVWFR3;

MOVWFR4;

MOVWFR5;

MOVWFR11;

MOVLW.253;ПРОЧЕРК.

MOVWFR8;

MOVFWDES2;ДЕСЯТКИ ТЕМПЕРАТУРЫ 2.

MOVWFR13;

MOVFWEDI2;ЕДИНИЦЫ ТЕМПЕРАТУРЫ  2.

MOVWFR14;

MOVLW.252;ЗАПЯТАЯ 2.

MOVWFR15;

MOVFWDST2;ДЕСЯТЫЕ ТЕМПЕРАТУРЫ  2.

MOVWFR16;

RETURN

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

; 37. ВЫВОД ЗНАЧЕНИЙ  РЕГИСТРОВ НА ИНДИКАЦИЮ.

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

JEKIND

 

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

BCFTRISB^80H,YCMI;НА ВЫХОД.

BCFTRISB^80H,YCPL;НА ВЫХОД.

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

BTFSSFLAG1,0;ЕСЛИ ТЕКУЩАЯ  ИНДИКАЦИЯ,

GOTO$+3;ТО ПРОПУСКАЕМ  ИНДИКАЦИЮ КУРСОРА.

BTFSSFLAG,6;ЕСЛИ ИНДИКАЦИЯ КУРСОРА ВЫПОЛНЕНА, ТО ПРОПУСКАЕМ ЕЕ.

GOTO JEKYC;ПРОИНДИЦИРУЕМ  КУРСОР.

 MOVLW 02;ВОЗВРАТ КУРСОРА В ИСХОДНОЕ СОСТОЯНИЕ.

 CALL JEKOM;ЗАПИШЕМ КОМАНДУ.

 MOVLW B'10000000';КУРСОР НА 0 ПОЗИЦИЮ ПЕРВОЙ СТРОКИ.

 CALL JEKOM;ЗАПИШЕМ КОМАНДУ.

CALLCTP1;ПЕРЕПИШЕМ В РЕГИСТРЫ ИНДИКАЦИИ 1 СТРОКУ.

CALLJEKCTP;ЗАПИШЕМ В ИНДИКАТОР  1 СТРОКУ.

 MOVLW B'11000000';ВТОРАЯ СТРОКА. 0x0C0

 CALL JEKOM;ЗАПИШЕМ КОМАНДУ.

CALLCTP2;ПЕРЕПИШЕМ В РЕГИСТРЫ  ИНДИКАЦИИ 2 СТРОКУ.

CALLJEKCTP;ЗАПИШЕМ В ИНДИКАТОР  2 СТРОКУ.

BCFFLAG,6;

RETURN

JEKCTP

MOVLW.16;

MOVWFCOUN;УСТАНОВИМ СЧЕТЧИК  ИНДИКАЦИИ ЗНАКОМЕСТ.

 MOVLW R1;АДРЕС ПЕРВОГО РЕГИСТРА ИНДИКАЦИИ.

MOVWFFSR;ПО КОСВЕННОЙ  АДРЕСАЦИИ

MOVFWINDF;УСТАНОВИМ ЗНАЧЕНИЕ  РЕГИСТРА.

 CALL JEDAT;ЗАПИШЕМ В ИНДИКАТОР.

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

BTFSCSTATUS,2;ЕСЛИ НЕТ НУЛЯ,

RETURN;

INCFFSR,1;ТО ВЫБЕРЕМ СЛЕДУЮЩИЙ  РЕГИСТР.

GOTO$-6;ПОВТОРИМ ВЫВОД  НА ИНДИКАЦИЮ.

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

; 38. ПРОВЕРКА КНОПОК.

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

KHOP

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

BSFTRISB^80H,YCMI;НА ВХОД.

BSFTRISB^80H,YCPL;НА ВХОД.

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

BTFSSFLAG1,0;ЕСЛИ НЕТ УСТАНОВКИ,

GOTOKHOP1;КНОПКИ НЕ ПРОВЕРЯЮТСЯ.

BTFSCFLAG2,2;ПРИ ПРОСМОТРЕ

GOTO$+0x0D;НЕ ПРОВЕРЯЕТСЯ  РАЗРЯД И ПЛЮС.

BTFSCFLAG,3;ЕСЛИ РАНЕЕ БЫЛА  НАЖАТА КНОПКА,

CALLYCTAL;ТО ИДЕМ НА УСТАНОВКУ РАЗРЯДА.

BTFSSPORTB,YCPL;ЕСЛИ КНОПКА  ПЛЮС НАЖАТА,

BSFFLAG,3;ПОСТАВИМ ФЛАГ.

BTFSSPORTB,YCPL;ЕСЛИ КНОПКА  ПЛЮС НАЖАТА,

BSFFLAG1,2;ЗАПРЕЩАЕМ ИНДИКАЦИЮ.

BTFSCFLAG,5;ЕСЛИ РАНЕЕ БЫЛА  НАЖАТА КНОПКА "РАЗРЯД",

CALLKYPCY;ТО ИДЕМ НА  УСТАНОВКУ КУРСОРА.

BTFSSPORTB,PAZ;ЕСЛИ КНОПКА "РАЗРЯД" НАЖАТА,

BSFFLAG,5;ПОСТАВИМ ФЛАГ.

BTFSCFLAG2,1;ПРИ УСТАНОВКЕ  ДАТЫ

GOTOKHOP1;КНОПКА МИНУС  НЕ ПРОВЕРЯЕТСЯ.

BTFSCFLAG,2;ЕСЛИ РАНЕЕ БЫЛА  НАЖАТА КНОПКА МИНУС,

CALLYCTAM;ТО ИДЕМ НА  УСТАНОВКУ РАЗРЯДА.

BTFSSPORTB,YCMI;ЕСЛИ КНОПКА МИНУС НАЖАТА,

BSFFLAG,2;ПОСТАВИМ ФЛАГ.

BTFSSPORTB,YCMI;ЕСЛИ КНОПКА  МИНУС НАЖАТА,

BSFFLAG1,2;ЗАПРЕЩАЕМ ИНДИКАЦИЮ.

KHOP1

BTFSSPORTB,PEJ;ЕСЛИ КНОПКА "РЕЖИМ"  НАЖАТА,

BSFFLAG,4;ПОСТАВИМ ФЛАГ.

BTFSSFLAG,4;ЕСЛИ КНОПКА "РЕЖИМ"  НЕ БЫЛА НАЖАТА,

GOTOVUBOR;ТО ИДЕМ НА ВЫБОР РЕЖИМА ИНДИКАЦИИ.

BTFSSPORTB,PEJ;ЕСЛИ КНОПКА "РЕЖИМ"  НАЖАТА,

GOTOVUBOR;ТО ИДЕМ НА  ВЫБОР РЕЖИМА ИНДИКАЦИИ.

BCFFLAG,4;СБРОСИМ ФЛАГ  КНОПКИ.

INCFREID,1;ИЗМЕНЕНИЕ РЕЖИМА  ИНДИКАЦИИ.

MOVLW.3;3 РЕЖИМА ИНДИКАЦИИ.

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

BTFSSSTATUS,2;ТО ПОЙДЕМ НА СБРОС.

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

CLRFREID;СБРОС РЕЖИМА.

GOTOVUBOR;НА ВЫБОР РЕЖИМА  ИНДИКАЦИИ.

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

; 39. СОХРАНЕНИЕ И ВОССТАНОВЛЕНИЕ  ЗНАЧЕНИЙ РЕГИСТРОВ ПРИ ПРЕРЫВАНИИ.

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

PRER

 MOVWFWTEMP;СОХРАНЕНИЕ ЗНАЧЕНИЙ РЕГИСТРОВ W И

 MOVFWSTATUS;STATUS,

 MOVWFSTEMP;

 MOVFWFSR;FSR.

 MOVWFFTEMP;

CALLS1;

REPER   ;ВОССТАНОВЛЕНИЕ СОХРАНЕННЫХ ЗНАЧЕНИЙ.

 MOVFWSTEMP;ВОССТАНОВЛЕНИЕ РЕГИСТРОВ:

 MOVWFSTATUS;STATUS,

 MOVFWFTEMP;

 MOVWFFSR;FSR,

 MOVFWWTEMP;W.

 BCFINTCON,2;СБРАСЫВАЕМ ФЛАГ ПРЕРЫВАНИЯ ОТ TMR0.

 RETFIE  ;ВОЗВРАТ ИЗ ПРЕРЫВАНИЯ.

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

; 40. СЧЕТ И ПЕРЕКОДИРОВКА  РЕГИСТРОВ Ч-М-С.

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

S1

INCFMCK,1;ПРИБАВИМ 1 В РЕГИСТР  МИЛЛИСЕКУНД.

MOVFWMCK;

ADDLW-0x7D;СЧИТАЕМ ДО 125.

BTFSSSTATUS,2;

RETURN;

CLRFMCK;ОБНУЛИМ.

BTFSCFLAG,7;РАЗДЕЛИМ НА 2.

GOTO$+3;

BSFFLAG,7;

RETURN;

BCFFLAG,7;ОБНУЛИМ ДЕЛИТЕЛЬ.

MOVFWCEK;ЗАГРУЗКА ЗНАЧЕНИЙ СЕКУНД В РАБ. РЕГИСТР.

ADDLW-3BH;ВЫЧЕСТЬ ИЗ РЕГИСТРА 59.236:4=59-0x0EC;

BZM1;СРАВНИТЬ НА 0, ЕСЛИ РАВНО, ПЕРЕЙТИ НА M1,

INCFCEK,1;ИНАЧЕ ПРИБАВИТЬ  1 В РЕГИСТР СЕКУНД.

RETURN;

M1

CLRFCEK;ОБНУЛЕНИЕ РЕГИСТРА СЕКУНД.

MOVFWMIN;ЗАГРУЗКА МИНУТ  В РАБ. РЕГИСТР.

ADDLW-3BH;-59.

BZH1;СРАВНИТЬ НА 0, ЕСЛИ  РАВНО, ПЕРЕЙТИ НА H1.

INCFMIN,1;ПРИБАВИТЬ 1 В  МИНУТЫ.

MOVFWMIN;MIN >W.

MOVWFTEMP;.

CALLBIDE;ПЕРЕКОДИРУЕМ.

MOVWFMINH;W > В РЕГИСТР  ИНДИКАЦИИ ДЕСЯТКОВ МИНУТ.

MOVFWTEMP;ВРЕМЕННЫЙ

MOVWFMINL;В РЕГИСТР ИНДИКАЦИИ  ЕДИНИЦ МИНУТ.

RETURN;

H1

CLRFMIN;ОБНУЛЯЕМ РЕГИСТР МИНУТ.

CLRFMINL;ОБНУЛЯЕМ ЕДИНИЦЫ  МИНУТ ИНДИКАЦИИ.

CLRFMINH;ОБНУЛЯЕМ ДЕСЯТКИ  МИНУТ ИНДИКАЦИИ.

MOVFWHOU;ЗАГРУЗКА ЧАСОВ  В РАБ. РЕГИСТР.

ADDLW-17H;- 23.

BZD1;СРАВНИТЬ НА 0, ЕСЛИ  РАВНО, ПЕРЕЙТИ НА H10.

INCFHOU,1;ПРИБАВИТЬ 1 В ЧАСЫ.

MOVFWHOU;HOU >W.

MOVWFTEMP;

CALLBIDE;ПЕРЕКОДИРУЕМ.

MOVWFHOUH;W > В РЕГИСТР  ИНДИКАЦИИ ДЕСЯТКОВ ЧАСОВ.

MOVFWTEMP;ВРЕМЕННЫЙ

MOVWFHOUL;В РЕГИСТР ИНДИКАЦИИ  ЕДИНИЦ ЧАСОВ.

RETURN;

D1

CLRFHOU;ОБНУЛЕНИЕ РЕГИСТРА  ЧАСОВ.

CLRFHOUL;ОБНУЛЕНИЕ ЕДИНИЦ  ЧАСОВ.

CLRFHOUH;ОБНУЛЕНИЕ ДЕСЯТКОВ  ЧАСОВ.

CALLSAPIS;НА ЗАПИСЬ.

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

INCFDHU,1;ПРИБАВИТЬ 1 В  ДНИ.

MOVFWMEC;ЧИСЛО ДНЕЙ НЕ  ДОЛЖНО ПРЕВЫШАТЬ

CALLDAYMON;ЧИСЛА ДАННОГО  МЕСЯЦА.

 SUBWFDHU,0;

 SKPNC;

GOTOME1;ИНАЧЕ УВЕЛИЧИМ  МЕСЯЦ.

MOVFWDHU;

MOVWFTEMP;

CALLBIDE;ПЕРЕКОДИРУЕМ.

MOVWFDHUD;W > В РЕГИСТР  ИНДИКАЦИИ ДЕСЯТКОВ ДНЕЙ.

MOVFWTEMP;ВРЕМЕННЫЙ

MOVWFDHUE;В РЕГИСТР ИНДИКАЦИИ  ЕДИНИЦ ДНЕЙ.

RETURN;

ME1

MOVLW.1;УСТАНОВИМ ПЕРВОЕ  ЧИСЛО.

MOVWFDHU;

MOVWFDHUE;

CLRFDHUD;

INCFMEC,1;ПРИБАВИМ МЕСЯЦ.

MOVLW.13;НЕ БОЛЕЕ 12.

SUBWFMEC,0;

SKPNC;

GOTOME1ME;ЕСЛИ БОЛЬШЕ, ТО  УСТАНОВИМ 1 ЯНВАРЯ.

MOVFWMEC;

MOVWFTEMP;

CALLBIDE;ПЕРЕКОДИРУЕМ.

MOVWFMECD;W > В РЕГИСТР  ИНДИКАЦИИ ДЕСЯТКОВ МЕСЯЦА.

MOVFWTEMP;ВРЕМЕННЫЙ

MOVWFMECE;В РЕГИСТР ИНДИКАЦИИ  ЕДИНИЦ МЕСЯЦА.

RETURN;

ME1ME

MOVLW.1;1 ЯНВАРЯ.

MOVWFMEC;01-01.

MOVWFMECE;

CLRFMECD;

RETURN;

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

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

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

BIDE;ПЕРЕКОДИРОВКА ДЕСЯТКОВ

CLRFCOUN;ОБНУЛЯЕМ СЧЕТЧИК.

ADDLW-.10;ВЫЧТЕМ 10.

BTFSSSTATUS,0;ЕСЛИ ЕСТЬ ПЕРЕХОД  ЧЕРЕЗ НОЛЬ,

GOTO$+4;ТО ЗАВЕРШАЕМ ПЕРЕКОДИРОВКУ.

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

INCFCOUN,1;УВЕЛИЧИМ СЧЕТЧИК.

GOTO$-5;ПОВТОРИМ ВЫЧИТАНИЕ.

MOVFWCOUN;ЗНАЧЕНИЕ СЧЕТЧИКА (РАВНО ЧИСЛУ ДЕСЯТКОВ) ПЕРЕПИШЕМ В РАБОЧИЙ РЕГИСТР.

RETURN;ВЕРНЕМСЯ.

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

; 42. ЗАПИСЬ ЗНАЧЕНИЙ  В ПАМЯТЬ.

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