Составление и описание схемы электрической структурной разрабатываемого МК

Содержание:

Введение 3

1. Общая часть 3

.1 Назначение и область применения МК 3

.2 Постановка задачи для проектирования 4

. Специальная часть 4

.1 Выбор и описание способов адресации 4

.2 Разработка программы в соответствии с заданием 5

.3 Составление и описание схемы электрической структурной разрабатываемого МК 9

. Заключение 12

. Список литературы 12

Введение.

С появлением однокристальных микро-ЭВМ связывают начало эры массового применения компьютерной автоматизации в области управления. Это обстоятельство и определило термин «контроллер».

В связи с большим импортом техники, в том числе вычислительной, термин «микроконтроллер» вытеснил из употребления ранее использовавшийся термин «однокристальная микро-ЭВМ». Первый патент на однокристальную микро-ЭВМ был выдан в 1971 году инженерам М. Кочрену и Г. Буну, сотрудникам американской Texas Instruments. Именно они предложили на одном кристалле разместить не только процессор, но и память с устройствами ввода-вывода.

В 1976 году американская фирма Intel выпускает микроконтроллер i8048. Через 4 года, в 1980 году, Intel выпускает следующий микроконтроллер: i8051. Удачный набор периферийных устройств, возможность гибкого выбора внешней или внутренней программной памяти и приемлемая цена обеспечили этому микроконтроллеру успех на рынке. С точки зрения технологии микроконтроллер i8051 являлся для своего времени очень сложным изделием —в кристалле было использовано 128 тыс. транзисторов, что в 4 раза превышало количество транзисторов в 16-разрядном микропроцессоре i8086.

На сегодняшний день существует более 200 модификаций микроконтроллеров, совместимых с i8051, выпускаемых двумя десятками компаний, и большое количество микроконтроллеров других типов. Популярностью у разработчиков пользуются 8-битные микроконтроллеры PIC фирмы Microchip Technology и AVR фирмы Atmel, 16-битные MSP430 фирмы TI, а также 32-битные микроконтроллеры, архитектуры ARM.

В СССР также велись разработки оригинальных микроконтроллеров, осваивался выпуск клонов наиболее удачных зарубежных образцов. В 1979 году в СССР в НИИ ТТ разработали однокристальную 16-разрядную ЭВМ К1801ВЕ1, микроархитектура которой называлась «Электроника НЦ».

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

1. Общая часть.

.1. Назначение и применение микроконтроллеров.

Микроконтроллер –это интегральная микросхема, предназначенная для управления электронными схемами. По сути это однокристальный микрокомпьютер для выполнения определённой задачи.

Он состоит из трёх основных групп:

1) Ядро - выполняет определённую задачу. В его состав входит:

Тактовый генератор.

Логика сброса.

Центральный процессор (CPU).

Арифметико-логическое устройство (АЛУ).

Организация памяти (память ОЗУ, память ПЗУ, и память EEPROM).

Прерывания.

Система команд.

2) Периферийные модули - позволяющие организовать интерфейс связи с внешней схемой и выполнять отчёт временных интервалов.

Основные из них:

Модули таймеров –счётчиков.

Модуль АЦП.

Модуль управления интерфейсами передачи данных (I2C, SPI, USART).

- 3 -

3) Специальные особенности –это уникальные особенности, позволяющие придать конечному изделию, построенному на микроконтроллере, следующие свойства:

Уменьшить стоимость изделия.

Увеличить надёжность изделия.

Предоставить дополнительную гибкость разработчику при проектировании изделия.

К специальным особенностям относятся:

Биты конфигурации.

Интегрированная схема сброса по включению напряжения питания.

Интегрированная схема сброса по снижению напряжения питания.

Сторожевой таймер.

Режим энергосбережения.

Интегрированный тактовый RC генератор.

Внутрисхемное программирование.

1.2. Постановка задачи для проектирования.

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

2. Специальная часть.

2.1. Выбор и описание способа адресации.

У микроконтроллера существует три вида адресации регистров ОЗУ.

Непосредственная адресация –Байт данных (операнд команды) из машинной команды загружается в регистр аккумулятор.

Прямая адресация – Адрес регистра ОЗУ, хранящий данные для выполнения операции, указан в машинной команде, а его два старших бита указаны в регистре STATUS АЛУ.

Объединение 7миразрядного адреса из машинного команды и двух старших бит формирует 9тиразрядный адрес.

