Составление и описание схемы электрической структурной разрабатываемого микроконтроллера
Содержание
Введение
. Общая часть
.1 Назначение и область применения
МК
.2 Постановка задачи для
проектирования
. Специальная часть
.1 Выбор и описание способов
адресации
.2 Разработка программы в
соответствии с заданием
.3 Составление и описание схемы электрической
структурной разрабатываемого МК
Заключение
Список литературы
микроконтроллер элекронный
интегральный адресация
Введение
С появлением однокристальных микро-ЭВМ связывают
начало эры массового применения компьютерной автоматизации в области управления.
Это обстоятельство и определило термин "контроллер".
В связи с большим импортом техники, в том числе
вычислительной, термин "микроконтроллер" вытеснил из употребления
ранее использовавшийся термин "однокристальная микро-ЭВМ". Первый
патент на однокристальную микро-ЭВМ был выдан в 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).
Прерывания.
Система команд.
) Периферийные модули - позволяющие организовать
интерфейс связи с внешней схемой и выполнять отчёт временных интервалов.
Основные из них:
Модули таймеров - счётчиков.
Модуль АЦП.
Модуль управления интерфейсами передачи данных
(I2C, SPI, USART).
) Специальные особенности - это уникальные
особенности, позволяющие придать конечному изделию, построенному на
микроконтроллере, следующие свойства:
Уменьшить стоимость изделия.
Увеличить надёжность изделия.
Предоставить дополнительную гибкость
разработчику при проектировании изделия.
К специальным особенностям относятся:
Биты конфигурации.
Интегрированная схема сброса по включению
напряжения питания.
Интегрированная схема сброса по снижению
напряжения питания.
Сторожевой таймер.
Режим энергосбережения.
Интегрированный тактовый RC генератор.
Внутрисхемное программирование.
1.2 Постановка задачи для проектирования
В результате курсового проектирования необходимо
разработать узел микроконтроллера, который должен реализовать операцию
вычитания двух чисел на базе микроконтроллера PIC16F8х. Одно число находится в
регистре общего назначения, а другое в аккумуляторе. Если результат равен нулю
то нарасти содержимое на единицу, а если не равен нулю то записать его в
аккумулятор.
2. Специальная часть
2.1 Выбор и описание способа адресации
У микроконтроллера существует три вида адресации
регистров ОЗУ.
Непосредственная адресация - Байт данных
(операнд команды) из машинной команды загружается в регистр аккумулятор.
Прямая адресация - Адрес регистра ОЗУ, хранящий
данные для выполнения операции, указан в машинной команде, а его два старших
бита указаны в регистре STATUS
АЛУ.
Объединение 7миразрядного адреса из машинного
команды и двух старших бит формирует 9тиразрядный адрес.
Косвенная адресация - Адрес регистра ОЗУ,
хранящий данные для выполнения операции, заносится в специализированный регистр
адреса, а его один старший бит в регистр STATUS АЛУ. Объединение 8миразрядного
числа и старшего бита формирует 9тиразрядный адрес. Затем с данными выполняется
требуемая операция через специализированный регистр данных.
В соответствии с техническим заданием для
реализации поставленной задачи выбран косвенный способ адресации данных.
.2 Разработка программы в соответствии с
заданием
list
p=16F84A;
Тип используемого микроконтроллера.
; Подключаемый файл с описанием основных
регистров микроконтроллера.
include
"p16f84a.inc";
; Настройка слова конфигурации микроконтроллера.
2007__config_CP_OFF&_WDT_OFF&_PWRTE_ON&_RC_OSC;11
1111 1111 00110Ch;
0000 1100 Ячейка РОН для первого числа.
tempequ0Dh;
0000 1101 Ячейка РОН для временного сохранения.
org0000h;
Вектор сброса.
gotoinit;
10 1000 0000 0101 Переход на цикл инициализации.
org0005h;
Вектор начала инициализации.
init; Цикл
инициализации.
bcfstatus,irp;
01 0011 1000 0011 Сброс бита косвенной адресации.
clrfportb;
00 0001 1000 0110 Очистка входной защёлки PORT
В.
bsfstatus,rp0;
01 0110 1000 0011 Переход к старшему банку регистров.
movlwb’11111111’;
11 0000 1111 1111 Настройка состояния портов.
Amovwftrisa;
00 0000 1000 0101 Записать его в регистр управления TRIS
А.
Bmovwftrisb;
00 0000 1000 0110 Записать его в регистр управления TRIS
В.
Cmovlwb’10000000’;
11 0000 1000 0000 Настройка TMR0 и PullUp - резисторов.
Dmovwfoption_reg;
00 0000 1000 0001 Записать его в регистр управления TMR0.
Ebcfstatus,rp0;
01 0010 1000 0011 Переход к младшему банку регистров.
Fmovlw3Ch;
11 0000 0011 1100 Задать уменьшаемое в аккумуляторе.
movwfone;
00 0000 1010 1100 Занести его в РОН.
movlw2Ch;
11 0000 0010 1100 Задать вычитаемое в аккумуляторе.
movwftemp;
00 0000 1000 1101 Сохранить вычитаемое во временной ячейке РОН.
movlw0Ch;
11 0000 0000 1100 Задать адрес для косвенной адресации.
movwffsr;
00 0000 1000 0100 Записать этот адрес в регистр адреса.
movftemp,w
; 00 1000 0000 1101 Восстановить вычитаемое из временной ячейки.
subwfindf,f;
00 0010 1000 0000 Произвести вычитание с сохранением результата.
btfssstatus,z
; 01 1101 0000 0011 Если результат не ноль,
gotonext;
10 1000 0001 1001 то перейти на фрагмент next.
incfindf,f;
00 1010 1000 0000 Иначе нарасти результат на единицу.
Agotoquit;
10 1000 0001 1100 И перейти на завершение программы.
next; Фрагмент,
если результат не ноль.
Bmovfindf,w;
00 1000 0000 0000 Занести результат в аккумулятор.
quit; Фрагмент
завершения программы.
Csleep; 00 0000
0110 0011 Остановка ЦПУ, переводя его в спящий режим.
end; Указание
на конец программы.
Для реализации поставленной задачи в схеме
применены семь команд:
) MOVLW переслать W в f.
Код: 11 00xx
kkkk kkkk
Синтаксис: [label]
MOVLW k
Операнды: 0 ≤ k ≤ 255
Операция: k
→
(W)
На флаги состояния не воздействует.
Описание: пересылает 8мибитную константу k из
кода команды в рабочий регистр W.
В неиспользуемых битах, в коде команды,
устанавливается логический ноль.
Циклы: 1
Пример: MOVLW
05Ah после выполнения
W=5Ah
) 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
) 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
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.
Пример: 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)
Пример: 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
) 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
.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)
Блок Арифметико - Логическое Устройство - это
восьмиразрядное устройство, выполняющее арифметические и логические операции
над данными, находящимися в рабочем регистре и в регистре памяти данных. АЛУ
состоит из двух регистров, содержащих данные для обработки, сумматора и блока
формирования признаков результата.
Аккумулятор - это восьмиразрядный рабочий
регистр W в который загружаются данные для обработки в АЛУ и может быть помещён
результат вычисления.
Все команды, выполняемые микроконтроллером,
находятся в памяти программ. По значению 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 если бит равен нулю то счётчик команд
увеличивается один раз, а если равен единице то счётчик команд увеличивается
два раза.- на схеме показана синим цветом. В такте 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 происходит выборка адресованной ячейки.
Заключение
Трудно представить сферу современной
деятельности человека, где не использовались бы данные устройства. Телефоны,
телевизоры, жидкокристаллические мониторы, кондиционеры, холодильники,
микроволновые печи, новогодние гирлянды, компьютеры и многое другое не могут
работать без микроконтроллеров. Микроконтроллеры намного лучше своих
предшественников: ламп и полупроводников. Они намного меньших размеров и
обладают большей производительностью.
В процессе выполнения курсовой работы были
разработаны и описаны:
Программа для работы микроконтроллера PIC16F8xA.
Схема электрическая структурная микроконтроллера
PIC16F8xA.
Применение микроконтроллеров в технике очень
актуально. Так как они существенно ускоряют работу поставленной задачи. Отсюда
и важность их изучения и применения в устройствах.
Список литературы
Валерий Станиславович Яценков
Микроконтроллеры Microchip.
Практическое руководство.
Майкл Предко Справочник по PIC -
микроконтроллерам.
Техническое описание
микроконтроллера PICMICRO
среднего семейства.
Графическая часть проекта
Лист 1. Схема электрическая, структурная
микроконтроллера.