Реализация десятичного калькулятора на PIC16F874

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

 

 

 

 

 

 

 

 

 

Реализация десятичного калькулятора на PIC16F874

 

Задание

 

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

 

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

 

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

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

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

процессор;

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

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

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

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

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

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

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

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

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

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

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

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

 

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

 

Регистр STATUS содержит арифметические флаги АЛУ, состояние контроллера при сбросе и биты выбора банка для памяти данных

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

Среди регистров семейства PIC16 можно выделить группу процессорных - 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.

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

Программный счетчик имеет разрядность 13 бит и способен адресовать 8К 14 бит объема программной памяти. При обращение к адресам выше 0FFFh фактически обращение производится к тем же четырем килобайтам.

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

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

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

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

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

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

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

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

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

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

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

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

Для доступа к регистрам ОЗУ используется прямая или косвенная адресация.

 

1387601СОРdfбайт-ориентированные131097602СОРbfбит-ориентированные138703СОРkкоманды с константами13111003аСОРAddrРис. 4. Форматы команд

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

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

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

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

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

 

Таблица 1

ОбозначениеТип выводаТип буфераРежимПорт АRA0/AN0 - RA3/AN3I/OTTLПорт ввода / вывода // Аналоговый вход каналаRA4/T0CKII/OSTЛиния порта ввода / вывода с открытым стоком // Вход частоты для таймера / счетчика TMR0.RA5/AN4 //SSI/OTTLПорт ввода / вывода // Аналоговый вход канала 4 // В режиме последовательного интерфейса SPI - сигнал выборка slaveПорт BRB0/INTI/OTTL/STПорт ввода / вывода // Внешний вход прерыванияRB1-RB3I/OTTLПорт ввода / выводаRB4, RB5I/OTTLПорт ввода / вывода. Прерывание при изменении значения на выводеRB6, RB7I/OTTL/STПорт ввода / вывода. ?/p>