Open Library - открытая библиотека учебной информации

Открытая библиотека для школьников и студентов. Лекции, конспекты и учебные материалы по всем научным направлениям.

Категории

Высокие технологии Лекция 10. Структура микроконтроллера, 2-10 система
просмотров - 200

Цель лекции: применение операций сдвига, перевод чисел в двоично-десятичную систему. Рассмотрение структуры микроконтроллера.

10.1 применение операций сдвига

Одним из использований операций сдвига является побитовая проверка данных. Предположим, что состояние 8 кнопок мобильного телœефона сохранено в регистре данных h'20'. Были считаны следующие состояния:

Кнопка К7 К6 К5 К4 К3 К2 К1 К0
Состояние

Требуется определить самую левую разомкнутую кнопку, при этом считаем, что разомкнутой кнопке соответствует 1, замкнутой — 0. Рабочий регистр W в программе используется в качестве счетчика. Поскольку флаг переноса сбрасывается перед каждым сдвигом, вдвигается всœегда логический 0. В какой-то момент остаток становится равным нулю, и процесс завершается. Циклический сдвиг регистра на один бит вправо показан на рисунке 10.1.

   

Рисунок 10.1. Циклический сдвиг регистра на один бит вправо

Последовательность сдвигов: 00101111 (0)®00010111 (1) ® 00001011 (2) ® 00000101 (3) ® 00000010 (4) ® 00000001 (5) ® 00000000 (6). Всё на шестом шаге регистр равен нулю, следовательно, шестая кнопка К5 разомкнута.

Блок-схема алгоритма показана на рисунке 10.2. При сдвиге вправо во флаг переноса выдвигается самый правый (младший) бит. Мы смо­жем определить позицию самого правого бита͵ заменив команду BTFSC STATUS, Z командой BTFSC STATUS, С.

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

10.2 Цифровой индикатор

В качестве следующего примера напишем подпрограмму, результатом работы которой будет однобайтное значение, определяющее цифру на индикаторе. Эта подпрограмма используется совместно с цифровым индикатором. Большинство таких индикаторов работают по прин­ципу выборочного включения требуемых сегментов, как показано на рисунке 10.3. Обычно эти сегменты представляют собой светодиоды или электроды элемента на жидких кристаллах.

Рисунок 10.3 – Семи - сегментный индикатор

Входным сигналом в данном случае является 4-битный двоичный код, находя­щийся в рабочем регистре. Этот код представляет собой десять десятичных цифр в виде b’0000’…b’1001’. Выходным значением, также возвращаемым в W, является соответствующий 7-сегментный код, необходимый для отображения соответству­ющей цифры. Причем предполагается, что включение сегмента происходит при подаче на него 1, а выключение — соответственно при подаче 0. При крайне важности можно реализовать и обратную полярность.

Преобра­зования реализуются в виде наборов команд Retlw, каждая из которых возвращает однобайтную константу. Каждая команда retlw помещает в рабочий регистр W 8-битное значение, неиспользу­емый 7-й бит сброшен в 0.

При использовании таблиц извлечение n-го элемента таблицы заклю­чается в выполнении N-ой команды. При этом константа͵ находящаяся в коде команды, будет помещена в рабочий регистр, после чего произойдет нормальный возврат в вызывающую программу. В случае если К=6, то исполнится 6-я командаRetlw, возвращающая в W код b'011I1000' для символа 6.

Подпрограмма, код которой приведен ниже, осуществляет выбор­ку элемента таблицы, прибавляя число N, передаваемое через рабочий регистр, к младшему байту счетчика команд (регистр PCL, расположенный по адресу h'02'). Поскольку PC уже указывает на 1-ю командуRetlw, то после прибавления N он будет указывать на N-ю команду, что нам и требуется.

Подпрограмма дешифратора семи - сегментного индикатора.

VYBOR_SEG

addwf PCL, f; прибавим W к PCL, получая PCL + W.

retlw b'00111111'; код для цифры 0. Возвращается при W=0.

retlw b'00000110'; код для цифры 1. Возвращается при W=1.

retlw b'10101101'; код для цифры 2. Возвращается при W=2.

retlw b'01001111'; код для цифры 3. Возвращается при W=3.

retlw b'01100110'; код для цифры 4. Возвращается при W=4.

retlw b'01101101'; код для цифры 5. Возвращается при W=5.

retlw b'01111101'; код для цифры 6. Возвращается при W=6.

retlw b'00000111'; код для цифры 7. Возвращается при W=7.

retlw b'01111111'; код для цифры 8. Возвращается при W=8.

retlw b'01101111'; код для цифры 9. Возвращается при W= 9.

В программе не учитывается возможность того, что входное значение в может быть больше h’09’.

10.3 Структурная схема МК

Из рисунка 10.4 видно, что микроконтроллер может управлять различными устройствами и принимать от них данные при ми­нимуме дополнительных устройств, так как большое число пе­риферийных схем уже имеется непосредственно на кристалле микроконтроллера. Это позволяет уменьшить размеры конст­рукции и снизить потребление энергии от источника питания.

Рассмотрим типичные элементы микроконтроллеров.

1. Последовательный порт. Он позволяет обмениваться данными с внешними устройствами при малом количестве проводов.

2. Цифровые линии ввода/вывода.

3. Аналоговый порт.

4. Центральное процессорное устройство (ЦПУ) это мозг микроконтроллера. Оно принимает из памяти программ коды команд, декодирует их и выполняет. ЦПУ состоит из регистров, арифметически- логического устройства (АЛУ) и цепей управ­ления.

Рисунок 10.4 - Структура микроконтроллера

5. Сторожевой таймер. Это специальный таймер, предна­значенный для предотвращения сбоев программы. Он работает следующим образом: после включения питания начинает отсчет заданного временного интервала. В случае если программа не перезапус­тит его до истечения этого интервала времени, сторожевой тай­мер перезапустит микроконтроллер. Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, программа должна давать сторожевому таймеру сигнал - всœе в порядке. Ес­ли она этого не сделала, значит, по какой-либо причинœе произо­шел сбой.

6. Аналого-цифровой преобразователь. В моделях старшего класса есть и цифро-аналоговый преобразователь.

7. Тактовый генератор. Этот генератор определяет ско­рость работы микроконтроллера и синхронизирует работу всœех устройств.

8. Память программ. ОЗУ. Здесь хранятся переменные, стек и коды команд, формирующих программу для микрокон­троллера.

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