Проектирование вычислительной системы на микроЭВМ

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

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 28.06.2013
Размер файла 814,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

КУРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Кафедра программного обеспечения и

администрирования информационных систем

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

Проектирование вычислительной системы на микроЭВМ

Работу принял: доцент кафедры ПОиАИС, Бородин С.Г.

Работу выполнил: студент 332 гр. МОиАИС, кандидат технических наук Простаков Д.В.

Курск 2011

Содержание

  • 1. Задание
  • 2. Краткое описание PIC16С74
  • 3. Разработка системы
  • 3.1 Параметры устройства
  • 3.2 Лицевая панель и ГСА диалога с пользователем
  • 3.3 Функциональная схема
  • 3.4 Программное обеспечение
  • Заключение
  • Приложения

1. Задание

Разработать микропроцессорную систему на базе однокристальной микроЭВМ и её программное обеспечение, реализующее заданный набор функций.

Вариант

Расшифровка

5-2a

Измеритель длительности и амплитуды прямоугольных импульсов на PIC16C74, число входных каналов - 4, максимальная длительность (мс) - 16;

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

2. Краткое описание PIC16С74

Этот микроконтроллер является одним из самых мощных представителей семейства PIC16Схх. Архитектура основана на концепции раздельных шин и областей памяти для данных и для команд (Гарвардская архитектура). Шина данных и память данных (ОЗУ) имеют ширину 8 бит, а программная шина и программная память (ПЗУ) имеют ширину 14 бит.

Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции выполняются с высокой скоростью, и с перекрытием по времени выборок команд и циклов выполнения 14-битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды. Все команды выполняются за один цикл (200 нс при 20 Мгц), исключая команды переходов. Исполняемая программа может находиться только во встроенном ПЗУ.

Общая архитектура

Контроллер включает в себя (рис. 19):

§ процессор;

§ память программ;

§ память данных (ОЗУ, регистровый файл);

§ многочисленные внешние устройства.

К узлам процессора можно отнести:

§ 8-разрядное АЛУ;

§ 8-разрядный рабочий регистр W (аккумулятор);

§ 8-разрядный регистр флагов STATUS (рис. 20);

§ 13-разрядный программный счетчик PC, по содержимому которого осуществляется доступ в память программ;

§ 8-уровневый стек программного счетчика, предназначенный для хранения только адресов возврата из подпрограмм (прерываний). (Программный доступ в стек не возможен!);

§ регистр команд и блок управления;

§ тактовый генератор;

§ схемы, реализующие режимы пониженного энергопотребленния;

§ и др.

Рис. 1. Общая структура микроконтроллера PIC 16Cxx

Регистр STATUS содержит арифметические флаги АЛУ, состояние контроллера при сбросе и биты выбора банка для памяти данных. STATUS доступен для любой команды так же, как любой другой регистр. Формат регистра (рис. 20) содержит программно и аппаратно устанавливаемые флаги.

7

6

5

4

3

2

1

0

IRP

RP1

RP0

TO

PD

Z

DC

C

Рис. 2. Формат регистра STATUS

С

- флаг переноса/заема. Для команд ADDWF и SUBWF. Бит устанавливается, если в результате операции происходит перенос или заем При вычитании С устанавливается в «1» при отсутствии заёма. в/из девятого разряда. При выполнении команд сдвига этот бит всегда загружается из младшего или старшего бита сдвигаемого источника.

DC

- флаг десятичного переноса/заема. Для команд ADDWF и ADDLW. Бит устанавливается, если в результате операции из четвертого разряда байта происходит перенос. В командах вычитания флаг устанавливается при отсутствии заема.

Z

- флаг нулевого результата. Устанавливается, если результатом арифметической или логической операции является ноль.

/PD

- Power Down (режим пониженного энергопотребления). Бит устанавливается при включении питания или после выполнения команды CLRWDT. Бит сбрасывается командой SLEEP.

/TO

- Time Out. Флаг срабатывания сторожевого таймера. Бит устанавливается при включении питания или после выполнения команд CLRWDT и SLEEP. Сбрасывается после выдержки времени сторожевого таймера

По состоянию битов регистра статуса /TO и /PD можно определить, чем был вызван "Сброс" кристалла:

/TO

/PD

"Сброс" был вызван следующими событиями

0

0

Выход из SLEEP по завершению задержки сторожевого таймера

0

1

Завершение задержки сторожевого таймера (Не режим SLEEP)

1

0

Выход из SLEEP по внешнему сигналу /MCLR

1

1

Включение питания

х

х

Импульс L-уровня на входе /MCLR

Примечание: Биты /TO и /PD сохраняют текущее состояние до тех пор, пока не произойдет одно из событий, перечисленных в таблице. Импульс низкого уровня на входе кристалла /MCLR не изменяет состояние битов /TO и /PD.

PR [1: 0]

- биты выбора станицы регистров при прямой адресации: 00= Банк 0 (00h-7Fh), 01= Банк 1 (80h-FFh), 10= Банк 2 (100h-17Fh), 11= Банк 3 (180h-1FFh);

IRP

- бит выбора страницы регистров при косвенной адресации: "0" - Банк 0,1 (00h-FFh), "1" - Банк 2,3 (100h-1FFh).

Биты TO и PD устанавливаются аппаратно и не могут быть изменены программно. Это следует иметь в виду при выполнении команды с использованием регистра статуса. Например, команда CLRF_STATUS обнулит все биты, кроме битов TO и PD, а затем установит бит Z=1. После выполнения этой команды регистр статуса может и не иметь нулевое значение (из-за битов TO и PD) STATUS=000?? 100. Рекомендуется для изменения регистра статуса использовать только команды побитовой установки BCF, BSF, MOVWF.

Область ОЗУ (память данных) организована как 256 ? 8 бит (рис.21) и разбита на два банка, каждый по 128 байтов. Переключение банков производится битом RP0 в регистре STATUS. Каждый банк содержит регистры общего назначения и специальные регистры. Банк 0 выбирается, когда бит RP0=0. Каждый банк занимает адресное пространство 7Fh (128 байт). Первые 32 адреса в обоих банках занимают специальные регистры. Адреса 20h - 7Fh (банк 0) и A0h - FFh (банк 1) занимают регистры общего назначения (ячейки ОЗУ).

Среди приведенных на рисунке 21 регистров можно выделить группу "процессорных" - PCL, OPTION, STATUS, FSR, PCLATH; и несколько групп, относящихся к различным "внешним" устройствам и подсистемам. Подсистема прерываний поддерживается регистрами INTCON, PIR1, PIR2, PIE1, PIE2; подсистема параллельного ввода/вывода - регистрами портов PORT A, PORT B, PORT C, PORT D, PORT E и регистрами направлений TRIS A, TRIS B, TRIS C, TRIS D, TRIS E.

Подсистема контроля времени включает регистры таймеров и регистры управления ими: TMR0, TMR1L, TMR1H, T1CON, TMR2, T2CON, а также регистры, относящиеся к двум каналам CCP - Capture\Compare\PWM (захват \ сравнение \ ШИМ): CCPR1L, CCPR1H, CCP1CON, CCPR2L, CCPR2H, CCP2CON.

Подсистема последовательного ввода/вывода представлена регистрами асинхронного приемопередатчика: TXREG, RCREG, TXSTA, RCSTA, SPBRG и синхронного последовательного порта: SSPBUF, SSPCON, SSPADD, SSPSTAT.

