Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
КУРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Курсовой проект по дисциплине:
Архитектура вычислительных систем и компьютерных сетей
Измеритель амплитуды синусоидального сигнала на базе PIC16F874
Работу принял: Работу выполнил:
Жмакин А. П. ст.3 курса,313 гр. МОиАИС
Тяжкороб А.П.
____________________________________
(оценка)
Подпись:__________________ Подпись: _____________ Дата:______________________
Содержание
1. Техническое задание
Этот микроконтроллер является одним из самых мощных представителей семейства PIC16Схх. Архитектура основана на концепции раздельных шин и областей памяти для данных и для команд (Гарвардская архитектура). Шина данных и память данных (ОЗУ) имеют ширину 8 бит, а программная шина и программная память (ПЗУ) имеют ширину 14 бит.
Такая концепция обеспечивает простую, но мощную систему команд, разработанную так, что битовые, байтовые и регистровые операции выполняются с высокой скоростью, и с перекрытием по времени выборок команд и циклов выполнения 14-битовая ширина программной памяти обеспечивает выборку 14-битовой команды в один цикл. Двухступенчатый конвейер обеспечивает одновременную выборку и исполнение команды. Все команды выполняются за один цикл (200 нс при 20 Мгц), исключая команды переходов. Исполняемая программа может находиться только во встроенном ПЗУ.
Контроллер включает в себя (рис. 19):
К узлам процессора можно отнести:
Рис. . Общая структура микроконтроллера PIC 16Cxx
Регистр STATUS содержит арифметические флаги АЛУ, состояние контроллера при сбросе и биты выбора банка для памяти данных. STATUS доступен для любой команды так же, как любой другой регистр. Формат регистра (рис. 20) содержит программно и аппаратно устанавливаемые флаги.
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
IRP |
RP1 |
RP0 |
TO |
PD |
Z |
DC |
C |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Рис. . Формат регистра 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), |
IRP |
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 |
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 |
3а |
|||||||||||
СОР |
Addr |
Рис. . Форматы команд |
Для организации косвенной адресации необходимо в поле f команды поместить код 000 0000. В этом случае память адресуется через регистр FSR (04h), причем содержимое регистра FSR рассматривается как восемь младших разрядов адреса, а старший (девятый) бит разряд IRP регистра STATUS.
Любая команда, которая использует f0 (адрес 00) в качестве регистра, фактически обращается к указателю, который хранится в FSR (04h). Чтение косвенным образом самого регистра f0 даст результат 00h. Запись в регистр f0 косвенным образом будет выглядеть как NOP, но биты статуса могут быть изменены.
В PIC16C74 объем ОЗУ составляет 256 байт и, следовательно, требуется
8-разрядный адрес. Поэтому биты IRP и RP1 для формирования адреса не используются. Их можно, но не рекомендуется3, использовать как биты общего назначения.
При непосредственной адресации первый операнд двухместных операций извлекается из младшего байта командного слова, второй операнд и результат всегда в регистре 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 предусмотрено пять портов параллельного обмена с побитовой индивидуальной настройкой на вход или на выход. Выводы кристалла, линии портов используются одновременно и для подключения к АЦП, к внешнему прерыванию и другим встроенным узлам кристалла. Альтернативные переключения осуществляются через управляющие регистры. В таблице 4 приведено назначение выводов кристалла.
Таблица
Обозначение |
|||
Тип вывода |
Тип буфера |
Режим |
Порт А |
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 |
Порт 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 |
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 |
Двунаправленный порт ввода/вывода // Сигнал чтения в режиме микропроцессорной шины |
E1//WR/AN6 |
I/O |
ST/TTL |
Двунаправленный порт ввода/вывода // Сигнал записи в режиме микропроцессорной шины |
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 - питание, |
Порт А
Порт А это порт разрядностью 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).
Рис. . Схема выводов 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. В подпрограмме обработки прерывания следует сбросить запрос прерывания одним из следующих способов:
Прерывание по фронтам на RB и программно устанавливаемые внутренние активные нагрузки на этих четырех линиях могут обеспечить простой интерфейс, например для клавиатуры, с выходом из режима SLEEP по нажатию клавиш. Вывод RB0 совмещен со входом внешнего прерывания INT.
Порт С
Порт C - это двунаправленный порт разрядностью восемь бит (адрес регистра 07h). Относящийся к порту C управляющий регистр TRISC расположен по адресу 87h. Если бит управляющего TRISC регистра равен единице, то соответствующая линия будет устанавливаться на вход. Ноль переключает линию на выход и одновременно выводит на нее содержимое соответствующего регистра защелки. Пример инициализации порта С:
CLRF PORTC |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
; инициализация защелок порта С |
BCF STATUS,RP0 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
; выбор банка 1 |
MOVLW 0CFh |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
; инициализация выводов порта: |
MOVWF TRISC |
7 |
|||||||
6 |
5 |
4 |
3 |
2 |
1 |
0 |
IBF |
OBF |
IBOV |
PSPMODE |
TRISE2 |
TRISE1 |
TRIS0 |
Рис. . Формат регистра 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 позволяет сконфигурировать порты ввода/вывода как аналоговые входы или цифровые линии ввода/вывода.
Рис. . Аналого-цифровое преобразование
Преобразователь использует принцип последовательного приближения; 8-битовый результат преобразования помещается в регистр ADRES (1Eh). Преобразование инициируется установкой управляющего бита (GO/DONE) в регистре ADCON0. До начала преобразования должен быть выбран нужный канал и обеспечено достаточное время для завершения выборки/хранения. Время преобразования есть функция периода генератора. Минимально возможное время преобразования 20 мкс. В конце преобразования бит GO/DONE обнуляется и выставляется флаг прерывания от АЦП (ADIF). Ошибка преобразования не превышает 1 LSB для Vdd=5.12 В и Vref = Vdd. Разрешение и точность уменьшаются, когда Vref меньше Vdd.
Последовательность действий для проведения АЦП:
1. Конфигурация АЦП модуля:
2. Конфигурация прерывания от АЦП (если требуется):
3. Обеспечить необходимое время для заряда конденсатора в схеме выборки/хранения.
4. Пуск преобразования: установить бит GO//DONE (ADCON0[6]).
5. Ожидание конца преобразования (или...или):
6. Прочитать ADRES регистр, в котором записан результат преобразования:
После завершения аналого-цифрового преобразования вырабатывается сигнал прерывания и устанавливается флаг 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 |
7 |
|||||||
6 |
5 |
4 |
3 |
2 |
1 |
0 |
ADCS1 |
ADCS0 |
CHS2 |
CHS1 |
CHS0 |
GO/DONE |
|
ADON |
Рис. . Управляющий регистр и регистр статуса АЦП (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 |
Рис. . Управляющий регистр АЦП (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х |