Косвенная адресация –Адрес регистра ОЗУ, хранящий данные для выполнения операции, заносится в специализированный регистр адреса, а его один старший бит в регистр STATUS АЛУ. Объединение 8миразрядного числа и старшего бита формирует 9тиразрядный адрес. Затем с данными выполняется требуемая операция через специализированный регистр данных.

В соответствии с техническим заданием для реализации поставленной задачи выбран косвенный способ адресации данных.

- 4 -

2.2. Разработка программы в соответствии с заданием.

list p=16F84A ; Тип используемого микроконтроллера.

; Подключаемый файл с описанием основных регистров микроконтроллера.

include “p16f84a.inc” ;

; Настройка слова конфигурации микроконтроллера.

2007 __config _CP_OFF&_WDT_OFF&_PWRTE_ON&_RC_OSC ;11 1111 1111 0011

one equ Ch ; 0000 1100 Ячейка РОН для первого числа.

temp equ Dh ; 0000 1101 Ячейка РОН для временного сохранения.

0000 org 0000h ; Вектор сброса.

0001 goto init ; 10 1000 0000 0101 Переход на цикл инициализации.

org 0005h ; Вектор начала инициализации.

init ; Цикл инициализации.

0005 bcf status,irp ; 01 0011 1000 0011 Сброс бита косвенной адресации.

0006 clrf porta ; 00 0001 1000 0101 Очистка входной защёлки PORT А.

0007 clrf portb ; 00 0001 1000 0110 Очистка входной защёлки PORT В.

0008 bsf status,rp0 ; 01 0110 1000 0011 Переход к старшему банку регистров.

0009 movlw b’’ ; 11 0000 1111 1111 Настройка состояния портов.

000A movwf trisa ; 00 0000 1000 0101 Записать его в регистр управления TRIS А.

000B movwf trisb ; 00 0000 1000 0110 Записать его в регистр управления TRIS В.

000C movlw b’’ ; 11 0000 1000 0000 Настройка TMR0 и PullUp –резисторов.

000D movwf option_reg ; 00 0000 1000 0001 Записать его в регистр управления TMR0.

000E bcf status,rp0 ; 01 0010 1000 0011 Переход к младшему банку регистров.

000F movlw 3Ch ; 11 0000 0011 1100 Задать уменьшаемое в аккумуляторе.

0010 movwf one ; 00 0000 1010 1100 Занести его в РОН.

0011 movlw Ch ; 11 0000 0010 1100 Задать вычитаемое в аккумуляторе.

0012 movwf temp ; 00 0000 1000 1101 Сохранить вычитаемое во временной ячейке РОН.

0013 movlw Ch ; 11 0000 0000 1100 Задать адрес для косвенной адресации.

0014 movwf fsr ; 00 0000 1000 0100 Записать этот адрес в регистр адреса.

0015 movf temp,w ; 00 1000 0000 1101 Восстановить вычитаемое из временной ячейки.

0016 subwf indf,f ; 00 0010 1000 0000 Произвести вычитание с сохранением результата.

0017 btfss status,z ; 01 1101 0000 0011 Если результат не ноль,

0018 goto next ; 10 1000 0001 1001 то перейти на фрагмент next.

0019 incf indf,f ; 00 1010 1000 0000 Иначе нарасти результат на единицу.

001A goto quit ; 10 1000 0001 1100 И перейти на завершение программы.

next ; Фрагмент, если результат не ноль.

001B movf indf,w ; 00 1000 0000 0000 Занести результат в аккумулятор.

quit ; Фрагмент завершения программы.

001C sleep ; 00 0000 0110 0011 Остановка ЦПУ, переводя его в спящий режим.

end ; Указание на конец программы.

- 5 -

Для реализации поставленной задачи в схеме применены семь команд:

1) MOVLW переслать W в f.

Код: 11 00xx kkkk kkkk

Синтаксис: [label] MOVLW k

Операнды: 0 k 255

Операция: k (W)

На флаги состояния не воздействует.

Описание: пересылает 8мибитную константу k из кода команды в рабочий регистр W.

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

Циклы: 1

Пример: MOVLW 05Ah после выполнения W=5Ah

2) MOVWF переслать константу W в регистр f.

Код: 00 0000 1fff ffff