Наконец, аналого-цифровой преобразователь использует регистры ADRES, ADCON 0, ADCON 1.

Память программ в PIC16C не пересекается с памятью данных (Гарвардская архитектура) и имеет собственную разрядную шину в 14 бит. Адресация памяти программ осуществляется только по содержимому программного счетчика. Расширение памяти программ за пределами кристалла в PIC16Cхх не предусмотрена.

Программный счетчик имеет разрядность 13 бит и способен адресовать 8К ґ 14бит объема программной памяти. Однако физически на кристалле имеется только 4К ? 14 памяти (адреса 0000h-0FFFh). При обращение к адресам выше 0FFFh фактически обращение производится к тем же четырем килобайтам. Вектор сброса находится по адресу 0000h, вектор прерывания находится по адресу 0004h.

00

Косвенный адрес

Косвенный адрес

80

01

TMR0

OPTION

81

02

PCL

PCL

82

03

STATUS

STATUS

83

04

FSR

OPTION

84

05

PORTA

TRIS A

85

06

PORT B

TRIS B

86

07

PORT C

TRIS C

87

08

PORT D

TRIS D

88

09

PORT E

TRIS E

89

0A

PCLATH

PCLATH

8A

0B

INTCON

INTCON

8B

0C

PIR1

PIE1

8C

0D

PIR2

PIE2

8D

0E

TMR1L

PCON

8E

0F

TMR1H

8F

10

T1CON

90

11

TMR2

91

12

T2CON

PR2

92

13

SSPBUF

SSPADD

93

14

SSPCON

SSPSTAT

94

15

CCPR1L

95

16

CCPR1H

96

17

CCP1CON

97

18

RCSTA

TXSTA

98

19

TXREG

SPBRG

99

1A

RCREG

9A

1B

CCPR2L

9B

1C

CCPR2H

9C

1D

CCP2CON

9D

1E

ADRES

9E

1F

ADCON 0

ADCON 1

9F

20

Регистры

общего

назначения

Регистры

общего

назначения

9F

.

.

7F

FF

Рис. 3. Формирование содержимого РС

Младший байт программного счетчика (PCL) доступен для чтения и записи и находится в регистре 02h. Старший байт программного счетчика (PCH) не может быть прямым образом прочитан или записан. Он формируется через PCLATH регистр, адрес которого 0Ah или 8AH. В зависимости от того, загружается ли в программный счетчик новое значение во время выполнения команд CALL, GOTO или в младший байт программного счетчика (PCL) производится запись, - старшие биты программного счетчика загружаются из PCLATH разными способами (рис.22)

Рис. 4. Формирование содержимого РС

Кристалл PIC16C74 имеет восьмиуровневый аппаратный стек разрядностью 13 бит, предназначенный для хранения только адресов возврата. Область стека не принадлежит ни к программной области, ни к области данных, а указатель стека пользователю недоступен. Текущее значение программного счетчика посылается в стек, когда выполняется команда CALL или производится обработка прерывания. При выполнении процедуры возврата из подпрограммы (команды RETLW, RETFIE или RETURN) в программный счетчик выгружается содержимое стека. Регистр PCLATH (0Ah) не изменяется при операциях со стеком.

Форматы команд и способы адресации

Все команды контроллера имеют одинаковую длину - 14 бит (одно командное слово) и с точки зрения форматов делятся на три разновидности (рис.23):

§ байт-ориентированные;

§ бит - ориентированные;

§ команды с константами (8 - или 11-битными).

Форматы этих команд (рис.23), при этом приняты следующие обозначения:

СОР - поле кода операции;

f - поле адреса памяти данных;

d - указатель регистра-приемника При d = 0 результат операции загружается в W-регистр, иначе - в регистр, адресованный полем f. ;

b - номер бита в адресуемом f регистре;

k - 8-битная константа - непосредственный операнд;

Addr - адрес перехода или вызова (для команд GOTO, CALL).

Для доступа к регистрам ОЗУ используется прямая или косвенная адресация. В семействе PIC16C для разных моделей предусматриваются единые принципы адресации с учетом возможного роста объема внутреннего ОЗУ. Поэтому адрес ячейки ОЗУ формируется как 9-битовый, причем при прямой адресации семь младших бит адреса берутся из поля адреса команды, а два старших - разряды PR1. PR0 регистра STATUS.

13

8

7

6

0

1

СОР

d

f

байт-ориентированные

13

10

9

7

6

0

2

СОР

b

f

бит-ориентированные

13

8

7

0

3

СОР

k

команды

с

константами

13

11

10

0

СОР

Addr

Рис. 5. Форматы команд

Для организации косвенной адресации необходимо в поле f команды поместить код 000 0000. В этом случае память адресуется через регистр FSR (04h), причем содержимое регистра FSR рассматривается как восемь младших разрядов адреса, а старший (девятый) бит - разряд IRP регистра STATUS.

Любая команда, которая использует f0 (адрес 00) в качестве регистра, фактически обращается к указателю, который хранится в FSR (04h). Чтение косвенным образом самого регистра f0 даст результат 00h. Запись в регистр f0 косвенным образом будет выглядеть как NOP, но биты статуса могут быть изменены.

В PIC16C74 объем ОЗУ составляет 256 байт и, следовательно, требуется 8-разрядный адрес. Поэтому биты IRP и RP1 для формирования адреса не используются. Их можно, но не рекомендуется С учетом сохранения возможности переносимости кода на (будущие) старшие модели семейства. , использовать как биты общего назначения.

При непосредственной адресации первый операнд двухместных операций извлекается из младшего байта командного слова, второй операнд и результат - всегда в регистре W.

Система операций

Система команд семейства PIC16xx приведена в приложении 2.1 Традиционно разделим команды на классы пересылочных, арифметико-логических, передачи управления и системных. При рассмотрении команд будем подразумевать под "регистром f" ячейку ОЗУ, адресуемую (прямо или косвенно) полем f команды.

Класс пересылки и загрузки включает команды сброса регистра f или W, загрузку W константой, обмен тетрадами в регистре f, пересылку содержимого W в регистр f и пересылку регистра f в регистр-приемник, каковым может быть регистр W (при d = 0) или регистр f (при d = 1). В последнем случае осуществляется как-бы пересылка регистра "самого в себя", но при этом по содержимому регистра f формируется значение флага Z, так что эту разновидность команды пересылки можно рассматривать как команду проверки.

В этом же классе присутствуют две команды - TRIS f и OPTION, сохранившиеся, очевидно, от более ранних семейств контроллеров. Разработчикам не рекомендуется использовать их в своих программах, а функции загрузки этих регистров можно реализовать с помощью команды MOVWF f.

В классе арифметико-логических и специальных команд присутствуют двухместные операции: сложение, вычитание, конъюнкция, дизъюнкция, неравнозначность, причем в качестве первого операнда может выступать регистр f или константа k, а в качестве второго - всегда регистр W. Результат операции с участием регистра f размещается, в зависимости от значения бита d команды, в регистре W или f, с участием константы - только в W.

Одноместные операции правого и левого сдвигов через флаг переноса С, инкремента, декремента, инверсии могут выполняться над любым регистром, адресуемым полем f, причем результат этих операций можно разместить как в регистре f, так и в W.

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

Класс команд передачи управления включает безусловные переход и вызов подпрограммы по прямому адресу, три разновидности команды безусловного возврата из подпрограммы и четыре команды условных пропусков следующей команды.

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

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

