Автор работы: Пользователь скрыл имя, 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. Работа с устройством
Заключение
Список литературы
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;ТО ОБНУЛИМ ЧАСЫ ДВОИЧНЫЕ
Информация о работе Микроконтроллеры и микропроцессорные системы