Развитие микроэлектроники и широкое применение ее изделий в промышленном производстве, в устройствах и системах управления самыми разнообразными объектами и процессами является в настоящее время одним из основных направлений научно-технического прогресса.
Использование микроконтроллеров в изделиях не только приводит к повышению технико-экономических показателей (стоимости, надежности, потребляемой мощности, габаритных размеров), но и позволяет сократить время разработки изделий и делает их модифицируемыми, адаптивными. Использование микроконтроллеров в системах управления обеспечивает достижение высоких показателей эффективности при низкой стоимости.
Микроконтроллеры представляют собой эффективное средство автоматизации разнообразных объектов и процессов. Все это определяет необходимость изучения микропроцессорных систем.
Знания, полученные при разработке микропроцессорной системы в курсовой работе, необходимы не только для узкого круга специалистов, занимающихся разработкой компьютеров, но и любому инженеру, работающему с микропроцессорной системой. Они необходимы для четкого понимания принципов работы любого компьютера, что поможет при необходимости найти и исправить возможные неполадки, усовершенствовать используемую систему, разработать новую. Знание внутренней организации ЭВМ необходимо для написания программ, напрямую работающих с аппаратными средствами микропроцессорных систем. Схема, разрабатываемая в данной курсовой работе, выполняет функцию сбора и обработки информации и содержит все функциональные блоки любого компьютера. Основным достоинством контроллера, применяемого в данной курсовой работе, является его дешевизна, что позволило ему найти широкое применение.
Постановка задачи
Контроллер, который разрабатывается в этой курсовой работе, должен обеспечивать:
- периодический опрос Р аналоговых датчиков и преобразование их сигналов с заданной точностью в цифровой код;
- обработку цифровых кодов с целью вычисления заданной функциональной зависимости Y(t) в реальном масштабе времени;
- отображение вычисленных значений функции Y(t) на дискретных индикаторах;
- Номер варианта 18;
- Количество аналоговых датчиков, Р 13;
- Максимальное напряжение на выходе датчиков, Umax 5 В;
- Требуемый период коммутации датчиков, Т 160 мкс;
- Требуемая точность преобразования, ??????????? 0.08;
- Разрешённые номера портов ввода/вывода, <V>
- 48 — 63;
Функция Y(t) = N(2)/1 + N(3)/(2)+…+N(P)/(Р-1)+ N(1)
Правила формирования структуры курсовой/дипломной работы
... -технологий). Все курсовые и дипломные работы подлежат обязательной проверке на плагиат, поэтому на кафедру в определенные сроки необходимо предоставить электронный вариант проекта (уже в готовом, оформленном виде!). Создание структуры курсовой или дипломной работы ...
Для выполнения проекта необходимо решить две задачи: разработать аппаратную часть контроллера и разработать программное обеспечение.
контроллер корпус команда
1. Выбор контроллера
PIC16C84 относится к семейству КМОП микроконтроллеров. Отличается тем, что имеет внутреннее 1K x 14 бит EEPROM для программ, 8-битовые данные и 64байт eeprom памяти данных. При этом отличаются низкой стоимостью и высокой производительностью. Все команды состоят из одного слова (14 бит шириной) и исполняются за один цикл (400 нс при 10 МГц), кроме команд перехода, которые выполняются за два цикла (800 нс).
PIC16C84 имеет прерывание, срабатывающее от четырех источников, и восьмиуровневый аппаратный стек. Периферия включает в себя 8-битный таймер/счетчик с 8-битным программируемым предварительным делителем (фактически 16 — битный таймер) и 13 линий двунаправленного ввода/вывода. Высокая нагрузочная способность (25 мА макс. втекающий ток, 20 мА макс. вытекающий ток) линий ввода/вывода упрощают внешние драйверы и, тем самым, уменьшается общая стоимость системы. Разработки на базе контроллеров PIC16C84 поддерживается ассемблером, программным симулятором, внутрисхемным эмулятором (только фирмы Microchip) и программатором.
Серия PIC16C84 подходит для широкого спектра приложений от схем высокоскоростного управления автомобильными и электрическими двигателями до экономичных удаленных приемопередатчиков, показывающих приборов и связных процессоров. Наличие ПЗУ позволяет подстраивать параметры в прикладных программах (коды передатчика, скорости двигателя, частоты приемника и т.д.).
Малые размеры корпусов, как для обычного, так и для поверхностного монтажа, делает эту серию микроконтроллеров пригодной для портативных приложений. Низкая цена, экономичность, быстродействие, простота использования и гибкость ввода/вывода делает PIC16C84 привлекательным даже в тех областях, где ранее не применялись микроконтроллеры. Например, таймеры, замена жесткой логики в больших системах, сопроцессоры.
Следует добавить, что встроенный автомат программирования EEPROM кристалла PIC16C84 позволяет легко подстраивать программу и данные под конкретные требования даже после завершения ассемблирования и тестирования. Эта возможность может быть использована как для тиражирования, так и для занесения калибровочных данных уже после окончательного тестирования.
Архитектура основана на концепции раздельных шин и областей памяти для данных и для команд (Гарвардская архитектура).
Шина данных и память данных (ОЗУ) — имеют ширину 8 бит, а программная шина и программная память (ПЗУ) имеют ширину 14 бит. Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции работают с высокой скоростью и с перекрытием по времени выборок команд и циклов выполнения. 14- битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды.
Все команды выполняются за один цикл, исключая команды переходов. В PIC16C84 программная память объемом 1К х 14 расположена внутри кристалла. Исполняемая программа может находиться только во встроенном ПЗУ.
По учебной дисциплине «Техническое обслуживание и ремонт компьютерных ...
... курсовых работ, а также при подготовке к практическим занятиям по учебной дисциплине «Техническое обслуживание и ремонт компьютерных систем и комплексов». 1. Основная часть 1.1 Назначение Системной памяти Оперативная память ...
Обзор характеристик:
- только 35 простых команд;
- все команды выполняются за один цикл(400ns), кроме команд перехода — 2 цикла;
- рабочая частота 0 Гц …
10 МГц (min 400 нс цикл команды)
14 — битовые команды;
8 — битовые данные;
1024 х 14 электрически перепрограммируемой программной памяти на кристалле (EEPROM);
36 х 8 регистров общего использования;
15 специальных аппаратных регистров SFR;
64 x 8 электрически перепрограммируемой EEPROM памяти для данных;
- восьмиуровневый аппаратный стек;
- прямая, косвенная и относительная адресация данных и команд;
четыре источника прерывания:
[Электронный ресурс]//URL: https://inzhpro.ru/kursovaya/razrabotka-kontrollera/
внешний вход INT
переполнение таймера RTCC
прерывание при изменении сигналов на линиях порта B по завершению записи данных в память EEPROM
13 линий ввода-вывода с индивидуальной настройкой;
втекающий/вытекающий ток для управления светодиодами
макс втекающий ток — 25 мА
макс вытекающий ток — 20 мА
8 — битный таймер/счетчик RTCC с 8-битным программируемым предварительным делителем;
- автоматический сброс при включении;
- таймер включения при сбросе;
- таймер запуска генератора;
- Watchdog таймер WDT с собственным встроенным генератором, обеспечивающим повышенную надежность;
- EEPROM бит секретности для защиты кода;
- экономичный режим SLEEP;
выбираемые пользователем биты для установки режима возбуждения встроенного генератора:
RC генератор:RC
обычный кварцевый резонатор:XT
высокочастотный кварцевый резонатор:HS
экономичный низкочастотный кристалл:LP
встроенное устройство программирования EEPROM памяти программ и данных; используются только две ножки.
экономичная высокоскоростная КМОП EPROM технология;
- статический принцип в архитектуре;
- широкий диапазон напряжений питания и температур;
низкое потребление тока:
3 мА при Uпит.- 5В, F — 4МГц
50 мкА при Uпит.- 2В, F — 32КГц
26 мкА SLEEP режим, при Uпит.- 2В
2. Техническое описание контроллера
2.1 Типы корпусов и исполнений
Обозначения корпусов для кристаллов PIC16F84. Тип корпуса указывается в Маркировке при заказе микросхем. Корпуса бывают только с 18 Выводами.
PDIP — Обычный пластмассовый двухрядный корпус
SOIC — Малогабаритный DIP корпус для монтажа на поверхность
Рисунок 1 — Внешний вид РIC 16С84,
PDIP корпус
С труктурная схема контроллера РIC 16С84 приведена на рисунке 2
Рисунок 2 — С труктурная схема контроллера РIC 16С84
Цоколевка РIC 16С84 приведена на рис. 3. Типы корпусов — PDIP .
Рисунок 3 Цоколевка РIC 16С84
Обозначения ножек и их функциональное назначение выводов приведено в таблице 1
Таблица 1 — функциональное назначение выводов РIC 16С84
Обозначение |
Нормальный режим |
Режим записи EEPROM |
|
RA0 — RA3 |
Двунаправленные линии ввода/вывода. Входные уровни ТТЛ |
||
RA4/T0CKI |
Вход через триггер Шмитта. Ножка порта ввода/вывода с открытым стоком или вход частоты для таймера/счетчика TMR0 |
||
RB0/INT |
Двунаправленная линия порта ввода/ вывода или внешний вход прерывания Уровни ТТЛ |
||
RB1 — RB5 |
Двунаправленные линии ввода/ вывода. Уровни ТТЛ |
||
RB6 |
Двунаправленные линии ввода/ вывода. Уровни ТТЛ. |
Вход тактовой частоты для eeprom |
|
RB7 |
Двунаправленные линии ввода/ вывода. Уровни ТТЛ. |
Вход/выход EEPROM данных. |
|
/Vрр |
Низкий уровень на этом входе генерирует сигнал сброса для контроллера. Активный низкий. |
Сброс контроллера Для режима EEPROM- подать Vрр. |
|
OSC1/CLKIN |
Для подключения кварца, RC или вход внешней тактовой частоты |
||
OSC2/CLKOUT |
Генератор, выход тактовой частоты в режиме RC генератора, в остальных случаях — для подкл.кварц |
||
Vdd |
Напряжение питания |
Напряжение питания |
|
Vss |
Общий(земля) |
Общий |
|
2.2 Описание регистров PIC
Все пpогpаммные объекты, с котоpыми может работать PIC, представляют собой физические pегистpы.
Hачнем с набоpа опеpационных pегистpов. Этот набоp состоит из pегистpа косвенной адресации (f0), pегистpа таймеpа/счетчика (f1), пpогpаммного счетчика (f2), pегистpа слова состояния (f3), pегистpа выбоpа (f4) и pегистpов ввода/вывода (f5,f6).
f0 регистр косвенной адресации IND0
f1 регистр таймера/счетчика
делителя.
f2.программный счетчик PCL.
b7 |
b6 |
b5 |
b4 |
B3 |
b2 |
b1 |
b0 |
||
03h= |
IRP |
RP1 |
RP0 |
Z |
DC |
C |
|||
f4 регистр выбора FSR.
f5, f6 регистры ввода/вывода PORTA, PORTB.
запpогpаммиpованы как входы или выходы пpи помощи pегистpа TRISA, имеющегоадpес 85h. Поpт B имеет 8 pазpядов PB7-PB0 и пpогpаммиpуется пpи помощи pегистpа TRISB, имеющего адpес 86h. Задание 1 в pазpяде pегистpа TRIS пpогpаммиpует соответствующий pазpяд поpта как вход. Пpи чтении поpта считывается непосpедственное состояние вывода, пpи записи в поpт запись пpоисходит в буфеpный pегистp.
f8, f9 регистры ЭППЗУ EEDATA, EEADR.
Регистры общего назначения., Специальные регистры, Сторожевой таймер WDT.
2.3 Описание тактовых генераторов
Для микpоконтpоллеpов семейства PIC возможно использование четыpех типов тактового генеpатоpа:
- XT кваpцевый pезонатоp;
- HS высокочастотный кваpцевый pезонатоp;
- LP микpопотpебляющий кваpцевый pезонатоp;
- RC RC цепочка.
Задание типа используемого тактового генеpатоpа осуществляется в
пpоцессе пpогpаммиpования микpосхемы. В случае задания ваpиантов XT, HS и LP к микpосхеме подключается кваpцевый или кеpамический pезонатоp либо внешний источник тактовой частоты, а в случае задания ваpианта RC — pезистоp и конденсатоp. Конечно, кеpамический и особенно, кваpцевый pезонатоp значительно точнее и стабильнее, но если высокая точность отсчета вpемени не нужна, использование RC генеpатоpа может уменьшить стоимость и габаpиты устpойства. Пользователь может запрограммировать два конфигурационных бита (FOSC1 и FOSC0) для выбора одного из четырех режимов: RC, LP, XT, HS. Кристаллы PIC16… могут также тактироваться и от внешних источников. Генератор, построенный на кварцевых или керамических резонаторах, требует периода стабилизации после включения питания. Для этого, встроенный таймер запуска генератора держит устройство в состоянии сброса примерно 18 мс после того, как сигнал на ножке кристалла достигнет уровня логической единицы. Таким образом, внешняя цепочка RC, связанная с ножкой во многих случаях не требуется.
Встроенные генераторы работоспособны при определенных номиналах питающего напряжения.
Таблица 3 — Частоты генераторов
Vdd |
OSC mode |
Max Freq |
|
2..3 V |
RC LP |
2 mHz 200 kHz |
|
3..6 V |
RC XT,LP |
4 mHz 200 kHz |
|
4,5…5,5 V |
HS |
10 MHz |
|
Схема сброса.
Карта памяти контроллера приведена в таблице 4
Таблица 4 — Карта памяти котроллера
Page 0 |
Page 1 |
|||
00 |
Indirect add. |
80 |
||
01 |
TMR0 |
OPTION_REG |
81 |
|
02 |
PCL |
82 |
||
03 |
STATUS |
83 |
||
04 |
FSR |
84 |
||
05 |
PORT A |
TRISA |
85 |
|
06 |
PORT B |
TRISB |
86 |
|
07 |
87 |
|||
08 |
EEDATA |
EECON1 |
88 |
|
09 |
EEADR |
EECON2 |
89 |
|
0A |
PCLATH |
8A |
||
0B |
INTCON |
8B |
||
0C 2F |
36 регистров общего назначения |
Тоже |
8C AF |
|
30 7F |
Не существует |
B0 FF |
||
В регистре статуса (03h) есть биты выбора страниц, которые позволяют обращаться к четырем страницам будущих модификаций этого кристалла. Однако для PIC16С84 память данных существует только до адреса 02Fh. Первые 12 адресов используются для размещения регистров специального назначения. Регистры с адресами 0Ch-2Fh могут быть использованы, как регистры общего назначения, которые представляют собой статическое ОЗУ. Некоторые регистры специального назначения продублированы на обеих страницах, а некоторые расположены на странице 1 отдельно. Когда установлена страница 1, то обращение к адресам 8Ch-AFh фактически адресует страницу 0. К регистрам можно адресоваться прямо или косвенно.
2.4 Система команд
Каждая команда PIC16С84 — это 14-битовое слово, которое разделено по смыслу на следующие части: — 1. код операции, -2. поле для одного и более операндов, которые могут участвовать или нет в этой команде. Система команд PIC16С84 включает в себя байт-ориентированные команды, бит-ориентированные, операции с константами и команды передачи управления.
Для байт-ориентированных команд “f” обозначает собой регистр, с которым производится действие; “d” — бит определяет, куда положить результат. Если “d” =0, то результат будет помещен в W регистр, при “d”=1 результат будет помещен в “f”, упомянутом в команде. Для бит-ориентированных команд “b” обозначает номер бита, участвующего в команде, а “f” -это регистр , в котором этот бит расположен.
Для команд передачи управления и операций с константами, “k” обозначает восьми или одинадцатибитную константу.
Все команды выполняются в течение одного командного цикла. В двух случаях исполнение команды занимает два командных цикла: -1 проверка условия и переход, -2.изменение программного счетчика как результат выполнения команды. Один командный цикл состоит из четырех периодов генератора. Таким образом, для генератора с частотой 4 МГц время исполнения командного цикла будет 1 мкс.
Таблица 5
Мнемокод |
Название команды |
Флаги |
Примеч. |
||
ADDWF |
f,d |
Сложение W с f |
C,DC,Z |
2,3 |
|
ANDWF |
f,d |
Логическое И W и f |
Z |
2,3 |
|
CLRF |
f |
Сброс регистра f |
Z |
3 |
|
CLRW |
Сброс регистра W |
Z |
|||
COMF |
f,d |
Инверсия регистра f |
Z |
2,3 |
|
DECF |
f,d |
Декремент регистра f |
Z |
2,3 |
|
DECFSZ |
f,d |
Декремент f, пропустить команду, если 0 |
2,3 |
||
INCF |
f,d |
Инкремент регистра f |
Z |
2,3 |
|
INCFZ |
f,d |
Инкремент регистра f, пропустить команду, если 0 |
2,3 |
||
IORWF |
f,d |
Логическое ИЛИ W и f |
Z |
2,3 |
|
MOVF |
f,d |
Пересылка регистра f |
Z |
2,3 |
|
MOVWF |
f |
Пересылка W в f |
3 |
||
NOP |
Холостая команда |
||||
RLF |
f,d |
Сдвиг f влево через перенос |
C |
2,3 |
|
RRf |
f,d |
Сдвиг f вправо через перенос |
C |
2,3 |
|
SUBWF |
f,d |
Вычитание W из f |
C,DC,Z |
2,3 |
|
SWAPF |
f,d |
Обмен местами тетрад в f |
2,3 |
||
XORWF |
f,d |
Исключающее ИЛИ W и f |
Z |
2,3 |
|
ADDLW |
k |
Сложение константы с W. |
C,DC,Z |
||
ANDLW |
k |
Логическое И константы и W |
Z |
||
IORLW |
k |
Логическое ИЛИ константы и W |
Z |
||
SUBLW |
k |
Вычитание W из константы. |
C,DC,Z |
||
MOVLW |
k |
Пересылка константы в W |
|||
XORLW |
k |
Исключающее ИЛИ константы и W |
Z |
||
OPTION |
Загрузка W в OPTION_REG регистр |
1 |
|||
TRIS |
F |
Загрузка TRIS регистра |
1 |
||
Таблица 6 — Бит ориентированные команды
Мнемокод |
Название команды |
Флаги |
Примеч. |
||
BCF |
f,d |
Сброс бита в регистре f |
2,3 |
||
BSF |
f,d |
Установка бита в регистре f |
2,3 |
||
BTFSC |
f,b |
Пропустить команду, если бит равен 0 |
|||
BTFSS |
f,b |
Пропустить команду, если бит равен 1 |
|||
Таблица 7 — Команды условного перехода
Мнемокод |
Название команды |
Флаги |
Примеч. |
||
CALL |
k |
Вызов подпрограммы |
|||
CLRWDT |
Сброс Watchdog таймера |
TO,PD |
|||
GOTO |
k |
Переход по адресу |
|||
RETLW |
k |
Возврат из подпрограммы с загрузкой константы в W |
|||
RETFIE |
Возврат из прерывания. |
||||
RETURN |
Возврат из подпрограммы. |
||||
SLEEP |
Переход в режим SLEEP |
TO,PD |
|||
3. Блок ввода аналоговых данных
Блок ввода аналоговых данных (БВВАД) должен обеспечить периодическое преобразование входных аналоговых данных в цифровой код и передачу его в микропроцессорный блок.
Данный блок состоит из аналогового коммутатора (АК), аналого-цифрового преобразователя (АЦП).
Согласно условию, максимально допустимое время преобразования в АЦП должно быть не более:
- t <
- T/(P+1) = 160/(13+1) = 10 мкс;
Также должна обеспечиваться заданная точность преобразования, которая определяет разрядность АЦП:
- N >
- log2 ? = — log2(0.08) = 4;
— Данную скорость и разрядность может обеспечить АЦП КР1446ПВ1 со временем преобразования 0,32 мкс и разрядностью 10. АЦП включается в четырехразрядном режиме со внутренней синхронизацией. Разряды D4 — D1 шины прота «А» подключаются к старшим 4 разрядам D10 — D7 АЦП. Допустимое входное напряжение не более 5В.
АЦП не имеет по выходу Z-состояние
Микросхема имеет два общих провода — «аналоговая» земля и «цифровая» земля для предотвращения импульсных наводок на входные аналоговые устройства.
Рисунок 4 — Схема включения АЦП
Электрические параметры АЦП:
Номинальное напряжение питания 5 В ±10%
Выходное напряжение низкого уровня на выводах 7-11,
18, 19, 21, 32-25 при =0,5 мА 0,5 В
Выходное напряжение высокого уровня на выводах 7-11,
18, 19, 21, 32-25 при =0,5 мА 3,6В
Диапазон аналогового сигнала , В
Нижний уровень опорного напряжения относительно общего
аналогового вывода, -1 +0,1 В
Верхний уровень опорного напряжения 4В
Ток потребления 15 мА
Время преобразования 320 нс
Тактовая частота 12,5 МГц
Емкость аналогового входа 150 пФ
Емкость логического выхода 15 пФ
Предельно допустимые режимы эксплуатации
Напряжение питания 4,5…5,5 В
В предельном режиме 0…7 В
Напряжение на любом выходе 0 …U n
Входное напряжение высокого уровня 3,6. ..U n В
Входное напряжение низкого уровня 0…0.8 В
Выходной ток низкого (высокого) уровня <0,5 мА
Температура окружающей среды -40…+70 °С
Температура хранения 60…+ 125 °С
Для преобразования аналогового сигнала каждого из 11 датчиков применяется аналоговый коммутатор К591КН1 с 16 аналоговыми входами. Канал коммутатора задаётся четырёхразрядным адресом. Перебор адресов производится выходами PА(0-3)
Так как аналоговый коммутатор изготовлен по МОП технологии, то напряжение логической единицы, подаваемые на его цифровые входы должно быть не менее 4 — 4,1 В. Для устранения этого несогласования применяется преобразователь уровня, который построен на микросхеме DD22 и резисторах R2 — R6 на которые подается напряжение 5В.
4. Блок отображения информации
Для отображения результата вычислений применяются семисегментные знакосинтезирующие индикаторы АЛС324А (HL1 — HL3) их принципиальное отличие в наличии общего анода, это позволяет напрямую без резисторов подключать их к дешифраторам. Количество разрядов отображаемого десятичного числа определяется разрядностью данных. Для преобразования двоичного кода в код индикатора применются дешифратор К514ИД1, на входы которого подается сигнал с порта «В». Код результата записывается в буферные регистры , сохраняющие код до следующей записи. В регистры записывается двоично-десятичный код при наличии перепада на входе STB «логической» единицы.
5. Разработка программного обеспечения
Программа должна выполнять следующие действия. Опросить первый аналоговый вход и преобразовать значение из него в цифровую форму, сохранить число в памяти. После этого прочитать следующий вход и так до тринадцати, затем производится вычисление функции, полученное значение преобразуется в двоично-десятичный код и выводится на индикаторы.
Тогда блок-схема программы будет иметь следующий вид:
Рисунок 2- Блок-схема алгоритма программы
Выводы
В данной курсовой работе было спроектировано и разработано микропроцессорное устройство. Его функции заключаются в сборе аналоговой информации, преобразование ее в цифровую, обработка собранной информации по программе и выдача этой информации на индикаторы в десятичном виде. Подобные задачи довольно часто возникают на производстве или в бытовых приборах, где необходимо постоянно контролировать те или иные параметры. Решение их, как правило, заключается в применении подобных микропроцессорных устройств, которые достаточно простые и дешевые для широкого применения.
Разработанное устройство управляется фиксированной программой из ПЗУ, на практике же можно менять программу по желанию пользователя, если это необходимо. Устройство для перепрограммирования можно представить в удобном для пользователя виде, что существенно расширит рамки функционирования устройства.
Литература
[Электронный ресурс]//URL: https://inzhpro.ru/kursovaya/razrabotka-kontrollera/
1.Методические указания к курсовому проекту «Микропроцессорный контроллер» по курсу «»Микропроцессорная техника»/Составитель А.В. Дорошков. — Сумы: «Ризоцентр» СумГУ, 1999.
2.Гуртовцев А.П., Гудыменко С.В. Программы для микропроцессоров. — Минск .: Выш. шк., 1989.
3.Цифровые и аналоговые интегральные микросхемы: Справочник / под ред. С. В. Якубовского. — М.: Энергия, 1990.
4.http://pic16f84.city.tomsk.net/aboutpic.html
5.http://pic16f84.city.tomsk.net/shemmpic.html
Приложение
Листинг программы
; описание операционных pегистpов
TMR0 EQU 01h
PC EQU 02h
STATUS EQU 03h
FSR EQU 04h
; pегистpы ввода/вывода
PORTA EQU 05h
PORTB EQU 06h
; ячейки ОЗУ
DAT1 EQU 0Ch
DAT2 EQU 0Bh
DAT3 EQU 0Eh
DAT4 EQU 0Fh
DAT5 EQU 10h
DAT6 EQU 11h
DAT7 EQU 12h
DAT8 EQU 13h
DAT9 EQU 14h
DAT10 EQU 15h
DAT11 EQU 16h
DAT12 EQU 17h
DAT13 EQU 18h
FL1 EQU 19h
FL2 EQU 1Ah
DAT13 EQU 1Bh
DILENE EQU 1Ch
DILNUK EQU 1Dh
CHASTKA EQU 1Eh
F EQU 1Fh
E EQU 20h
D1 EQU 21h
D2 EQU 22h
; биты pегистpа STATUS
C EQU 0h
DC EQU 1h
Z EQU 2h
PD EQU 3h
TO EQU 4h
RP EQU 5h
; упpавляющие pегистpы
TRISA EQU 85h
TRISB EQU 86h
; слова инициализации для поpтов ввода/вывода
INITA EQU B’11111111′
INITB EQU B’00000000′
; Рабочая секция
; начало исполняемого кода
ORG 0
GOTO BEGIN
;
ORG 100h
BEGIN
MOVLW INITA
MOVWF TRISA
MOVLW INITB
MOVWF TRISB
; ВВОД ДАННЫХ С АЦП
LOOP 2 MOVLW B ‘10000000’ W00000001
MOVWF PORTB PORT BW
LOOP 14 BTFSS PORTA, 0 ; ожидание сигнала
GOTO LOOP1 ; от АЦП
MOVLW B `10001111′ ; остановка
MOVWF PORTB ; АЦП
MOVF PORTA, 0 ; считывание данных
MOVWF DAT1 ; из АЦП
MOVLW B ‘10000000’ ; W10001000
MOVWF PORTB ; PORT BW
LOOP 2 BTFSS PORTA, 0 ; ожидание сигнала
GOTO LOOP2 ; от АЦП
MOVLW B `10001111′ ; остановка
MOVWF PORTB ; АЦП
MOVF PORTA, 0 ; считывание данных
MOVWF DAT2 ; из АЦП
…………………
MOVLW B ‘10000000’ ; W10001101
MOVWF PORTB ; PORT BW
LOOP 13 BTFSS PORTA, 0 ; ожидание сигнала
GOTO LOOP13 ; от АЦП
MOVLW B `10001111′ ; остановка
MOVWF PORTB ; АЦП
MOVF PORTA, 0 ; считывание данных
MOVWF DAT13 ; из АЦП
; РАСЧЕТ ФУНКЦИИ
BCF DAT1, 0 ; маскирование данных
MOVF DAT1 ; WDAT1
BCF DAT2, 0 ; маскирование данных
ADDWF DAT2 ; WW+DAT2
MOVWF F ; FW
BCF DAT3, 0 ; маскирование данных
MOV DAT3, 0 ; WDAT3
MOVWF DILENE ; DILENEW
CLRW ; W0
MOVLW B `00000010′ ; W2
MOVWF DILNUK ; DILNUKW
CALL DIV ; вызов подпрограммы
MOVF CHASTKA, 0 ; WCHASTKA
ADDWF F, 1 ; FF+W
…
BCF DAT13, 0 ; маскирование данных
MOV DAT13, 0 ; WDAT13
MOVWF DILENE ; DILENEW
CLRW ; W0
MOVLW B `00001100′ ; W12
MOVWF DILNUK ; DILNUKW
CALL DIV ; вызов подпрограммы
MOVF CHASTKA, 0 ; WCHASTKA
ADDWF F, 1 ; FF+W
; ПЕРЕХОД В ДИСЯТИЧНУЮ СИСТЕМУ ИСЧИСЛЕНИЯ
CALL DECIM ; вызов подпрограммы
; ВЫВОД НА ИНДИКАТОР
RLF E, 1 ; сдвинуть регистр E влево
RLF E, 1 ; сдвинуть регистр E влево
RLF E, 1 ; сдвинуть регистр E влево
RLF E, 0 ; сдвинуть и загрузить в W
ADDLW B `00000010′ ; W2
MOVWF PORTB ; PORTBW
RLF D1, 1 ; сдвинуть регистр D1 влево
RLF D1, 1 ; сдвинуть регистр D1 влево
RLF D1, 1 ; сдвинуть регистр D1 влево
RLF D1, 0 ; сдвинуть и загрузить в W
ADDLW B `00000100′ ; W4
MOVWF PORTB ; PORTBW
RLF D2, 1 ; сдвинуть регистр D2 влево
RLF D2, 1 ; сдвинуть регистр D2 влево
RLF D2, 1 ; сдвинуть регистр D2 влево
RLF D2, 0 ; сдвинуть и загрузить в W
ADDLW B `00001000′ ; W8
MOVWF PORTB ; PORTBW
GOTO LOOP 14 ; бесконечный цикл
; ПОДПРОГРАММА ДИЛЕНИЯ
DIV MOVLW 008 ; W08
MOVWF FL1 ; FL1W
CLRF FL2 ; очистка FL2
RLF DILENE, 1 ;сдвиг регистра влево через
перенос
MOV FL2, 0
RLE FL2
LOOP3 MOVWF DILNUK, 0
SUBWF FL2, 0
BTFSC STSTUS, 0
GOTO LOOP1
ADDWF DILNUK, 0
LOOP1 MOVF FL2, 0
BTFSC STSTUS, 0
GOTO LOOP2
BSF STATUS,0
LOOP2 BSF STATUS,0
RLF FL2, 0
MOVWF CHASTKA
DECF FL1
BTFSS
GOTO LOOP3
RETURN
; ПОДПРОГРАММА ПЕРЕХОДА
; В ДЕСЯТИЧНУЮ СИСТЕМУ
DESIM CLRF E ; очистка регистра E
CRLF D1 ; очистка регистра D1
CRLF D2 ; очистка регистра D2
LOOP3 MOVLW B `00001010′ ; W10
SUBWF F, 1 ; FF-W
BTFSC STATUS, 0 ; если бит равен 0
GOTO LOOP1
MOVWF F,0 ; WF
MOVWF E ; EW
RETURN
LOOP1 MOVF F, 0 ; WF
SUBLW B `00001001′ ; W9
BTFSC STATUS, 0 ; если бит равен 0
GOTO LOOP2
INCF D2, 1 ; D2 D2+1
GOTO LOOP3
LOOP2 INCF D1, 1 ; D1 D1+1
GOTO LOOP3
END