Класс системных представлен тремя командами: традиционной пустой операцией, командой сброса сторожевого таймера, которая обнуляет сторожевой таймер и его предделитель и устанавливает флаги TO и PD в регистре STATUS, и наконец, команда перевода контроллера в режим пониженного энергопотребления ("спящий" режим).

Подсистема прерываний

PIC16C74 поддерживает двенадцать источников прерываний:

§ внешнее прерывание с вывода RB0/INT;

§ прерывание от переполнения счетчика/таймера TMR0;

§ прерывание от изменения сигналов на выводах порта RB [7: 4];

§ прерывание от переполнения счетчика/таймера TMR1;

§ прерывание при достижении таймером TMR2 значения регистра периода PR2;

§ прерывание от модуля CCP1 (произведен захват значения таймера или значение таймера ТMR1 сравнялось с заданным);

§ прерывание от модуля CCP2 (произведен захват значения таймера или значение таймера TMR1 сравнялось с заданным);

§ прерывание от синхронного последовательного порта (режим SSP);

§ прерывание от параллельного порта (в режиме сопроцессора);

§ прерывание при завершении аналого-цифрового преобразования;

§ прерывание при приеме данных (режим SCI);

§ прерывание при передаче данных (режим SCI).

Все прерывания имеют один и тот же вектор/адрес - 0004h, однако в управляющем регистре прерываний INTCON (рис.25) соответствующим битом-флагом фиксируется источник запроса. При обработке прерывания адрес возврата посылается в стек, а в программный счетчик загружается адрес 0004h. Время реакции на прерывание для внешних событий, таких, как прерывание от вывода INT или порта B, - от 2 до 4 машинных циклов. Бит общего разрешения/запрещения прерывания GIE разрешает (если GIE = 1) все индивидуально незамаскированные прерывания или запрещает прерывания вообще. Каждое прерывание в отдельности может быть дополнительно разрешено/запрещено установкой/сбросом соответствующего бита в регистре INTCON.

7

6

5

4

3

2

1

0

GIE

PEIE

T0IE

INTE

RBIE

T0IF

INTF

RBIF

Рис. 6. Формат регистра INTCON

RBIF - Флаг прерывания от изменения сигнала на порту RB. Флаг устанавливается, если хотя бы один сигнал на выводах RB [7: 4] изменился.

INTF - Флаг внешнего прерывания INT. Флаг устанавливается, когда на выводе INT появляется сигнал внешнего источника прерывания.

T0IF - Флаг прерывания от переполнения TMR0. Флаг устанавливается, когда TMR0 переполнился.

Все три флага сбрасываются программно.

Прерывания могут быть замаскировано индивидуально или общим битом. Биты RBIE, INTE, T0IE соответственно маскируют эти прерывания, причем "1" в разряде маски разрешает прерывание.

PEIE - маскирует прерывания от устройств периферии.

GIE - маскирует все прерывания.

Для идентификации конкретной причины прерывания от периферийных устройств предусмотрены управляющие регистры PIR1, PIR2, а для индивидуального маскирования источников запросов от периферийных устройств - регистры разрешения/запрещения прерываний PIE1, PIE2.

7

6

5

4

3

2

1

0

PSPIF

ADIF

RCIF

TXIF

SSPIF

CCP1IF

TMR2IF

TMR1IF

Рис. 7. Формат регистра PIR1

TMR1IF - флаг прерывания от таймера1; устанавливается при переполнении таймера1, сбрасывается программно.

TMR2IF - флаг прерывания от таймера2; устанавливается при достижении таймером2 значения, записанного в регистре PR2; сбрасывается программно;.

CCP1IF - флаг CCP1 прерывания; сбрасывается программно;

Режим захвата: Произведен захват.

Режим сравнения: Произошло совпадение значений таймера 1 с заданным.

Режим ШИМ: прерывание не используется.

SSPIF - Синхронный последовательный порт. Устанавливается при завершении приема/передачи. Флаг должен сбрасываться программно.

TXIF - флаг передачи в режиме последовательного связного интерфейса: "1" ® буфер передачи данных пуст; "0" ® буфер передачи данных заполнен; RCIF - флаг приема в режиме последовательного связного интерфейса; "1" ® буфер приема данных заполнен; "0" ® буфер приема данных пустой.

ADIF - флаг прерывания после завершения аналого-цифрового преобразования.

PSPIF - флаг прерывания чтения/записи параллельного порта сопроцессора, устанавливается по сигналам чтения или записи RD/WR, сбрасывается программно.

Дополнительный управляющий регистр для прерываний от периферийных устройств PIR2 включает только один разряд (остальные зарезервированы для дальнейших применений).

7

6

5

4

3

2

1

0

CCP2IF

Рис. 8. Формат регистра PIR2

CCP2IF - флаг CCP2 прерывания; сбрасывается программно;

Режим захвата: Произведен захват.

Режим сравнения: Произошло совпадение значений таймера 2 с заданным.

Режим ШИМ: прерывание не используется.

Разряды регистров PIЕ1 и PIЕ2 маскируют запросы прерываний от соответствующих периферийных устройств. Следует помнить, что "1" в разряде разрешает соответствующее прерывание.

7

6

5

4

3

2

1

0

PSPIE

ADIE

RCIE

TXIE

SSPIE

CCP1IE

TMR2IE

TMR1IE

Рис. 9. Формат регистра PIЕ1

7

6

5

4

3

2

1

0

CCP2IЕ

Рис. 10. Формат регистра PIЕ2

Бит GIE разрешает/запрещает все прерывания и сбрасывается автоматически в следующих случаях:

§ при включении питания.

§ по внешнему сигналу /MCLR в обычном режиме.

§ по внешнему сигналу /MCLR в режиме SLEEP.

§ после задержки таймера WDT в обычном режиме.

§ после задержки таймера WDT в режиме SLEEP.

Когда начинает обрабатываться прерывание, бит GIE обнуляется автоматически, чтобы запретить повторные прерывания на момент выполнения текущего. Он восстанавливается также автоматически по команде "возврат из прерывания" RETFIE. Программа обработки прерывания не должна каким-либо способом устанавливать бит GIE.

Команда возврата из прерывания RETFIE завершает прерывающую подпрограмму и устанавливает бит GIE, чтобы опять разрешить прерывания. В подпрограмме обработки прерывания флаг-запрос на прерывание должен быть программно сброшен для предотвращения ложного прерывания после выхода из текущего. Флаги запросов прерываний не зависят от соответствующих маскирующих битов и бита общего маскирования GIE.

Внешнее прерывание осуществляется по фронту на выводе RB0/INT: либо по нарастающему (если бит 6 в регистре OPTION INTEDG=1), либо по спадающему (если INTEDG=0). Когда фронт обнаруживается на выводе INT, то бит запроса INTF устанавливается (INTCON [1]). Это прерывание может быть замаскировано установкой управляющего бита INTE в ноль (INTCON [4]). Бит запроса INTF должен быть очищен прерывающей программой перед тем, как опять разрешить это прерывание. Прерывание INT может вывести процессор из режима SLEEP, если перед входом в этот режим бит INTE был установлен в единицу. Состояние бита GIE также определяет: будет ли процессор переходить на подпрограмму прерывания после выхода из режима пониженного энергопотребления SLEEP.

Порты ввода/вывода

