Измеритель синусоидального сигнала на базе микропроцессора PIC16F873A

Автор работы: Пользователь скрыл имя, 16 Июня 2014 в 17:21, курсовая работа

Краткое описание

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

Содержание

Техническое задание…………………………………………………………… 3
Описание применяемой микроЭВМ………………………………………… 4
Внешняя панель устройства………………………………………………… 18
Элементы устройства………………………………………………………… 18
Блок-схемы алгоритмов………………………………………………………… 19
Функциональная схема устройства…………………………………………..22
Текст программы……………………………………………………………… 23
Литература……………………………………………………………………… 26

Прикрепленные файлы: 1 файл

Urasach_sinus.doc

— 945.00 Кб (Скачать документ)

 


 


Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Курский государственный университет»

 

Факультет физики, математики и информатики

Кафедра программного обеспечения и администрирования  
информационных систем

 

 

Утверждаю.

Председатель экспертной комиссии,

зав. кафедрой ПОиАИС

_________________ В.В. Жуйков

«____» ________________ 2014 г.

 

 

Курсовой проект

по дисциплине «Архитектура вычислительных систем 
и компьютерных сетей»

на тему «Измеритель синусоидального сигнала на базе микропроцессора PIC16F873A»

 

Направление подготовки  010500 Математическое обеспечение и                администрирование информационных систем

Профиль     Информационные системы и базы данных

 

 

 

Выполнил:

студент гр. 313     Шевель А.Д.

 

Руководитель работы:

доц. каф. ПОиАИС    Жмакин А. П.

 

Оценка ____________________  «     »  июня 2014 г.

 

Члены комиссии:

 

 

 

Курск 2014 

Содержание

  1. Техническое задание……………………………………………………………    3
  2. Описание применяемой микроЭВМ…………………………………………     4
  3. Внешняя панель устройства………………………………………………… 18 
  4. Элементы устройства………………………………………………………… 18
  5. Блок-схемы алгоритмов………………………………………………………… 19
  6. Функциональная схема устройства…………………………………………..22
  7. Текст программы………………………………………………………………    23
  8. Литература………………………………………………………………………  26

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. Техническое задание

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

К прибору подключается источник сигнала и после нажатия на кнопку, спустя некоторое время, происходит вывод данных.  
2. Описание применяемой микроЭВМ

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

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

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

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

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

    • процессор;
    • память программ;
    • память данных (ОЗУ, регистровый файл);
    • многочисленные внешние устройства.

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

    • 8-разрядное АЛУ;
    • 8-разрядный рабочий регистр W (аккумулятор);
    • 8-разрядный регистр флагов STATUS (рис. 2);
    • 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 разными способами (рис. 4)

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

 

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

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

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

    • байт-ориентированные;
    • бит- ориентированные;
    • команды с константами (8- или 11-битными).

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

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

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

d – указатель регистра-приемника2;

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 для формирования адреса не используются. Их можно, но не рекомендуется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.

Информация о работе Измеритель синусоидального сигнала на базе микропроцессора PIC16F873A