Разработка контроллера

Курсовая работа

Развитие микроэлектроники и широкое применение ее изделий в промышленном производстве, в устройствах и системах управления самыми разнообразными объектами и процессами является в настоящее время одним из основных направлений научно-технического прогресса.

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

Микроконтроллеры представляют собой эффективное средство автоматизации разнообразных объектов и процессов. Все это определяет необходимость изучения микропроцессорных систем.

Знания, полученные при разработке микропроцессорной системы в курсовой работе, необходимы не только для узкого круга специалистов, занимающихся разработкой компьютеров, но и любому инженеру, работающему с микропроцессорной системой. Они необходимы для четкого понимания принципов работы любого компьютера, что поможет при необходимости найти и исправить возможные неполадки, усовершенствовать используемую систему, разработать новую. Знание внутренней организации ЭВМ необходимо для написания программ, напрямую работающих с аппаратными средствами микропроцессорных систем. Схема, разрабатываемая в данной курсовой работе, выполняет функцию сбора и обработки информации и содержит все функциональные блоки любого компьютера. Основным достоинством контроллера, применяемого в данной курсовой работе, является его дешевизна, что позволило ему найти широкое применение.

Постановка задачи

Контроллер, который разрабатывается в этой курсовой работе, должен обеспечивать:

  • периодический опрос Р аналоговых датчиков и преобразование их сигналов с заданной точностью в цифровой код;
  • обработку цифровых кодов с целью вычисления заданной функциональной зависимости 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)

4 стр., 1591 слов

Правила формирования структуры курсовой/дипломной работы

... -технологий). Все курсовые и дипломные работы подлежат обязательной проверке на плагиат, поэтому на кафедру в определенные сроки необходимо предоставить электронный вариант проекта (уже в готовом, оформленном виде!). Создание структуры курсовой или дипломной работы ...

Для выполнения проекта необходимо решить две задачи: разработать аппаратную часть контроллера и разработать программное обеспечение.

контроллер корпус команда

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 расположена внутри кристалла. Исполняемая программа может находиться только во встроенном ПЗУ.

15 стр., 7429 слов

По учебной дисциплине «Техническое обслуживание и ремонт компьютерных ...

... курсовых работ, а также при подготовке к практическим занятиям по учебной дисциплине «Техническое обслуживание и ремонт компьютерных систем и комплексов». 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