На кристалле PIC16C74 предусмотрено пять портов параллельного обмена с побитовой индивидуальной настройкой на вход или на выход. Выводы кристалла, линии портов используются одновременно и для подключения к АЦП, к внешнему прерыванию и другим встроенным узлам кристалла. Альтернативные переключения осуществляются через управляющие регистры. В таблице 4 приведено назначение выводов кристалла.

Таблица 1

Обозначение

Тип

вывода

Тип

буфера

Режим

Порт А

RA0/AN0

I/O

TTL

Порт ввода/вывода // Аналоговый вход канала 0

RA1/AN1

I/O

TTL

Порт ввода/вывода // Аналоговый вход канала 1

RA2/AN2

I/O

TTL

Порт ввода/вывода // Аналоговый вход канала 2

RA3/AN3

I/O

TTL

Порт ввода/вывода // Аналоговый вход канала 3

RA4/T0CKI

I/O

ST

Линия порта ввода/вывода с открытым стоком // Вход частоты для таймера/счетчика TMR0.

RA5/AN4 // SS

I/O

TTL

Порт ввода/вывода // Аналоговый вход канала 4 // В режиме последовательного интерфейса SPI - сигнал выборка slave

Порт B

RB0/INT

I/O

TTL/ST

Порт ввода/вывода // Внешний вход прерывания

RB1-RB3

I/O

TTL

Порт ввода/вывода

RB4

I/O

TTL

Порт ввода/вывода. Прерывание при изменении значения на выводе

RB5

I/O

TTL

Порт ввода/вывода. Прерывание при изменении значения на выводе

RB6

I/O

TTL/ST

Порт ввода/вывода. Прерывание при изменении значения на выводе. // Также используется при программировании кристалла.

RB7

I/O

TTL/ST

Порт ввода/вывода. Прерывание при изменении значения на выводе. // Также используется при программировании кристалла.

Порт С

RС0/T1OSO/T1CKI

I/O

ST

Порт ввода/вывода. // Выход генератора TMR1 // Вход внешней тактовой частоты

Окончание табл.4

Обозначение

Тип

вывода

Тип

буфера

Режим

RС1/T1OSI/CCP2

I/O

ST

Порт ввода/вывода. // Вход генератора TMR1 // Модуль CCP2 (защелкивание2 - вход, сравнение2 - выход, ШИМ2 - выход)

RС2/CCP1

I/O

ST

Порт ввода/вывода. // Модуль CCP1 (защелкивание1-вход, сравнение1 - выход, ШИМ1 - выход)

RС3/SCK/SCL

I/O

ST

Порт ввода/вывода // Тактовая частота для режимов SPI, I2C

RС4/SDI/SDA

I/O

ST

Порт ввода/вывода // Вход данных в режиме SPI // Вход/выход данных в режиме I2C

RС5/SDO

I/O

ST

Порт ввода/вывода // Выход данных в режиме SPI

RС6/TX/CK

I/O

ST

Порт ввода/вывода // В режиме SCI (асинхронном) выход данных // В режиме SCI (синхронном) тактовая частота

RС7/RX/DT

Порт ввода/вывода // В режиме SCI (асинхронном) вход данных // В режиме SCI (синхронном) вход/выход данных

Порт D

RD [0: 7] /PSP [0: 7]

I/O

ST/TTL

Двунаправленный порт (RD0. RD7) ввода/вывода // Параллельный порт-защелка (PSP0. PSP7) для подключения к микропроцессорной шине в качестве сопроцессора

Порт Е

E0 // RD/AN5

I/O

ST/TTL

Двунаправленный порт ввода/вывода // Сигнал чтения в режиме микропроцессорной шины // Аналоговый вход канала 5

E1 // WR/AN6

I/O

ST/TTL

Двунаправленный порт ввода/вывода // Сигнал записи в режиме микропроцессорной шины // Аналоговый вход канала 6

E2 // CS/AN7

I/O

ST/TTL

Двунаправленный порт ввода/вывода // Сигнал выбора кристалла в режиме микропроцессорной шины // Аналоговый вход канала 7

Выводы кристалла, не входящие в порты

/MCLR/Vpp

I/P

ST

Низкий уровень на этом входе генерирует сигнал сброса для контроллера. Активный низкий.

OSC1/CLKIN

I

CMOS

Для подключения кварца или вход внешней тактовой частоты

OSC2/CLKOUT

O

Генератор, выход тактовой частоты в режиме RC генератора, в остальных случаях - для подключения кварцевого резонатора

Vdd

Р

-

Напряжение питания

Vss

Р

-

Общий (земля)

Условные обозначения: I - только вход, O - только выход, I/O - вход/выход, P - питание, TTL - уровень ТТЛ, ST - вход триггера Шмитта.

Порт А

Порт А - это порт разрядностью 6 бит, соответствующие выводы кристалла RA [5: 0]. Выводы RA [3: 0], RA5 двунаправленные. Линия RA4 - особая. Она имеет выход с открытым коллектором и вход триггера Шмитта. Адрес регистра порта А - 05h. Относящийся к порту А управляющий регистр TRISA расположен по адресу 85h. Если бит управляющего TRISA регистра имеет значение единица, то соответствующий вывод порта A запрограммирован на ввод. Ноль переключает вывод порта A на вывод и одновременно выводит на него содержимое соответствующего бита регистра защелки. Выводы RA [3: 0] могут быть также использованы как каналы аналоговых входов AN3 - AN0. Чтобы настроить линии RA как дискретные (то есть порт) или как вход АЦП, надо установить два бита в управляющем регистре ADCON1 (9Fh). Когда выводы определены как аналоговые входы, значение соответствующих разрядов регистра TRISA игнорируется. После сброса при включении выводы RA [3: 0], RA [5] конфигурируются как аналоговые входы. Вывод RA4 может быть использован как вход внешнего тактового сигнала для TMR0.

В качестве примера приведена схема линии порта RA (рис.31).

Рис. 11. Схема выводов 0 - 3, 5 порта А

Порт В

Порт В - это двунаправленный порт разрядностью 8 бит (адрес регистра 06h). Относящийся к порту В управляющий регистр TRISB расположен по адресу 86h. Если бит управляющего TRISB регистра равен единице, то соответствующая линия будет устанавливаться на вход. Ноль переключает линию на выход и одновременно выводит на нее содержимое соответствующего регистра защелки. У каждого вывода порта В имеется небольшая активная нагрузка (около 100 мкА) на линию питания. Она автоматически отключается, если этот вывод запрограммирован как выход. Более того, управляющий бит RBPU OPTION [7] может отключить (при RBPU=1) все нагрузки. Сброс при включении питания также отключает все нагрузки. Четыре линии порта В (RB [7: 4]) формируют запрос на прерывание при изменении значения сигнала на любой из них (только как входы). Если эти выводы настроены на вход, то они опрашиваются и защелкиваются в такте чтения Q1. Процессор может не обнаружить короткие импульсы на входе, их длительность должна быть более двух машинных циклов.

Новая величина входного сигнала сравнивается со старой в каждом машинном цикле. При несовпадении значения сигнала на выводе и в защелке линий RB4, RB5, RB6, RB7 генерируется запрос на прерывание RBIF (INTCON [0]). Любая линия, настроенная как выход, не участвует в этом сравнении. Прерывание может вывести кристалл из режима SLEEP. В подпрограмме обработки прерывания следует сбросить запрос прерывания одним из следующих способов:

1. Запретить прерывания при помощи обнуления бита RBIE INTCON [3].

2. Прочитать порт В. Это завершит состояние сравнения. Затем сбросить бит RBIF.