Синтаксис: [label[ MOVWF f

Операнды: 0 f 127

Операция: (W) (f)

На флаги состояния не воздействует.

Описание: пересылает содержимое рабочего регистра W в регистр f

Циклы выполнения: 1

Пример: MOVWF OPTION_REG

До выполнения: OPTION_REG = 0FFh

W = 4Fh

После выполнения: OPTION_REG = 4Fh

W = 4Fh

3) MOVF переслать f.

Код: 00 1000 dfff ffff

Синтаксис: [label] MOVF f,d

Операнды: 0 f 127 при d [0,1]

Операция: (f) (dest)

Состояние флагов АЛУ: Z

Описание: Содержимое регистра f пересылается в регистр адресата. Если d = 0, значение сохраняется в регистре W. Если d = 1, значение сохраняется в регистре f, используется для проверки содержимого регистра на ноль.

Циклы выполнения команды: 1

Пример: MOVF FSR,0

До выполнения команды: W = 00h

FSR = 0C2h

После выполнения команды: W = 0C2h

FSR = 0C2h

Z = 0

- 6 -

4) SUBWF вычесть W из f.

Код: 00 0010 dfff ffff

Синтаксис: [label] SUBWF f,d

Операнды: 0 f 127 при d [0,1]

Операция: (f) –(W) (dest)

Состояние флагов АЛУ: C, DC, Z

Описание: Вычитает содержимое регистра W из регистра f. Если d = 0, значение сохраняется в регистре W. Если d = 1, значение сохраняется в регистре f.

Циклы выполнения команды: 1

Пример: SUBWF REG1,1

До выполнения команды: REG1 = 03h

W = 02h

C = x

Z = x

После выполнения команды: REG1 = 01h

W = 02h

C = 1 ; результат положительный

Z = 0

) BTFSS проверить бит b в регистре f, пропустить если 1.

Код: 01 11bb bfff ffff

Синтаксис: [label] BTFSS f,b

Операнды: 0 f 127 при 0 b 7

Операция: пропустить если (f<b>) = 1

Состояние флагов АЛУ: не влияет

Описание: Если бит b в регистре f равен 0, то исполняется следующая инструкция. Если бит b в регистре f равен = 1, то следующая инструкция не выполняется, команда выполняется за два цикла. Во втором цикле выполняется NOP.

Циклы выполнения команды: 1(2)

Пример: HERE BTFSS FLAG,4

FALSE GOTO PROCESS_CODE

TRUE

Случай 1: До выполнения команды: PC = адрес HERE

FLAG xxx0 xxxx

После выполнения команды: Т. к. FLAG <4> = 0

PC = адрес FALSE

Случай 2: До выполнения команды: PC = адрес HERE

FLAG xxx1 xxxx

После выполнения команды: Т. к. FLAG <4> = 1

PC = адрес TRUE

) INCF прибавить 1 к f.

Код: 00 1010 dfff ffff

Синтаксис: [label] INCF f,d

Операнды: 0 f 127 при d [0,1]

Операция: (f) + 1 (dest)

Состояние флагов АЛУ: Z

Описание: Инкрементировать содержимое регистра f. Если d = 0, значение сохраняется в регистре W. Если d = 1, значение сохраняется в регистре f.

Циклы выполнения команды: 1

Пример: INCF CNT,1

До выполнения команды: CNT = 0FFh

Z = 0

После выполнения команды: CNT = 00h

Z = 1

- 7 -

7) GOTO безусловный переход.

Код: 10 1kkk kkkk kkkk

Синтаксис: [label] GOTO k

Операнды: 0 k 2047

Операция: k PC <10:0>, а PCLATH <4:3> PC <12:11>

Состояние флагов АЛУ: не влияет

Описание: Выполнить безусловный переход. Одиннадцать бит адреса загружаются из кода команды в счётчик команд PC<10:0>, а два старших бита загружаются в счётчик команд PC<12:11> из регистра PCLATH. Команда выполняется за два цикла.

Циклы выполнения команды: 2

Пример: GOTO THERE

После выполнения команды: PC = адрес THERE

- 8 -

2.3. Описание схемы электрической, структурной разрабатываемого микроконтроллера.

Схема состоит из 13 узлов.

Счётчик команд –это тринадцатиразрядный регистр, способный адресовать до 8К памяти программ, он содержит адрес выполняемой команды. Он состоит из пятиразрядного регистра PCH и восьмиразрядного регистра PCL. Регистр PCL доступен для чтения и записи через адрес 02h памяти данных. Регистр PCH недоступен для непосредственной записи и обращение к нему осуществляется через буферный регистр PCLATH с адресом 0Ah памяти данных.

Память программ –это четырнадцатиразрядное постоянное запоминающее устройство для хранения выполняемых инструкций. В ней есть два выделенных адреса. Адрес 0000h, называемый вектор сброса, ячейка памяти с которой ЦПУ начинает выполнять основную программу. Адрес 0004h, называемый вектор прерывания, ячейка памяти с которой располагается подпрограмма обработки прерывания.