Прерывание по фронтам на RB и программно устанавливаемые внутренние активные нагрузки на этих четырех линиях могут обеспечить простой интерфейс, например для клавиатуры, с выходом из режима SLEEP по нажатию клавиш. Вывод RB0 совмещен со входом внешнего прерывания INT.

Порт С

Порт C - это двунаправленный порт разрядностью восемь бит (адрес регистра 07h). Относящийся к порту C управляющий регистр TRISC расположен по адресу 87h. Если бит управляющего TRISC регистра равен единице, то соответствующая линия будет устанавливаться на вход. Ноль переключает линию на выход и одновременно выводит на нее содержимое соответствующего регистра защелки. Пример инициализации порта С:

CLRF PORTC

; инициализация защелок порта С

BCF STATUS,RP0

; выбор банка 1

MOVLW 0CFh

; инициализация выводов порта:

MOVWF TRISC

; RC [3: 0] - входы; RC [5: 4] - выходы; RC [7: 6] - входы

Альтернативные функции выводов порта С приведены выше в таблице.

Порт D

Порт D - это двунаправленный порт разрядностью восемь бит (адрес регистра 08h). Относящийся к порту D управляющий регистр TRISD расположен по адресу 88h. Если бит управляющего TRISD регистра равен единице, то соответствующая линия будет устанавливаться на вход. В этой конфигурации на входах используются триггеры Шмитта. Ноль переключает линию на выход и одновременно выводит на нее содержимое соответствующего регистра защелки. Порт D может быть сконфигурирован как параллельная шина для подключения кристалла в качестве сопроцессора. Для этого нужно установить бит PSPMODE в слове управления TRISE [4]. В этом режиме входы будут иметь уровни ТТЛ.

Порт Е

Порт E имеет три линии (RE0,RE1,RE2), которые могут быть настроены как линии ввода/вывода (адрес регистра 09h). Относящийся к порту E управляющий регистр TRISE (рис.32) расположен по адресу 89h (состояние по сбросу - 0000 0111B). Когда линии портов настроены на ввод, то используются триггеры Шмитта. Если установлен бит PSPMODE в управляющем слове TRISE [4], то порт Е может быть использован для контроля микропроцессорной шины. В этом режиме пользователь должен проследить, чтобы биты TRISE [2: 0] были установлены в единицы (т.е. соответствующие выводы сконфигурированы как цифровые входы). В этом режиме входы будут иметь уровни ТТЛ. Альтернативные функции выводов порта E сведены в таблицу.

7

6

5

4

3

2

1

0

IBF

OBF

IBOV

PSPMODE

TRISE2

TRISE1

TRIS0

Рис. 12. Формат регистра TRISE

IBF - входной буфер заполнен;

при IBF = 1 слово получено и должно быть прочитано CPU.

OBF - выходной буфер заполнен;

при OBF = 1 выходной буфер еще удерживает предыдущее слово, иначе выходной буфер уже прочитан.

IBOV - входной буфер переполнен;

при IBOV = 1 запись во входной буфер происходит, когда предыдущее слово еще не прочитано. Бит должен сбрасываться программно.

PSPMODE - выбирает режим для порта D и порта E;

при PSPMODE = 1 порты могут быть использованы как параллельная шина для подключения кристалла в качестве сопроцессора, 0 - двунаправленные линии ввода/вывода.

TRISE [2: 0] - биты управления направлением на выводах RE [2: 0] соответственно ("1" - вход, "0" - выход).

Аналого-цифровой преобразователь (АЦП)

Модуль АЦП (рис.33) содержит восемь аналоговых каналов, мультиплексируемых на одну схему выборки/хранения и далее на АЦП. Опорное напряжение поступает извне через вывод RA3/AIN3/Vref или формируется внутри кристалла из напряжения питания Vdd. (рис.31). АЦП может проводить преобразование и в режиме SLEEP. Управляющий регистр ADCON1 позволяет сконфигурировать порты ввода/вывода как аналоговые входы или цифровые линии ввода/вывода.

Рис. 13. Аналого-цифровое преобразование

Преобразователь использует принцип последовательного приближения; 8-битовый результат преобразования помещается в регистр ADRES (1Eh). Преобразование инициируется установкой управляющего бита (GO/DONE) в регистре ADCON0. До начала преобразования должен быть выбран нужный канал и обеспечено достаточное время для завершения выборки/хранения. Время преобразования есть функция периода генератора. Минимально возможное время преобразования - 20 мкс. В конце преобразования бит GO/DONE обнуляется и выставляется флаг прерывания от АЦП (ADIF). Ошибка преобразования не превышает 1 LSB для Vdd=5.12 В и Vref = Vdd. Разрешение и точность уменьшаются, когда Vref меньше Vdd.

Последовательность действий для проведения АЦП:

1. Конфигурация АЦП модуля:

§ конфигурация аналоговых входов (ADCON1 [2: 0]);

§ выбор одного из каналов АЦП (ADCON0 [5: 3]);

§ выбор тактов преобразования (ADCON0 [7: 6]);

§ разрешение работы АЦП модуля (ADCON0 [0]).

2. Конфигурация прерывания от АЦП (если требуется):

§ обнулить бит ADIF (PIR1 [6]);

§ установить бит ADIE (PIE1 [6]);

§ установить бит GIE (INTCON [7]).

3. Обеспечить необходимое время для заряда конденсатора в схеме выборки/хранения.

4. Пуск преобразования: установить бит GO // DONE (ADCON0 [6]).

5. Ожидание конца преобразования (или. или):

§ бит GO // DONE должен обнулиться;

§ ожидание прерывания после завершения АЦП преобразования.

6. Прочитать ADRES регистр, в котором записан результат преобразования:

§ обнулить ADIF, если требуется.

После завершения аналого-цифрового преобразования вырабатывается сигнал прерывания и устанавливается флаг ADIF в PIR1. Этот флаг должен сбрасываться программой. Бит разрешения/запрещения прерывания устанавливается в PIE1

Подключение аналоговых входов. Пользователь должен установить регистр ADCON1 так, чтобы линии аналоговых сигналов были сконфигурированы как аналоговые входы. Так как линии аналоговых сигналов включены параллельно цифровым выходам, которые имеют диоды защиты, подключенные к Vdd и к Vss в обратном направлении, то входной аналоговый сигнал должен ограничиваться этими значениями. Чтобы избежать повреждений входных цепей, рекомендуется подавать аналоговый сигнал через ограничивающий резистор не менее 500 Ом.

Для источников сигнала выходное сопротивление не должно быть больше 10 кОм. Тогда максимальная погрешность, вызванная током утечки, составляет меньше чем 1 LSB при Vdd = Vref = 5В (10 кОм ? 5мкА). Другая причина ограничения максимального выходного сопротивления источника сигнала - это требование к запоминанию входного сигнала на специальном конденсаторе в схеме выборки/хранения. Для снижения шума иногда добавляют внешний RC-фильтр. И в этом случае значение R должно быть таким, чтобы суммарная величина сопротивления не превосходила 10 кОм. Любой внешний компонент, подключаемый к аналоговому входу (будь то конденсатор или стабилитрон), должен иметь очень небольшой ток утечки.

Тактирование АЦП. АЦП работает от своего собственного RC-генератора или от главного генератора на кристалле OSC1, как показано а следующей таблице:

Управляющий бит

ADCS1,_ADCS0

Задержка (должна быть > 2 мкс)

00

2 tosc

01

8 tosc

10

32 tosc

11

trc (2.6 мкс, 4мкс номинал)

Время преобразования каждого бита занимает одинаковый интервал. Общее время измерения - 10 интервалов. Сам интервал должен быть не менее 2мкс. На низких частотах может быть выбран RC-генератор. Однако его частота существенно зависит от напряжения питания, температуры и других параметров (период от 2 до 6 мкс, номинал - 4 мкс).

Выборка и хранение. Схема выборки и хранения состоит из последовательного ключа и конденсатора, емкостью 51пФ. Пока управляющий бит ADON имеет значение единицы и выбран один из аналоговых каналов, ключ будет постоянно замкнут, а конденсатор подключен к источнику входного напряжения. Нет специальной команды, чтобы начать и закончить выборку. Когда начинается цикл преобразования, ключ размыкается, и напряжение на конденсаторе запоминается. После завершения преобразования следующее подключение источника сигнала к конденсатору будет сделано через отрезок времени, равный времени преобразования двух бит. Пользователь должен иметь это в виду при определении правильного момента для запуска следующего измерения.

7

6

5

4

3

2

1

0

ADCS1

ADCS0

CHS2

CHS1

CHS0

GO/DONE

-

ADON

Рис. 14. Управляющий регистр и регистр статуса АЦП (ADCON0)

ADON - включение АЦП;

при ADON = 1 АЦП работает и занимает линии IO; иначе АЦП не работает и не потребляет тока.

GO: /DONE - бит статуса АЦП;

при ADON=1 этот бит должен быть установлен, чтобы началось преобразование. Он автоматически сбрасывается аппаратным способом, когда преобразование заканчивается. Если ADON=0, то этот бит всегда 0.

CHS2. CHS1. CHS0 - выбор аналогового канала:

000: канал 0 (RA0/AIN0)

001: канал 1 (RA1/AIN1)

010: канал 2 (RA2/AIN2)

011: канал 3 (RA3/AIN3)

100: канал 4 (RA5/AIN4)

101: канал 5 (RE0/AIN5)

110: канал 6 (RE1/AIN6)

111: канал 7 (RE2/AIN7)

ADCS1. ADCS0 - выбор тактов на один шаг последовательного приближения:

00: fosc/2

01: fosc/8

10: fosc/32

11: fRC (частота от собственного RC-генератора).

7

6

5

4

3

2

1

0

-

-

-

-

-

PCFG2

PCFG1

PCFG0

Рис. 15. Управляющий регистр АЦП (ADCON1)

PCFG2. PCFG1. PCFG0 - биты, которые определяют конфигурацию выводов RA0 - RA3:

PCFG [2: 0]

RA0

RA1

RA2

RA5

RA3

RE0

RE1

RE2

Ref

000

A

A

A

A

A

A

A

A

Vdd

001

A

A

A

A

Vref

A

A

A

RA3

010

A

A

A

A

A

D

D

D

Vdd

011

A

A

A

A

Vref

D

D

D

RA3

100

A

A

D

D

A

D

D

D

Vdd

101

A

A

D

D

Vref

D

D

D

RA3

11х

D

D

D

D

D

D

D

D

-

Обозначения: A - аналоговый вход, D - цифровой ввод/вывод общего пользования.

Таймерная система

Таймер TMR1. Таймер 1 - это 16-битовый таймер/счетчик (рис.38), который имеет два 8-битовых регистра (TMR1H и TMR1L). Эти регистры доступны для чтения и записи.

Рис. 16. Таймер Т1

Таймер 1 инкрементируется от 0000h до FFFFh, после чего опять переходит в 0000h. Переполнение таймера TMR1 вызывает установку флага прерывания TMR1IF в регистре PIR1 [0]. Разрешить/запретить прерывание можно установкой/сбросом бита TMR1IE в слове PIE1 [0].

TMR1 может работать или в режиме таймера, или в режиме счетчика. Режим таймера - это инкрементирование от внутреннего источника частоты каждый машинный цикл. В режиме счетчика он инкрементируется по положительному фронту внешних сигналов, поступающих на вывод RC0/T1OSO/T1CKI. Выбор режима определяют установкой/сбросом бита TMR1CS в управляющем слове T1CON [1] (10h). При помощи регистра управления таймером 1 T1CON можно подобрать нужную конфигурацию таймера/счетчика.

7

6

5

4

3

2

1

0

-

-

T1CKPS1

T1CKPS0

T1OSCEN

T1INSYNC

TMR1CS

TMR1ON

Рис. 17. Управляющий регистр Таймера1 (T1CON)

T1CKPS1. T1CKPS0 - настройка предварительного делителя Таймера1.

S1,S0

Значение делителя

S1,S0

Значение делителя

00

1: 1

10

1: 4

01

1: 2

11

1: 8

T1OSCEN - разрешение/запрещение внешнего генератора таймера1:

"1" - генератор разрешен;

"0" - генератор изолирован.

T1INSYNC - бит контроля синхронизации. Имеет смысл только тогда, когда TMR1CS = 1 (Таймер1 использует внешний источник частоты), иначе значение этого бита игнорируется:

"1" - таймер 1 не синхронизирован внутренней частотой;

"0" - таймер 1 синхронизирован внутренней частотой.

TMR1CS - выбор источника частоты для Таймера1: "1" - внешний источник сигнала (RC0/T1OSI/TCKI) (положительный фронт); "0" - внутренний источник сигнала (OSC/4); TMR1ON - бит разрешения счета Таймера1: "1" - таймера включен; "0" - таймера выключен.

Таймер TMR2. Таймер2 - это 8-битовый таймер с предварительным делителем и выходным дополнительным делителем. Таймер2 используется в режиме ШИМ узла CCP1/CCP2. Регистры TMR2 доступны для чтения и записи. Управление таймером 2 и его делителями осуществляется с помощью разрядов регистра T2CON (12h).

7

6

5

4

3

2

1

0

-

TOUTPS3

TOUTPS2

TOUTPS1

TOUTPS0

TMR2ON

T2CKPS1

T2CKPS0

Рис. 18. Управляющий регистр Таймера2 (T2CON)

T2CKPS1. T2CKPS0 - настройка предварительного делителя Таймера2.

S1,S0

Значение предделителя

00

1: 1

01

1: 4

1: 16

TMR2ON - бит разрешения счета Таймера2:

"1" - таймера включен;

"0" - таймера выключен.

TOUTPS3. TOUTPS2. TOUTPS1. TOUTPS0 - настройка выходного дополнительного делителя Таймера2:

S3. S0

Выходной делитель

0000

1: 1

0001

1: 2

1111

1: 16

Таймер2 инкрементируется с 00h до тех пор пока не достигнет величины, записанной в регистре периода PR2. После этого, он обнуляется и начинает счет снова. Регистр PR2 доступен для чтения и записи, с его помощью управляют скважностью ШИМа. Сигнал переполнения или сравнения с периодом поступает сначала на дополнительный программируемый делитель (1: 1.1: 16), а затем уже формирует флаг прерывания от таймера2 (бит TMR2IF в слове PIR2 [1]). Выходной сигнал TMR2, взятый до дополнительного выходного делителя, по умолчанию используется в качестве сигналов сдвига для последовательного порта в синхронном режиме. Счет таймера2 можно разрешить или запретить битом управления TMR2ON. Предварительный делитель и выходной дополнительный делитель обнуляются, если имеет место одно из следующих событий: запись в регистр TMR2, запись в регистр T2CON, любой аппаратный сброс.