Регистр команд - это четырнадцатиразрядный регистр в который заносится исполняемая команда.

Дешифратор команд и логика управления - расшифровывает команду в регистре команд, выделяя код операции и формирует сигналы для управления работой АЛУ и всех узлов.

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

Тактовый генератор –это устройство которое формирует стабилизированные импульсы синхронизации для управления всеми устройствами и выполнения операций.

Память данных –это восьмиразрядное оперативное запоминающее устройство для временного хранения обрабатываемых данных.

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

Мультиплексор данных –это коммутационное устройство, обеспечивающее загрузку восьмиразрядного числа в АЛУ из машинной команды или из памяти данных.

Регистр STATUS –это регистр памяти данных, в котором содержатся признаки результата, выполнившейся в АЛУ, команде, флаги причины сброса микроконтроллера и биты выбора банков памяти данных. Имеет адреса 03h 83h в памяти данных.

Бит 7: IRP: Бит выбора банка данных при косвенной адресации

Биты 6-5: RP1:RP0: Биты выбора банка данных при прямой адресации

Бит 4: TO: Флаг-бит переполнения сторожевого таймера

Бит 3: PD: Флаг-бит включения питания

Бит 2: Z: Флаг-бит нулевого результат

Бит 1: DC: Флаг-бит десятичного переноса/заёма (команды ADDWF, ADDLW, SUBWF, SUBLW)

Бит 0: С: Флаг бит переноса/заёма (команды ADDWF, ADDLW, SUBWF, SUBLW)

Регистр FSR –это регистр памяти данных, содержащий адрес ячейки памяти данных к которой требуется обратиться косвенным способом адресации при выполнении операции.

Блок Арифметико - Логическое Устройство –это восьмиразрядное устройство, выполняющее арифметические и логические операции над данными, находящимися в рабочем регистре и в регистре памяти данных. АЛУ состоит из двух регистров, содержащих данные для обработки, сумматора и блока формирования признаков результата.

Аккумулятор –это восьмиразрядный рабочий регистр W в который загружаются данные для обработки в АЛУ и может быть помещён результат вычисления.

- 9 -

Все команды, выполняемые микроконтроллером, находятся в памяти программ. По значению 13тиразрядного счётчика команд PC <12:0> происходит выборка команды из адресованной ячейки памяти программ и параллейная загрузка в регистр команд. Счётчик команд выполняет приращение на единицу в такте Q4 каждой машинной команды. Каждая машинная команда выполняется за четыре такта. Все команды выполняются за один машинный цикл, кроме команд условия, в которых получен истинный результат и инструкций изменяющих значение счётчика команд.

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

Команда MOVLW - на схеме показана оранжевым цветом. В такте Q1 код команды 11 0000 из регистра команд поступает на дешифратор команд и по коду 11 третий канал мультиплексора данных подключается к регистру команд. В такте Q2 восьмиразрядная константа из регистра команд поступает на мультиплексор данных и с него на регистр В. В такте Q3 константа из регистра В поступает на АЛУ где, по коду 0000 с логики управления с ним выполняется операция логического умножения с константой 0FFh. В такте Q4 результат передается на регистр W и защёлкивается в нём по сигналу синхронизации с логики управления.

Команда MOVWF – на схеме показана зелёным цветом. В такте Q1 код команды 00 0000 1 из регистра команд поступает на дешифратор команд и по коду 00 младший канал мультиплексора адреса подключается к регистру команд. Из него семиразрядный адрес операнда поступает на мультиплексор адреса одновременно с двумя старшими битами из регистра STATUS и мультиплексор адреса формирует 9тиразрядный адрес ячейки памяти данных. В такте Q2 8миразрядная константа из адресованной ячейки памяти данных передаётся на мультиплексор данных который закрыт, согласно коду 0000, а значение регистра W передаётся на регистр А. В такте Q3 8миразрядная константа из регистра А поступает на АЛУ где с ним выполняется операция логического умножения с константой 0FFh. В такте Q4, согласно биту направления = 1, результат передаётся в адресованную ячейку памяти данных и защёлкивается там по сигналу синхронизации с логики управления.