3. Разработка системы

3.1 Параметры устройства

Разрабатываемая система должна обеспечить:

· измерение длины и амплитуды прямоугольных импульсов на входах каналов;

· ввод управляющих сигналов ("Старт", "Смена канала");

· индикацию результата;

Для выполнения данных функций ОМЭВМ должна обладать следующими ресурсами:

· встроенный АЦП;

· 7 выходных линий для подключения шести семисегментных индикаторов при динамической индикации;

· 4 входных линии для 4-х каналов;

· 5 входные линии для подключения переключателя (выбор каналов) и кнопки Пуск;

· система таймеров;

PIC16С74 удовлетворяет всем требованиям данной задачи

3.2 Лицевая панель и ГСА диалога с пользователем

На лицевой панели устройства находятся 6 семисегментых индикатора, предназначенные для вывода результатов измерения, кнопка запуска вычислений, переключатель каналов, два входа для подключения источников, измеряемых прямоугольных импульсов.

Лицевая панель устройства:

Тип и назначение каждой из клавиш:

Переключатель "Выбор канала" предназначен для выбора канала на котором будут измеряться импульсы

Клавиша "Пуск" предназначена для начала измерений.

Взаимодействие системы с пользователем осуществляется в соответствии со следующей ГСА:

3.3 Функциональная схема

В связи с нехваткой выходных линий для непосредственного подключения шести семисегментных индикаторов выбор сделан в пользу динамической индикации. Для преобразования 4-х битных кодов цифр в 7-ми битный код символа используется отдельная схема (ЗГ), которая работает в соответствии со следующей таблицей:

Код (hex)

0

1

2

3

4

5

6

7

8

9

A - F

Отображаемый символ

0

1

2

3

4

5

6

7

8

9

не определено

Для установки номера текущего индикаторы используется дешифратор (3 в 8).

ОМЭВМ работает в однокристальном режиме (в данном режиме обладает всеми необходимыми ресурсами для разработки системы).

Назначение линий портов:

A0 < - Вход для источника импульсов I1

A1 < - Вход для источника импульсов I2

A2 < - Вход для источника импульсов I1

A3 < - Вход для источника импульсов I2

B0-B3 - > Вывод результата на знакогенератор

С0-С2 - >Выбор семисегментного индикатора

D1-D4 < - переключатель "Выбор канала"

D0 < - клавиша "Пуск"

Остальные линии портов не задействованы

Функциональная схема устройства

3.4 Программное обеспечение

Для работы данной программы частота 20Мгц является высокой поэтому она занижена до 8 Мгц. Сама программа состоит из 3х основных частей "Инициализации системы", "Вывода индикации" и "Измерений". В первой части происходит настройка портов, АЦП, таймеров, очистка необходимых для работы ячеек и т.д. Во второй происходит вызов прерывания с периодом примерно 3 мс на один индикатор (18 мс на все), даёт возможность поддерживать комфортную для пользователя индикацию. Третья часть вызывается при нажатии кнопки "Пуск". В ней производятся измерения частоты и амплитуды сигнала. ГСА этой части представлена ниже

вычислительная система программный пользователь

Измерения

Распределение памяти

Номер (а) ячейки

Назначение

20-22

Коды цифр результата измерения амплитуды

23-25

Коды цифр результата измерения длины

26

Ячейка для хранения номера индикатора

27

Хранитель флага С при десятичной коррекции

28

Промежуточные вычисления

30

Ячейка для хранения макс напряжения

31

Ячейка хранения текущего напряжения

2A,2B

Промежуточные значения TMR1

3A,3B,3C,3D,3E

Промежуточные цифр результата измерения длины

3F

Промежуточное хранения адреса корректируемой ячейки

Заключение

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

Приложения

Приложение 1 (Текст программы)

; *********************************Инициализация системы

; Настройка регистра статус (для работы со вторым банком памяти)

BFS 03,05

; Настройка АЦП и порта А

MOVLW 02h

MOVWF 9F

MOVLW 03h

MOVWF 85

; Настройка портов B, С на вывод

CLRF 86

CLRF 87

; Настройка порта D на ВВод

CLRF 88

COMF 88,1

; начальные коды отображаемых символов, смена банка

BСS 03,05

CLRF 20

CLRF 21

CLRF 22

CLRF 23

CLRF 24

CLRF 25

; Ячейка номера индикатора

CLRF 26

; ячейки для хранения напряжения и макс напряжения

CLRF 30

CLRF 31

; запуск питания АЦП

BFS 1F,000

; разрешение прерываний

MOVLW 80h

MOVWF 0B

; разрешение прерывания таймеру 2

MOVLW 02h

MOVWF 0C

; Установка предварительного и выходного делителя и запуск тамера

MOVLW 7Ch

MOVWF 12

; запись адреса прерывания в 04h

MOVLW PRERIVANIE

MOVWF 04

; *******************************Индикация. Ожидание

prov:

; проверка кнопки пуск

BTFSS 08,0

CALL Prog

GOTO prov

; *******************************Индикация. Обработчик прерывния

PRERIVANIE:

; Установка косвенного адреса

MOVLW 20h

MOVWF 04

INCF 26,1

; проверка переполнения счётчика

MOVF 26,0

SUBLW 06

BTFSC 03,02

; Обнуление, если переполнение

CLRF 26

; вывод индикации

OBR:

MOVF 26,0

ADDWF 04,1

MOVF 00,0

MOVWF 06

MOVF 26,0

MOVWF 07

; Установка предварительного и выходного делителя и запуск тамера

MOVLW 7Ch

MOVWF 12

RETFIE

; ****************************Измерения

Prog:

CLRW

; Остановка таймера 2

BCF 12,2

; Выбор канала АЦП

BTFSS 09,1

GOTO CH1

BTFSS 09,2

GOTO CH2

BTFSS 09,3

GOTO CH3

GOTO CH4

CH1:

BCF 1F,3

BCF 1F,4

BCF 1F,5

GOTO TGO

CH2:

BSF 1F,3

BCF 1F,4

BCF 1F,5

GOTO TGO

CH3:

BCF 1F,3

BSF 1F,4

BCF 1F,5

GOTO TGO

CH4:

BSF 1F,3

BSF 1F,4

BCF 1F,5

TGO:

; Пуск Тамера 1

CLRF 0E

CLRF OF

MOVLW 21

MOVWF 10

Cicle:

; Пуск АЦП

BSF 1F,2

; проверка максимального

MOVF 30,0

SUBWF 31,0

BTFSC 03,0

GOTO ZAM

; Работа АЦП

ACP:

BTFSC 1F,2

GOTO ACP

; Проверка на "шум"

MOVF 1E,1

BTFSC 03,2

GOTO PREOBR

; сохранение результата

MOVF 1E,0

MOVWF 31

GOTO Cicle

; Замена на максимальное

ZAM:

MOVF 31,0

MOVWF 30

; Таймер 1 - стоп

PREOBR:

BCF 10,0

; начало перевода напряжения. Умножение на 2

CLRW

MNOGH:

CLRF 28; обменник тетрад

; Проверка на 0 одного из множителей

MOVF 30,1

BTFSS 03,2

GOTO TIMER

; Уменьшение множителя

DECF 30,1

; прибавление 2

MOVF 22,0

ADDLW 02

MOVWF 22

; подготовка к коррекции и коррекция

MOVLW 22

MOVWF 04

CALL DECCOR

; Проверка старшей цифры (десятичные)

MOVF 22,0

ANDLW F0

BTFSC 03,2

GOTO MNOGH

; приплюсовка к сташему разряду (десятичные)

MOVWF 28

SWAPF 28,0

ADDWF 21,1

; удаление старшей цифры (сотые)

MOVF 22,0

ANDLW 0F

MOVWF 22

; подготовка к десятичной коррекции

DECF 04,1

CALL DECCOR

; Проверка старшей цифры (целые)

MOVF 21,0

ANDLW F0

BTFSC 03,2

GOTO MNOGH

; приплюсовка к сташему разряду (целые)

MOVWF 28

SWAPF 28,0

ADDWF 20,1

; удаление старшей цифры (десятичные)

MOVF 21,0

ANDLW 0F

MOVWF 21

; подготовка к десятичной коррекции

DECF 04,1

CALL DECCOR

GOTO MNOGH

; ********************************ОБРАБОТКА РЕЗУЛЬТАТА ТАЙМЕРА

TIMER:

; Сохранени времени 2A и 2B промежуточные хранилища

MOVF 0F,0

MOVWF 2A

MOVF 0E,0

MOVWF 2B

; 3A,3B,3C,3D,3E - промежуточное время

CLRF 3A

CLRF 3B

CLRF 3C

CLRF 3D

CLRF 3E

PERE:

; проверка на 0 первого регистра

MOVF 2B

BTFSS 03,2

GOTO DECR

; проверка на 0 второго регистра

MOVF 2A

BTFСS 03,2

GOTO FINAL

DECF 2A,1

; инверсия 2B, т.е. установка в FF

COMF 2B,1

GOTO TSUM

DECR:

DECF 2B,1

; проверка завершена. Прибаление 2

MOVF 3E,0

ADDLW 02

MOVWF 3E

; коррекция

MOVLW 3E

MOVWF 04

CALL DECCOR

; Хранение адреса 3F

; последовательная проверка всех ячеек на "переполнение"

MOVLW 3E

MOVWF 3F

CALL Star

BTFSS 03,2

GOTO PERE

MOVLW 3D

MOVWF 3F

CALL Star

BTFSS 03,2

GOTO PERE

MOVLW 3C

MOVWF 3F

CALL Star

BTFSS 03,2

GOTO PERE

MOVLW 3B

MOVWF 3F

CALL Star

BTFSS 03,2

GOTO PERE

GOTO FINAL

STAR:

; проверка старшей цифры

MOVWL 3F

MOVWF 04

MOVF 00,0

ANDLW F0

BTFSC 03,2

RETL 01

; Увеличение старшего разряда

MOVWF 28

SWAPF 28,0

DECF 04,1

ADDWF 00,1

INCF 04,1

MOVF 00,0

ANDLW 0F

MOVWF 00

; подготовка к коррекциия

CALL DECCOR

CLRW

RETURN

; Перенос данных в небходимые регистры

FINAL:

MOVF 3A,0

MOVWF 23

MOVF 3B,0

MOVWF 24

MOVF 3C,0

MOVWF 25

; Установка таймера индикации и возврат из процедуры

; разрешение прерывания таймеру 2

MOVLW 02h

MOVWF 0C

; Установка предварительного и выходного делителя и запуск тамера

MOVLW 7Ch

MOVWF 12

; запись адреса прерывания в 04h

MOVLW PRERIVANIE

MOVWF 04

RETURN

; *********************************Десятичная коррекция

DECCOR:

; Сохранение флага С

BTFSS 03,00

BCF 27,00

BSF 27,00

; Проверка на DC

BTSFC 03,1

GOTO CORR

MOVF 00,0

; проверка на больше 09

ANDLW 0F

SUBLW 09

BTFSC 03,0

GOTO CORRN

CORR:

; коррекция +6

MOVF 00,0

ADDLW 06h

MOVWF 00

СORRN:

; проверка флага С

BTFSS 27,0

GOTO FINCORR

; проверка на >90

MOVF 00,0

ANDLW F0

SUBLW 90

BTFSC 03,0

GOTO FINCORR

RETURN

FINCORR:

; коррекция +60

MOVF 00,0

ADDLW 60h

MOVWF 00

RETURN

Приложение 2 (Система команд микроЭВМ PIC16C74)

Мнемокод

Название команды

Цикл

Код команды

Флаги

Прим.

Пересылки и загрузки

CLRF f

Сброс регистра f

1

000001 1 fff ffff

Z

4

CLRW -

Сброс регистра W

1

000001 0 xxxxxxx

Z

-

MOVWF f

Пересылка W в f

1

000000 1 fff ffff


Подобные документы

  • Разработка микропроцессорной системы на базе однокристальной микроЭВМ, также программного обеспечения, реализующего заданный набор функций. Структура и схема микроконтроллера PIC16. Разработка программы на языке ассемблер в среде MPLAB IDE v8.84.

    курсовая работа [515,3 K], добавлен 11.07.2012

  • Структура внешнего интерфейса. Алгоритмы функционирования микроЭВМ, его структурная и функциональная схемы. Формат микрокоманд и разработка микропрограммы. Диаграмма синхроимпульсов при использовании микропроцессора. Временная диаграмма работы микроЭВМ.

    курсовая работа [2,6 M], добавлен 18.06.2012

  • Целесообразность применения МП-устройства. Архитектура микропроцессорной системы. Структурная организация БИС ВТ с изолированными шинами. Содержание и возможная направленность микроконтроллера. Обобщенная структура простого встраиваемого микроконтроллера.

    реферат [224,5 K], добавлен 28.04.2011

  • Автоматизация процесса защиты противопожарного инвентаря и средств пожаротушения. Проект микропроцессорной системы управления электронным замком: разработка концепции и структуры АС. Программное обеспечение микроконтроллера, листинг программы и прошивки.

    дипломная работа [2,0 M], добавлен 28.05.2012

  • Разработка вычислительной структуры, реализующей заданный набор операций для обработки запросов в реляционной базе данных (БД). Описание общей структуры системы с машиной баз данных. Разработка схем исполнительных процессоров и алгоритмов их операций.

    реферат [140,3 K], добавлен 27.10.2010

  • Распределение функций между аппаратной и программной частями микропроцессорной системы. Выбор микроконтроллера, разработка и описание структурной, функциональной и принципиальной схемы. Выбор среды программирования, схема алгоритма и листинг программы.

    курсовая работа [304,4 K], добавлен 17.08.2013

  • Назначение и устройство микропроцессорной системы контроля. Описание функциональной схемы микропроцессорной системы контроля. Расчет статической характеристики канала измерения. Разработка алгоритма функционирования микропроцессорной системы контроля.

    курсовая работа [42,0 K], добавлен 30.08.2010

  • Разработка вычислительной системы, предназначенной для реализации заданного алгоритма обработки входных цифровых данных. Особенности ее построения на базе процессора x86 (К1810) в минимальном режиме. Описание микропроцессорного комплекта серии К1810.

    курсовая работа [318,4 K], добавлен 15.08.2012

  • Системное, инструментальное и прикладное программное обеспечение. Современные настольные издательские системы. Программные средства мультимедиа. Системы искусственного интеллекта. Прикладное программное обеспечение автоматизированного проектирования.

    реферат [59,4 K], добавлен 18.12.2013

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

    курсовая работа [2,1 M], добавлен 08.02.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.