Команда SUBWF – на схеме показана красным цветом. В такте Q1 код команды 00 0010 d из регистра команд поступает на дешифратор команд и по коду 00 младший канал мультиплексора адреса подключается к регистру команд. Из него семиразрядный адрес операнда 000 0000 поступает на мультиплексор адреса. Одновременно из регистра FSR поступает 8миразрядный адрес операнда вместе со старшим битом из регистра STATUS и мультиплексор адреса формирует 9тиразрядный адрес ячейки памяти данных косвенным способом. В такте Q2 8миразрядная константа из адресованной ячейки ОЗУ поступает на мультиплексор данных, а с него на регистр В, а значение регистра W поступает на регистр А. В такте Q3, по коду 0010 логики управления, значения передаются на сумматор в дополнительные кодах где затем складываются. Блок Формирования Признака Результата формирует признак нулевого результата по формуле: Если логическое произведение инверсных значений всех разрядов результата равно единице то бит Z в регистре STATUS будет равен 1. В такте Q4 результат поступает в регистр –адресат, согласно биту < d > в коде команды и защёлкивается там по сигналу синхронизации с логики управления.

Команда BTFSS –на схеме показана жёлтым цветом. В такте Q1 код команды 01 1101 0 из регистра команд поступает на дешифратор команд и по коду 01 первый канал мультиплексора адреса подключается к регистру команд. Из него семиразрядный адрес операнда поступает на мультиплексор адреса одновременно с двумя старшими битами из регистра STATUS и мультиплексор адреса формирует 9тиразрядный адрес ячейки памяти данных. В такте Q2 8миразрядная константа из адресованной ячейки поступает на мультиплексор данных, который пропускает её на регистр В. В такте Q3, происходит анализ бита, номер которого указан в коде команды. В такте Q4 если бит равен нулю то счётчик команд увеличивается один раз, а если равен единице то счётчик команд увеличивается два раза.

- 10 -

Команда INCF – на схеме показана синим цветом. В такте Q1 код команды 00 1010 d из регистра команд поступает на дешифратор команд и по коду 00 младший канал мультиплексора адреса подключается к регистру команд. Из него семиразрядный адрес операнда поступает на мультиплексор адреса одновременно с двумя старшими битами из регистра STATUS и мультиплексор адреса формирует 9тиразрядный адрес ячейки памяти данных. В такте Q2 из адресованной ячейки памяти данных 8миразрядная константа поступает на мультиплексор данных, а из него на регистр В. В такте Q3 значение регистра В поступает на сумматор и по коду 1010 с логики управления увеличивается на единицу. В такте Q4 результат поступает в регистр –адресат, согласно биту < d > в коде команды и защёлкивается там по сигналу синхронизации с логики управления.

Команда MOVF – на схеме показана тёмно –зелёным цветом. В такте Q1 код команды 00 1000 d из регистра команд поступает на дешифратор команд и по коду 00 младший канал мультиплексора адреса подключается к регистру команд. Из него семиразрядный адрес операнда поступает на мультиплексор адреса одновременно с двумя старшими битами из регистра STATUS и мультиплексор адреса формирует 9тиразрядный адрес ячейки памяти данных. В такте Q2 из адресованной ячейки памяти данных 8миразрядная константа поступает на мультиплексор данных, а из него на регистр В. В такте Q3 8миразрядная константа из регистра А поступает на АЛУ где с ним выполняется операция логического умножения с константой 0FFh. В такте Q4 результат поступает в регистр –адресат, согласно биту < d > в коде команды и защёлкивается там по сигналу синхронизации с логики управления.

Команда GOTO – на схеме показана коричневым цветом. В такте Q1 код команды 10 1 из регистра команд поступает на дешифратор команд и выбирается счётчик команд. В такте Q2 11тиразрядный адрес из регистра команд поступает на счётчик команд. В такте Q3 в счётчик команд загружается новая константа. В такте Q4 происходит выборка адресованной ячейки.

- 11 -

3. Заключение.

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

В процессе выполнения курсовой работы были разработаны и описаны:

- Программа для работы микроконтроллера PIC16F8xA.

- Схема электрическая структурная микроконтроллера PIC16F8xA.

Применение микроконтроллеров в технике очень актуально. Так как они существенно ускоряют работу поставленной задачи. Отсюда и важность их изучения и применения в устройствах.

4. Список литературы.

Валерий Станиславович Яценков Микроконтроллеры Microchip. Практическое руководство.

Майкл Предко Справочник по PIC –микроконтроллерам.

Техническое описание микроконтроллера PICMICRO среднего семейства.

- 12 -

Графическая часть проекта.

Лист 1. Схема электрическая, структурная микроконтроллера.

Составление и описание схемы электрической структурной разрабатываемого МК