47
СанктПетербург 2007 ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Государственное образовательное учреждение высшего профессионального образования САНКТПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ ПРИМЕНЕНИЕ МИКРОКОНТРОЛЛЕРОВ В СИСТЕМАХ УПРАВЛЕНИЯ И КОНТРОЛЯ Методические указания к выполнению лабораторных работ

Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

Embed Size (px)

Citation preview

Page 1: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

Санкт�Петербург2007

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждениевысшего профессионального образования

САНКТ�ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТАЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ

ПРИМЕНЕНИЕ МИКРОКОНТРОЛЛЕРОВВ СИСТЕМАХ УПРАВЛЕНИЯ И КОНТРОЛЯ

Методические указанияк выполнению лабораторных работ

Page 2: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

2

Сдано в набор 02.02.07. Подписано в печать 13.03.07. Формат 60 × 84 1/16.Бумага офсетная. Печать офсетная. Усл. печ. л. 3,0. Уч.�изд. л. 3,0.

Тираж 150 экз. Заказ №

Редакционно�издательский центр ГУАП190000, Санкт�Петербург, Б. Морская ул., 67

© ГУАП, 2007

Редактор А. Г. ЛарионоваВерстальщик С. В. Барашкова

Составители: кандидат технических наук, доцент Н. М. Иванов;кандидат технических наук, доцент В. М. ПрохоровРецензент кандидат технических наук, доцент Г. С. Бритов

Методические указания предназначены для выполнения лабораторныхработ по дисциплине «Проектирование центральных и периферийных уст�ройств» студентами дневного отделения специальности 220500 «Проекти�рование и технология электронно�вычислительных средств» и других смеж�ных специальностей.

Подготовлены кафедрой вычислительных систем и сетей и рекомендо�ваны к изданию редакционно�издательским советом Санкт�Петербургскогогосударственного университета аэрокосмического приборостроения.

Page 3: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

3

Лабораторная работа № 1

СИСТЕМА КОМАНД МИКРОКОНТРОЛЛЕРА PIC16С7Х

Цель работы: изучение системы команд микроконтроллера (МК)PIC16С7Х; получение навыков программирования МК на языке Ас�семблер.

Краткие теоретические сведения и методические указания

PIC16CXX – это 8�разрядные МК с RISC�архитектурой, произво�димые фирмой Microchiр Technology. Это семейство МК отличаетсянизкой ценой, низким энергопотреблением и высокой скоростью.Микроконтроллеры имеют встроенное ЭППЗУ программы, ОЗУ дан�ных и выпускаются в 18 и 28 выводных корпусах.

PIC OTP – это однократно программируемые пользователем кон�троллеры, предназначенные для полностью протестированных и за�конченных изделий, в которых не будет происходить дальнейшихизменений кода. Эти контроллеры выпускаются в дешевых пласти�ковых корпусах с предварительно заданным типом внешнего генера�тора – кварцевым или RC. Для отладки программ и макетированиявыпускается вариант контроллеров с ультрафиолетовым стиранием.Эти контроллеры допускают большое число циклов записи/стира�ния и имеют очень малое время стирания (обычно 1–2 мин). Однакоцена таких контроллеров существенно выше, чем однократно про�граммируемых, поэтому их невыгодно устанавливать в серийную про�дукцию.

Для изделий, программа которых может меняться либо содержиткакие�либо переменные части, таблицы, параметры калибровки,ключи и т. д., выпускается электрически стираемый и перепрограм�мируемый контроллер PIC16F84. Он также содержит электрическиперепрограммируемое ПЗУ даных.

Основным назначением МК PIC16/17, как следует из аббревиа�туры PIC (Periрheral Interface Controller), является выполнение ин�

Page 4: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

4

терфейсных функций. Этим объясняются особенности их архитек�туры:

– RISC�система команд, характеризующаяся малым набором од�ноадресных инструкций (33, 35 или 55), каждая из которых имеетдлину в одно слово (12, 14 или 16 бит) и большинство выполняетсяза один машинный цикл. В системе команд отсутствуют сложныеарифметические команды (умножение, деление), предельно сокращеннабор условных переходов;

– высокая скорость выполнения команд: при тактовой частоте20 МГц время машинного цикла составляет 200 нс (быстродействиеравно 5 млн операций/с);

– наличие мощных драйверов (до 24 мА) на линиях портов ввода/вывода;

– низкая потребляемая мощность;– ориентация на ценовую нишу предельно низкой стоимости, оп�

ределяющая использование дешевых корпусов с малым количествомвыводов (8, 14, 18, 28), отказ от внешних шин адреса и данных (кро�ме PIC17C4X), использование упрощенного механизма прерыванийи аппаратного (программно недоступного) стека.

Анализ архитектуры МК PIC с точки зрения их программирова�ния и отладки систем позволяет сделать следующие выводы.

RISC�система команд обеспечивает высокую скорость выполненияинструкций, но вызывает затруднения и снижение производитель�ности при программировании нетривиальных алгоритмов. Посколь�ку все инструкции в системе команд являются одноадресными, заг�рузка константы в любой из регистров требует двух инструкций. Вна�чале нужно загрузить константу в рабочий регистр W, а затем пере�слать его содержимое в нужную ячейку памяти данных:

movw 12h

movwf REG

Аналогично, все бинарные арифметико�логические операции при�ходится выполнять с привлечением рабочего регистра W.

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

Микроконтроллеры семейства PIC имеют очень эффективную сис�тему команд, состоящую всего из 35 инструкций. Все инструкциивыполняются за один цикл, за исключением условных переходов и ко�манд, изменяющих программный счетчик, которые выполняются за2 цикла. Один цикл выполнения инструкции состоит из 4 периодовтактовой частоты. Таким образом, при частоте 4 МГц время выпол�

Page 5: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

5

нения инструкции составляет 1 мкс. Каждая инструкция состоит из14 бит, которые разделяются на 2 поля: код операции и операнд (воз�можна манипуляция с регистрами, ячейками памяти и непосредствен�ными данными).

Высокая скорость выполнения команд в PIC достигается за счетиспользования двухшинной гарвардской архитектуры вместо тра�диционной одношинной фоннеймановской. Гарвардская архитекту�ра основывается на наборе регистров с разделенными шинами и ад�ресным пространством для команд и для данных. Hабор регистровозначает, что все программные объекты, такие как порты ввода/вы�вода, ячейки памяти и таймер, представляют собой физически реа�лизованные аппаратные регистры.

Память данных (ОЗУ) для PIC16CXX имеет разрядность 8 бит,память программ (ЭППЗУ) имеет разрядность 12 бит для PIC16C5Xи 14 бит для PIC16C7X. Использование гарвардской архитектурыпозволяет достичь высокой скорости выполнения битовых, байто�вых и регистровых операций. Кроме того, гарвадская архитектурадопускает конвейерное выполнение инструкций, когда одновремен�но выполняется текущая инструкция и считывается следующая.В традиционной же фоннеймановской архитектуре команды и дан�ные передаются последовательно во времени через одну разделяемуюили мультиплексируемую шину, тем самым снижая быстродейст�вие МК.

Набор команд PIC

Перейдем к описанию всего набора команд МК семейства PIC. Пред�варительно cделаем некоторые замечания.

Во�первых, синтаксис написания команды предусматривает ука�зание двух полей: мнемоническое обозначение кода операции и опе�ранд, для которого используется обобщенное обозначение в виде сим�вола f. Это значит, что в зависимости от способа адресации в полеоперанда может находиться:

1) адрес операнда (прямая адресация); очень часто вместо адресауказывается символическое имя операнда, однако в этом случае с по�мощью псевдокоманды equ этому имени ставится в соответствие ад�рес свободной ячейки памяти, например: Cnt equ 20h;

2) имя регистра INDF (косвенная адресация); в этом случае адресоперанда находится в специальном регистре косвенной адресации FSR;

3) операнд (непосредственная адресация).

Page 6: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

6

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

В�третьих, в ряде команд кроме результата формируются призна�ки результата, которые записываются в специальный регистрSTATUS. Признак С (CARRY) устанавливается в 1 при возникнове�нии переноса из старшего (знакового) разряда при сложении и приотсутствии заема при вычитании. Признак DC (DIGIT CARRY) уста�навливается в 1 при возникновении переноса из младшей тетрадыв старшую при сложении. Признак Z (ZERO) устанавливается в 1,если результат операции равен 0.

Наконец, в ряде команд после символа f через запятую находитсясимвол d, называемый битом направления. Он указывает место, кудабудет помещен результат операции, выполненной в команде: еслиd = 0 (или W), результат записывается в рабочий регистр W (без из�менения содержимого ячейки памяти), если d = 1 (или f), результатзаписывается в ячейку памяти.

NOPНе выполняется никаких действий. Эта инструкция обычно ис�

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

CLRWЭта команда очищает рабочий регистр W.CLRF fCLRF делает для любого регистра то же, что CLRW делает для

рабочего регистра W.SUBWF f, dВычесть содержимое рабочего регистра W из содержимого регист�

ра f. Эта команда устанавливает признаки CARRY, DIGIT CARRYи ZERO в регистре STATUS. Символ d (бит направления) после запя�той указывает адрес, куда будет помещен результат выполнения ко�манды. Если d = 0, то результат помещается в рабочий регистр W,а если d = 1, то результат записывается в указанный в команде ре�гистр f. Допускается вместо значений 0 или 1 символа d указать wи f соответственно.

ADDWF f, dСложить содержимое рабочего регистра W и регистра f. Эта коман�

да устанавливает признаки CARRY, DIGIT CARRY и ZERO в регист�ре STATUS. Символ d после запятой означает адрес, куда будет поме�щен результат выполнения команды (см. предыдущую команду).

Page 7: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

7

SUBLW kADDLW kЭти две команды работают совершенно аналогично вышеописан�

ным, за тем исключением, что операция производится между рабо�чим регистром W и байтовой константой, заданной в команде. Ко�манда SUBLW вычитает содержимое рабочего регистра W из констан�ты k, а команда ADDLW добавляет содержимое рабочего регистра Wк константе k. Эти команды также устанавливают признаки CARRY,DIGIT CARRY и ZERO. Результат выполнения команды помещаетсяв рабочий регистр W.

DECF f, dINCF f, dКоманда DECF уменьшает содержимое заданного регистра на 1,

а INCF увеличивает содержимое заданного регистра на 1. Результатможет быть помещен обратно в заданный регистр (при d = 1) либов рабочий регистр W (при d = 0). В результате выполнения этих ко�манд может установиться признак ZERO в регистре STATUS.

IORWF f, dANDWF f, dXORWF f, dЭти три команды выполняют логические действия ИЛИ, И и

ИСКЛЮЧАЮЩЕЕ ИЛИ. Операция логического сложения ИЛИ чащевсего используется для установки отдельных битов в регистрах; опе�рация логического умножения И используется для сбрасывания би�тов. Когда над одинаковыми битами выполняется операция ИСКЛЮ�ЧАЮЩЕЕ ИЛИ, результат равен 0. Поэтому операция ИСКЛЮЧА�ЮЩЕЕ ИЛИ часто используется для сравнения содержимого опе�рандов.

IORLW kANDLW kXORLW kЭти три команды выполняют те же действия, что и их выше�

описанные аналоги, за тем исключением, что операция произво�дится между рабочим регистром W и константой, заданной в коман�де. Результат выполнения команды помещается в рабочий реги�стр W.

MOVF f, dЭта команда в основном используется для пересылки содержимого

регистра в рабочий регистр W (d = 0). Если же установить d = 1, то этакоманда загрузит регистр сам в себя, но при этом бит ZERO в регистреSTATUS установится в соответствии с содержимым регистра.

Page 8: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

8

COMF f, dЭта команда инвертирует содержимое заданного регистра. При

d = 0 результат заносится в рабочий регистр W (содержимое заданно�го регистра сохраняется прежним), а при d = 1 результат замещаетпрежнее содержимое заданного регистра.

DECFSZ f, dINCFSZ f, dПри d = 1 команда DECFSZ уменьшает на единицу, а INCFZ уве�

личивает на единицу содержимое заданного регистра и пропускаетследующую команду, если содержимое регистра стало равным нулю.При d = 0 результат записывается в регистр W и следующая командапропускается, если содержимое рабочего регистра W стало равнымнулю. Эти команды используются для формирования временных за�держек, условий выхода из цикла и т. д.

SWAPF f, dЭта команда меняет местами полубайты в заданном регистре. Как

и для других команд, при d = 0 результат записывается в рабочийрегистр W, а при d = 1 заносится в регистр, замещая прежнее его со�держимое.

RRF f, d C F CRLF f, d C F CВ Ассемблере PIC имеется две команды сдвига – сдвиг вправо через

признак C любого регистра f (RRF) и сдвиг влево через признак C лю�бого регистра f (RLF). Как и для других команд, при d = 0 результатсдвига записывается в регистр W, а при d = 1 остается в регистре f.

Во всех случаях бит, выдвигаемый из 8�битного регистра f, записы�вается как признак C в регистр STATUS и формирует тем самым значе�ние признака C (CARRY), а на место освобождающегося при сдвиге раз�ряда регистра f записывается значение признака C из регистра STATUS,которое было сформировано к моменту выполнения данной команды.При сдвиге влево (RLF) значение признака C записывается в младшийбит регистра, а при сдвиге вправо (RRF) – в старший бит регистра.

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

BCF f, bBSF f, bКоманды очистки бита BCF и установки бита BSF используются

для работы с отдельными битами в регистрах. Параметр b означаетномер бита, с которым производится операция, и может приниматьзначения от 0 до 7.

Page 9: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

9

BTFSC f, bBTFSS f, bКоманды условных переходов BTFSC и BTFSS проверяют состоя�

ние заданного бита в любом регистре и в зависимости от результатапропускают или нет следующую команду. Команда BTFSC пропуска�ет команду, если заданный бит сброшен, а команда BTFSS – еслиустановлен.

CALL kRETURNЭти две команды предназначены для работы с подпрограммами.

Команда CALL используется для перехода на подпрограмму по адресу,задаваемому в команде, а команда RETURN – для возврата из под�программы. Обе команды выполняются за 2 цикла. Адрес команды,следующей после команды CALL, запоминается в стеке. Стек недосту�пен для обращения и используется только при вызовах подпрограмми возвратах из них. Глубина стека, т. е. число специальных регистров,входящих в его состав, равна 8. Поэтому из основной программы мож�но сделать не более 8 вложенных вызовов подпрограмм. Последнейкомандой подпрограммы всегда является команда RETURN, при вы�полнении которой адрес из стека записывается в РС, и таким образомпосле возврата из подпрограммы выполнение основной программыпродолжается со следующей после CALL команды. Отметим особо, чтопоскольку в большинстве случаев регистр W и регистр STATUS могутбыть использованы в подпрограмме, их содержимое на момент вызоваподпрограммы будет потеряно. Поэтому при вызове подпрограммы ихсодержимое нужно сохранить в свободных ячейках памяти, а передкомандой RETURN поместить команды, восстанавливающие их со�держимое на момент вызова подпрограммы.

RETLW kRETFIEСуществуют еще две команды, предназначенные для возврата из

подпрограмм. Команда RETLW записывает при возврате в рабочийрегистр W константу, заданную в этой команде, а команда RETFIEиспользуется при возврате из прерывания.

Специальные команды

Осталось упомянуть о двух специальных командах – CLRWDTи SLEEP.

Команда CLRWDT предназначена для программного сброса сто�рожевого таймера (WDT). Эта команда должна присутствовать в та�

Page 10: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

10

ких участках программы, чтобы время выполнения программы междудвумя соседними командами CLRWDT не превышало периода сраба�тывания сторожевого таймера, т. е. интервала времени, в течение ко�торого WDT проходит все состояния и возвращается в исходное состо�яние (аппаратный сброс). Программный сброс не влияет на работу си�стемы, возникновение аппаратного сброса указывает на наличие сбояв работе системы, вызванного зацикливанием программы. Обработкапрерывания, вызванного аппаратным сбросом, предусматривает дей�ствия, направленные на устранение последствий от сбоя.

Команда SLEEP предназначена для перевода процессора в режимпониженного энергопотребления. После выполнения этой командытактовый генератор процессора выключается, и обратно в рабочийрежим процессор можно перевести либо по входу сброса, либо по сра�батыванию сторожевого таймера, либо по прерыванию.

Система команд приведена в табл. П1.1. Большинство командвыполняется за 1 цикл (4 такта, 200 нс при F = 20 МГц). Командыбайтовой обработки включают обычный набор арифметических, ло�гических и сдвиговых операций. При наличии двух операндов одиниз них всегда находится в аккумуляторе W.

Для организации циклов и условных переходов в программе ис�пользуются команды пропуска DECFSZ, INCFSZ, BTFSC, BTFSS,которые в случае выполнения заданного условия пропускают следу�ющую команду – увеличивают счетчик команд PC сразу на 2.

При переходах по команде GOTO 11�битовый адрес перехода из кодакоманды загружается в разряды PC.10–0, а два старших разряда бе�рутся из 5�битового регистра PCLATH (PC.12–11 = PCLATH.4–3),т. е. без переустановки PCLATH переход возможен в пределах 2 кслов.Аналогично формируется адрес перехода командой CALL, однако онапредварительно спасает в стеке содержимое PC. Аппаратный стекглубиной 8 слов пользователю недоступен, загрузка PC из стека про�изводится командами RETURN, RETFIE, RETLW, причем последняякоманда перед возвратом загружает в W константу и используетсядля организации таблиц данных в памяти программ. Формированиепризнаков отмечено в последней графе табл. П1.1, сами признакификсируются в младших разрядах регистра STATUS (табл. П2.3).

При записи программ на Ассемблере имя команды можно указы�вать строчными или прописными буквами, в имени переменных этибуквы имеют различные значения. Целые числа можно задаватьв двоичном, десятичном или шестнадцатиричном формате в следую�щей форме:

MOVLW b’10100110' ; двоичное число

Page 11: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

11

MOVLW d’166' ; десятичное число

MOVLFSRW 0A6 ; шестнадцатиричное число

Далее в основном используется шестнадцатиричная форма пред�ставления чисел.

В обычном тексте и поле комментария мы будем использовать за�пись типа A6, однако на Ассемблере следует записывать 0A6, так какшестнадцатиричное число должно начинаться с цифры.

Для большинства команд байтовой обработки возможны 2 вари�анта, например:

ADDWF Adr1,w ; W=W+(Adr1)

ADDWF Adr1,f ; (Adr1)=W+(Adr1)

В первом случае бит d в коде команды равен 0 и сумма остаетсяв аккумуляторе W, во втором случае d = 1 и сумма остается в ячейкес адресом Adr1.

Адрес Adr1 может быть определен в начале программы как 8�раз�рядный, однако в код команды транслятор помещает только 7 млад�ших разрядов, а старший разряд адреса выбирается из 5�го бита ре�гистра STATUS (это бит регистрового банка RP0). Если Adr1 = 20, топри RP0 = 0 полный адрес будет 20, а при RP0 = 1 полный адрес со�ставит A0.

Необходимость переключения регистрового банка RP0 создаетопределенные неудобства при составлении программ. Их можно из�бежать при использовании косвенной адресации, если предварительнозагрузить 8�разрядный адрес в регистр косвенной адресации FSR:

MOVLW Adr1 ; W=Adr1

MOVWF FSR ; (FSR)=W

ADDWF INDF,f ; ((FSR))=((FSR))+W

Нулевой адрес INDF в коде команды инициирует выборку полного8�разрядного адреса из регистра FSR, т. е. последняя команда всегдаработает с полным адресом 20. Косвенную адресацию обычно исполь�зуют при необходимости модификации адреса в программе, для чегодостаточно изменить содержимое FSR.

При выполнении работы необходимо для заданного варианта про�граммы указать в поле комментария динамику изменения содержи�мого аккумулятора W и ячеек 20, 21, 22, 23. В качестве примерарассмотрим следующий вариант программы:

Title “Lab1.asm”

;

list p=16c74 ; processor type

errorlevel 1, �(305)

Page 12: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

12

;

#include “p16c74.inc”

;

Buf1 equ 20

Cnt equ 23

RxBufequ 24

org 0 ; стартовый переход

movlw 0

movwf PCLATH

goto Start

org 100 ; программа пользователя

Start ; начальная установка

call ConstInit

Priem caLL Receiv

movlw 2

xorwf PORTA,f

movlw 3

movwf Cnt

movlw Buf1

movwf FSR

bsf STATUS,C

movf RxBuf,w

; if (RfBuf)=21

; W 20 W 20 21 W 20 21 22 23

Beg1 movwf INDF ; 21 21 43 67 43 86 67 CF 86

rlf INDF,w ; 43 21 86 67 43 0C 67 CF 86

addwf INDF,f ; 43 64 86 67 C9 0C 67 CF 92

iorwf INDF,f ; 43 67 86 67 CF 0C 67 CF 9E

incf FSR,f

decfsz Cnt,f

End1 goto Beg1

; W 20 21 22 23

movwf INDF ; 0C 67 CF 9E 0C

incf FSR,f

movf STATUS,w

movwf INDF

movlw 5

Page 13: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

13

movwf Cnt

movlw Buf1

movwf FSR

Tra movf INDF,w

call Transm

incf FSR,f

decfsz Cnt,f

goto Tra

goto Priem

ConstInit

bsf STATUS,RP0

bcf TRISA,1 ; диод

movlw b’10000011'

movwf OPTION_REG

movlw d’129'

movwf SPBRG

movlw b’00100100'

movwf TXSTA

bcf STATUS,RP0

clrf INTCON

clrf PORTC

movlw b’10010000'

movwf RCSTA

return

Receiv ; прием байта в RxBuf

RecA btfss PIR1,RCIF ; check for received data

goto RecA

RecB movf RCREG,w

movwf RxBuf

return

Transm ; выдача байта из W

movwf TXREG ; transmit byte to PC

bcf PIR1,TXIF

tr3 btfss PIR1,TXIF

goto tr3

return

end

Page 14: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

14

В начале программы определяются значения используемых пере�менных, т. е. задается распределение оперативной памяти. ОператорORG фиксирует начальный адрес размещения кодов программы в по�стоянной памяти.

Как упоминалось ранее, загрузочный модуль передает управлениена метку Start и подпрограмма ConstInit выполняет настройку асин�хронного канала на скорость 9600 бод. На метке Priem программаожидает прихода байта из ПЭВМ. Принятый подпрограммой Receivбайт записывается в ячейку RxBuf, переключается светодиод коман�дой XORWF PORTA, f и начальный адрес Buf1 загружается в регистрFSR. Устанавливается бит переноса C в регистре STATUS, и в счет�чик цикла Cnt загружается число 3. Эта часть программы идентичнадля всех вариантов.

С метки Beg1 начинается конкретный вариант программы. В ак�кумулятор W загружается начальное значение, и цикл из несколь�ких команд повторяется 3 раза. Содержимое аккумулятора W и яче�ек ОЗУ при каждом проходе цикла следует указать в поле коммента�рия. В цикле выполняются сдвиги, арифметические и логические ко�манды. Следует учитывать, что бит переноса формируется арифме�тическими командами и включается в кольцо сдвига при выполнениикоманд RLF, RRF.

После выхода из цикла содержимое W и регистра STATUS записы�вается в ячейки 23, 24 и в поле комментария отмечаются заключи�тельные значения всех переменных. Далее для контроля эти значенияв цикле Tra передаются в ПЭВМ по последовательному каналу и отра�жаются на экране дисплея. Управление возвращается на метку Priem.

В заключение остановимся несколько подробнее на используемыхподпрограммах. Для загрузки регистров SPBRG и TXSTA в подпрог�рамме Init сначала устанавливается первый регистровый банк. В ре�гистре TXSTA задается 8�битовый формат, разрешение выдачи, асин�хронный режим и повышенная скорость (табл. П2.3). При частотекварца 20 МГц и повышенной скорости загрузка десятичного числаd′129′ в регистр SPBRG обеспечивает асинхронную передачу со ско�ростью 9600 бод. Затем устанавливается нулевой регистровый банки в регистре RCSTA задается разрешение приема и 8�битовый фор�мат. Сброс регистра INTCON запрещает прерывания.

Прием байта подпрограммой Receiv начинается с цикла ожиданияготовности на метке RecA до установки флага готовности RCIF в ре�гистре PIR1. Затем байт переписывается из буфера приема RCREGв ячейку RxBuf. При выдаче байта подпрограммой Transm он снача�ла загружается в буфер выдачи TXREG, затем сбрасывается флаг вы�

Page 15: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

15

дачи TXIF и программа входит в цикл ожидания Tr3 до установкифлага TXIF после окончания выдачи байта из буфера TXREG.

Выполнение работы

1. В текстовом редакторе в файле Lab1.asm заменить фрагментпрограммы от метки Beg1 до метки End1 на заданный вариант, ука�зав в поле комментария динамику изменения содержимого аккуму�лятора W и ячеек 20, 21, 22, 23 в процессе выполнения программы.

2. Запустить трансляцию программы Lab1.asm командным фай�лом Asm.bat вида

mрasm lab1.asm

В результате трансляции создаются файлы Lab1.lst и Lab1.hex.Если транслятор выдает сообщение об ошибках, просмотреть файлLab1.lst и устранить ошибки в файле Lab1.asm.

3. В файле Param.txt вида

1 р Lab1.hex

проверить и отредактировать (если необходимо) параметры загруз�ки – номер Com�порта и имя hex�файла. Запустить программу заг�рузки gruzim.exe. При появлении запроса «рress reset» нажать натренажере кнопку сброса. По окончании загрузки нажать клавишуEsc.

4. Запустить программу Lab1.exe. При нажатии любой клавиши(кроме пробела) в тренажер передается по последовательному кана�лу код нажатого символа и принимается из тренажера содержимоеячеек ОЗУ 20, 21, 22, 23, 24. Если полученные данные не совпадаютс данными в поле комментария – определить причину расхождения.Выход из программы Lab1.exe – при нажатии клавиши Esc.

Задание на лабораторную работу № 1

Вариант 1 Var1 movwf INDF rlf INDF,w addwf INDF,f iorwf INDF,f incf FSR,f decfsz Cnt,f goto Var1

Вариант 7 Var7 movwf INDF rlf INDF,w addwf INDF,f andwf INDF,f incf FSR,f decfsz Cnt,f goto Var7

Page 16: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

16

Отчет

Отчет по лабораторной работе должен содержать:1) формулировку задания на лабораторную работу. Задание вклю�

чает две позиции, отображаемые цифрами, например, 10–6. Первая

Вариант 2 Var2 movwf INDF rrf INDF,w addwf INDF,f xorwf INDF,f incf FSR,f decfsz Cnt,f goto Var2

Вариант 8 Var8 movwf INDF rlf INDF,w subwf INDF,f iorwf INDF,f incf FSR,f decfsz Cnt,f goto Var8

Вариант 3 Var3 movwf INDF rlf INDF,w subwf INDF,f andwf INDF,f incf FSR,f decfsz Cnt,f goto Var3

Вариант 9 Var9 movwf INDF rlf INDF,w subwf INDF,f xorwf INDF,f incf FSR,f decfsz Cnt,f goto Var9

Вариант 4 Var4 movwf INDF rrf INDF,w addwf INDF,f iorwf INDF,f incf FSR,f decfsz Cnt,f goto Var4

Вариант 10 Var10 movwf INDF rrf INDF,w subwf INDF,f xorwf INDF,f incf FSR,f decfsz Cnt,f goto Var10

Вариант 5 Var5 movwf INDF rlf INDF,w addwf INDF,f xorwf INDF,f incf FSR,f decfsz Cnt,f goto Var5

Вариант 11 Var11 movwf INDF rrf INDF,w subwf INDF,f iorwf INDF,f incf FSR,f decfsz Cnt,f goto Var11

Вариант 6 Var6 movwf INDF rrf INDF,w addwf INDF,f andwf INDF,f incf FSR,f decfsz Cnt,f goto Var6

Вариант 12 Var12 movwf INDF rrf INDF,w subwf INDF,f andwf INDF,f incf FSR,f decfsz Cnt,f goto Var12

Page 17: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

17

аднамоKакйечЯ

W 02 W 12 W 22аклысереП

гивдСяицарепояаксечитемфирА

яицарепояаксечигоЛ

позиция показывает номер варианта из таблица заданий, вторая –номер нажатой клавиши N;

2) графическую схему алгоритма;3) листинг программы;4) результаты выполнения вручную операций с 8�разрядными дво�

ичными числами в соответствии с текстом программы. В определе�нии операндов для первых операций необходимо использовать скан�код нажатой клавиши, который определяется по формуле: N + 30h,где N берется из задания;

5) сводную таблицу результатов:

Page 18: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

18

Лабораторная работа № 2

ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕСОДЕРЖАТЕЛЬНОЙ ЗАДАЧИ МИКРОКОНТРОЛЛЕРА PIC16С7Х

Цель работы: приобретение навыков программирования содер�жательных задач; освоение принципов работы в системе проектиро�вания программ MPLAB при отладке программ.

Основные этапы программирования содержательных задач

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

Этап 1. Формулировка задачи.В массиве из 10 чисел ненулевые элементы массива заменить на FF.Этап 2. Порядок решения задачи.Данный этап очень важен, так как позволяет в дальнейшем кор�

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

Для решения задачи, выбранной в качестве примера, необходимонесколько раз повторить выполнение следующих действий:

1) выбрать из памяти очередной элемент массива;2) сравнить его с 0;3) если он не равен 0, записать по адресу этого элемента константу

FF; в противном случае – не выполнять никаких действий;4) проверить, является ли этот элемент последним: если нет – пе�

рейти к п. 1, в противном случае – выход из задачи.На основании выбранного порядка решения задачи делаем вывод,

что алгоритм решения задачи должен быть циклическим, так какпредусматривается выполнение несколько раз одинаковых действий(тело цикла). Количество повторений определяется размером масси�ва и называется параметром цикла.

Этап 3. Формирование графической схемы алгоритма решениязадачи.

Предварительно определим некоторые ячейки памяти. Для повы�шения наглядности ячейкам будем давать символические имена. Так,

Page 19: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

19

Cnt – имя ячейки, выбранной для хранения параметра цикла, равно�го 10. В ячейке с именем Mas хранится начальный адрес массива (ри�сунок).

Этап 4. Разработка текста программы МК на языке Ассемблера.На этом этапе предварительно записывают некоторые директивы

Ассемблера, управляющие работой программы:

List р=16C73; определяет тип процессора

#include «PIC16C73.inc»; подключает файл с описанием процессора

Org 0; устанавливается начальный адрес следующих за этой дирек�

тивой команд; таких директив может быть несколько.

Графическая схема алгоритма решения задачи

[<FSR>]<>00

Page 20: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

20

Для размещения каждой команды программы необходимо исполь�зовать четыре поля :

— поле метки;— поле мнемоники КОП;— поле операнда;— поле комментария.Примечания:1. В поле операнда некоторых команд после операнда через запя�

тую помещается бит направления d, который указывает на месторазмещения результата. Если d = 0 (или w), результат размещаетсяв рабочем регистре W, при d = 1 (или f) – в ячейке памяти.

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

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

Выполнение работы

Работа выполняется в среде проектирования программного обеспе�чения MPLAB. Ниже описаны основные приемы работы в этой среде.

Предварительно ассемблерная программа должна быть помещенав папку: D:\MPLAB\EXAMPLE.

иктемелоП ПОKакиноменМ днарепО йиратнеммоK

tratS wlvoM ha0

fwvoM tnC tnCвалкицртемараП;

wlvoM saM ;

fwvoM RSF RSFвависсам.А.Н;

1m fvoM f,FDNI ZканзирпястеуримроФ;

csftb Z,SUTATS

otog 2m

wlvoM hFF0

fwvoM FDNI

2m fcnI f,RSF екйечяйещюуделскитйереП;итямап

zsfceD tnC зиадохывяиволсуакреворП;алкиц

otog 1m

DNE

Page 21: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

21

1. Войти в среду, щелкнув дважды по ярлыку MPLAB на рабочемстоле.

2. В верхнем меню выбрать: Project – New Project.3. В правой части открывшегося окна открыть папку EXAMPLE,

в которой будут находиться проект и ассемблерная программа, кото�рая будет присоединена к проекту. В левой части окна вместо значка* ввести имя проекта с расширением .рjt и нажать ОК.

4. В открывшемся окне Edit Project диалог вести по информациив его части с заголовком Project Files (см. внизу).

5. Выделить файл и нажать засветившуюся при этом кнопку NodesProрerties, в новом окне нажать ОК.

6. В окне Edit Project нажать засветившуюся при этом кнопкуAdd Node . В открывшемся окне выбрать имя файла с ассемблернойпрограммой и щелкнуть дважды по этому имени.

7. В окне Edit Project выделить <имя>[.hex] и нажать засветив�шуюся при этом кнопку Build Mode. После этого выполняется ком�пиляция ассемблерной программы. В случае успеха (сообщение:Build comрleted succesfully) приступить к отладке программы, в про�тивном случае – изучить сообщения об ошибках и скорректироватьпрограмму.

8. Осуществить выполнение программы с последующим анализомрезультатов ее работы. Для этого необходимо:

• Открыть окно с ассемблерной программой, выбрав в верхнемменю File – Oрen – <имя>.asm.• С помощью меню с графическими окнами открыть окно RAMи в данном окне произвести ввод в ячейки памяти необходимойинформации.

Ввод массива

1. В верхнем меню выбрать Window Modify.2. В появившемся окне записи установить флажок Auto Increment.3. Поместить курсор в окно Adress и ввести начальный адрес мас�

сива.4. Поместить курсор в окно Data и ввести произвольное число.5. Нажать кнопку Write и убедиться в том, что в нужную ячейку

памяти записалось данное число, а в окне Adress находится адрес на1 больше.

6. Повторяя пп. 4, 5, ввести в память все элементы массива.• Активизировать окно с ассемблерной программой и в графи�ческом меню нажать кнопку .

Page 22: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

22

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

В случае неверной работы программы необходимо включить ша�говый режим исполнения программы и просмотреть содержимое ос�новных регистров после выполнения каждой команды. Для этого с по�мощью меню с графическими окнами открыть окно SFR и пронаблю�дать в нем имена регистров W, FSR, STATUS и других. Выполнениекаждой команды осуществляется нажатием кнопки «следы» в менюс графическими окнами.

Варианты заданий

Во всех заданиях объектом обработки является массив из 10 чи�сел, который необходимо разместить в свободной зоне области пользо�вателя встроенной памяти данных в диапазоне адресов 20h–7Fh(в банке 0 по умолчанию).

1. Найти максимальный элемент массива.2. Определить количество положительных чисел в массиве.3. Найти адрес минимального элемента массива.4. Определить количество четных чисел в массиве.5. Все отрицательные числа массива заменить на 00.6. Определить количество чисел в массиве меньше заданного.7. Определить количество чисел в массиве, попадающих в задан�

ный диапазон.8. Заданное число поместить на место первого положительного

числа массива.9. Первое отрицательное число массива заменить на заданное.10. Определить количество чисел в массиве, не попадающих в за�

данный диапазон.11. Первое отрицательное число массива заменить на 00.12. Найти адрес максимального элемента массива.13. Определить количество чисел в массиве больше заданного.14. Заданное число поместить на место первого отрицательного

числа массива.15. Найти минимальный элемент массива.16. Первое нечетное число массива заменить на заданное.17. Определить количество нечетных чисел в массиве.

Page 23: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

23

18. Первое положительное число массива заменить на заданное.19. Все нечетные числа массива заменить на заданное.20. Первое четное число массива заменить на заданное.21. Все положительные числа массива заменить на FF.22. Определить количество отрицательных чисел в массиве.

Контрольные вопросык лабораторным работам № 1, 2

1. Особенности гарвардской архитектуры.2. Действия МК при выполнении команды.3. В чем состоит конвейерный принцип обработки команд? Приве�

дите пример.4. Как можно организовать чтение табличных данных из резидент�

ной памяти программ (РПП)?5. Назовите диапазоны адресов, которыми может пользоваться

программист для хранения данных.6. Назначение WDT и способ его использования.7. Запрограммировать очистку массива ячеек памяти (количество,

начальный адрес): а) 30h, 20h; б) 20h, 30h; в) 20h, 40h; г) 40h, 10h.8. Что такое программные и аппаратные прерывания?9. Составить программу подсчета числа единиц в байте.10. В пределах какого адресного пространства возможен переход

в командах CALL ADR, goto ADR?11. Назовите варианты команд возврата из подпрограммы. В ка�

ком случае используется каждый вариант?12. Составьте программу для фрагмента алгоритма (либо А, либо Б).Примечание. Первой в программе должна находиться команда,

содержащая условие, например: BTFSS STATUS, C.

Page 24: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

24

Лабораторная работа № 3

ВЗАИМОДЕЙСТВИЕ МИКРОКОНТРОЛЛЕРА PIC16С7ХС ВНЕШНИМИ УСТРОЙСТВАМИ

Цель работы: изучить особенности взаимодействия микроконт�роллера с внешними устройствами; получить навыки программиро�вания задач проверки работы внешних устройств.

Постановка задачи

Разработать структурную схему и написать программу проверкиработоспособности ИМС для микроконтроллерной системы на базеМК PIC16C7X.

Разработка структурной схемы

В качестве объекта контроля выберем 4�разрядный счетчик 555ИЕ7.Перечень входных сигналов, управляющих его работой, а также вы�ходных сигналов, по которым можно следить за правильностью ра�боты счетчика, представлен в прил. 4.

IE7 (193) 4�разрядный счетчикRB7 ���>| D1 VCC |��� 16 Начальная установка входов

RB6 <��| Q1 D0 |<�� RD2 R=0 D3�0=1111 C+=1 C�=1 PE=1

RB5 <��| Q0 R |<�� RD3 По импульсу R=1,0 сброс Q3�0 = 0000

RB4 ��>| C� P�|��> RD1 По импульсу C+ = 0,1 код Q3�0 увелич. на 1

RB1 ��>| C+ P+ |��> RD0 По импульсу C� = 0,1 код Q3�0 сокращ. на 1

RB0 <��| Q2 PE |<�� RD6 По импульсу PE = 0,1 загрузка Q3�0 = D3�0.

RD7 <��| Q3 D3 |<�� RD5

8 ���| GND D2 |<�� RD4

Микроконтроллер соединяется с проверяемой схемой через портыРВ и PD (рис. 1). Разряды 0, 1, 7 порта PD и разряды 0, 5, 6 порта PBдолжны быть соединены с выходами ИМС , поэтому они настраива�ются на ввод информации; разряды 2, 3, 4, 5, 6 порта PD и разряды1, 4, 7 порта PB должны быть соединены с входами ИМС, поэтомуони настраиваются на вывод информации.

Электрические линии, соединяющие контакты МК и ИМС,объе�динены в шину. На каждой линии указываются два числа: то, кото�рое находится у корпуса ИМС (или МК), обозначает номер внешнего

Page 25: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

25

вывода ИМС (МК), число, расположенное ближе к шине, указываетномер соединения. Пусть две линии имеют номер соединения 8. Этоозначает, что внешний вывод № 29 у МК соединен с внешним выво�дом № 11 у ИМС.

Разработка программы проверки работоспособности ИМС

Основой для разработки является базовая программа LAB2.asm,которая помимо программных блоков, управляющих проверкой не�которой ИМС, содержит служебные программы, управляющие рабо�той тренажера при выполнении лабораторной работы. Выделим не�обходимые программные блоки и рассмотрим принципы их создания.

Блок инициализации (настройки) портов МК – DirBD1

С помощью данного блока производится настройка портов на пе�редачу информации через них в определенном направлении. Направ�ление передачи определяется на основании связей между МК и ИМС,сформированных в соответствии со структурной схемой (см. рис. 1).

Рис. 1. Структурная схема микроконтроллерной системы

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

Page 26: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

26

При формировании блока DirBD исходят из следующих особенно�стей работы портов. Во�первых, у каждого порта отдельный разрядможет быть настроен на ввод или вывод независимо от других разря�дов порта. Это обеспечивается тем, что для каждого порта имеетсясвой регистр направления TRIS*, где вместо * ставится буква, указы�вающая имя порта. Запись «0» в определенном разряде этого регистраозначает, что одноименный разряд порта * настраивается на выводинформации, запись «1» – на ввод. Следует отметить, что и порт *,и его регистр направления TRIS* являются регистрами специально�го назначения, однако, если адрес порта * находится банке 0, то ад�рес его регистра направления TRIS* расположен в банке 1. Поэтомудля настройки портов необходимо перейти в банк 1, после заверше�ния ее нужно перейти в банк 0.

Рассмотрим фрагмент программы.

bsf STATUS, RP0;

movlw b’11001111'

movwf TRISA

bcf STATUS, RP0

После выполнения фрагмента разряды 3…0 порта А настроены наввод информации, разряды 5, 4 – на вывод.

Блок DirBD (см. рис. 1) имеет вид

DirBD bsf STATUS, RP0;

movlw b’01101101'

movwf TRISB

movlw b’10000011'

movwf TRISD

bcf STATUS, RP0

Блок распознавания нажатой клавиши – Command

Проверка счетчика в примере состоит в проверке выполнения имотдельных функций. Вызов функции на выполнение осуществляет�ся нажатием определенной клавиши. Сканкод этой клавиши посту�пает в контроллер, в регистр RxBuf. Задача данного блока – выде�лить путем сравнения код нужной клавиши и передать управлениефрагменту, выполняющему необходимую функцию. В качестве при�мера рассмотрим построение блока, выполняющего распознаваниедвух клавиш, нажатие клавиши r вызывает сброс счетчика, нажатиеклавиши i вызывает увеличение его содержимого на 1.

Page 27: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

27

Схема алгоритма блока имеет вид (рис. 2).Примечание. Блоки с двойными стенками обозначают наборы ко�

манд.

Наборы команд выполнения отдельных функций –BegUst (сброс), Increm (увеличение на 1)

Каждый набор команд решает задачу программного формирова�ния множества входных сигналов проверяемой ИМС для выполне�ния ею определенной функции. Вызов такого набора на исполнение

Рис. 2. Схема алгоритма блока распознавания клавиш

Page 28: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

28

осуществляется нажатием определенной клавиши. На выходах ИМСформируются сигналы, являющиеся реакцией на входные сигналы.Значения сигналов, как входных, так и выходных, можно пронаб�людать на экране монитора ПК. Для этого необходимо вызвать наисполнение служебную программу Show.exe. Эта программа обеспе�чивает вывод на экран монитора ПК обозначений сигналов ИМС какзаголовков столбцов таблицы результатов. Правильность выполня�емой функции определяется на основе визуального анализа сигналовна экране монитора ПК.

При формировании набора команд следует иметь в виду, что сиг�налы могут быть статические и динамические. Статические сигна�лы используются с целью установки состояния триггера по асин�хронному входу (R или S) либо для задания того или иного наборасигналов на входах логического элемента (ЛЭ). Для формированияподобных сигналов достаточно использовать команду вида bcf (bsf).Пусть, например, разряд 5 порта B соединен с одним из входов ЛЭи при подаче входного набора на этот вход должен быть подан 0.Команда bcf PORTB, 5 решает эту задачу. Динамические сигналыформируются для управления триггерами по синхронным входам(«D» или «J», «K») и для их переключения должны быть поданына специальные входы «C». Каждый такой сигнал представляет со�бой импульс, и для его программного формирования необходимо ис�пользовать две команды: установки сигнала в активное состояниеи сброса в неактивное (исходное) состояние. Пусть, например, раз�ряд 4 порта C соединен с входом «C» триггера(ов) ИМС и на этотвход необходимо подать положительный импульс. Это достигает�ся использованием двух следующих команд: bsf PORTC, 4 и bcfPORTC, 4.

Рассмотрим ИМС, используемую в примере. Для ее полной про�верки необходимо обеспечить выполнение ею четырех функций:

1) сброс счетчика;2) режим прямого счета (инкрементирование состояния);3) режим обратного счета (декрементирование состояния);4) запись произвольного состояния в счетчик.Приведенные ниже наборы команд предназначены для выполне�

ния ИМС первых двух функций.Как следует из алгоритма (см. рис. 2), вызов первого набора на

исполнение происходит при нажатии клавиши r, вызов второго –клавиши i.BegUst ; первый набор команд

movlw b’11111111'; установить сигналы на входах С+и С

–в исходное

Page 29: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

29

movwf PORTB ; состояние

movlw b’11110111'; то же для сигнала на входе R

movwf PORTD

bsf PORTD, 3; сброс счетчика

bcf PORTD, 3

goto Answer; на вывод состояния счетчика на экран

Increm ; второй набор команд

bcf PORTB, 1

bsf PORTB, 1

goto Answer

Ресурсы микроконтроллера и структура тренажера

Ресурсы и внешние выводы МК показаны на рис. 3.К контактам OSC1, OSC2 подключается кварцевый резонатор до

20 МГц, на входе MCLR формируется сигнал сброса (при включениипитания или нажатии кнопки сброса), на контакты VDD, VSS пода�ется питание (+5 В, GND). Остальные контакты являются много�функциональными выводами различных портов; варианты обозна�чения их сигналов приведены в табл. П2.1.

В состав кристалла МК входит процессорный блок CPU c 8�раз�рядным аккумулятором W и 13�разрядным счетчиком команд PC,память программ на 8К 14�разрядных слов EEPROM и регистроваяпамять RAM, адресная структура которой приведена в табл. П2.2.Адреса 00–7F относятся к банку 0, адреса 80–8F – к банку 1. В адрес�

Рис. 3. Ресурсы контроллера PIC16C74

----------------------------------------- | |

---->| |<===>

<----| |

---->| |

| |

<===>| |<===>

| |

| |

| |

<===>| |<===>

| |

| |

-----| |

-----| |

| |

-----------------------------------------

Page 30: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

30

ных зонах 00–1F и 80–9F расположены функциональные регистры,адреса 20–7F и A0–FF используются как оперативная память. Фор�мат наиболее употребительных регистров приведен в табл. П2.3. Не�которые из регистров определены в обоих банках (PCL, STATUS,FSR,...), для обращения к остальным может понадобиться предва�рительное переключение текущего банка, т. е. изменение бита RP0в регистре STATUS.

Через порты RD и RB к МК подключаются проверяемые микро�схемы. Линии выдачи TX и приема RX (разряды RC6, RC7 порта RC)используются для связи с ПЭВМ по асинхронному последователь�ному каналу (через разъем X2). Для фиксации цифровых сигналовна линиях X, Y используется программируемая логическая интег�ральная схема (ПЛИС) D4, которая подключена к МК через портыRC, RE.

ПЛИС синхронизируется генератором тактовых импульсов D5 с ча�стотой 40 МГц, для синхронизации МК используется кварцевый ре�зонатор Q1 c частотой 20 МГц. Через разъем X1 и стабилизатор D2 наплату тренажера подается питание +5 В.

После включения питания или нажатия кнопки сброса К1 в МКпроисходит стартовая установка функциональных регистров и сброссчетчика команд PC. Затем управление передается (программно) в заг�рузочный модуль памяти, который находится в адресной зоне 0F00–0FFF. Зажигается и гаснет сигнальный светодиод VD1, и в ПЭВМвыдается по линии TX запрос на загрузку новой программы пользо�вателя. Если в течение 5 мс ПЭВМ не откликается на запрос, то уп�равление передается старой программе пользователя (ее стартовыйадрес остался в загрузочном модуле от последней загрузки). Сам заг�рузочный модуль первоначально заносится в МК на программатореи в дальнейшем не изменяется (за исключением стартового адресапользователя).

В контактную панель тренажера могут вставляться микросхемыв корпусах DIP�14, DIP�16, DIP�20. Подача питания должна бытьстандартной: +5 В на последнем контакте, земля – на среднем кон�такте (7�, 8� или 10�й контакт). Цоколевка некоторых микросхемприведена в прил. 3. В прил. 4 (файл Shem.txt) дано краткое опи�сание их действия. Рассмотрим в качестве примера программуLab2.asm проверки счетчика 555ИЕ7.

Title «Lab2 Program»

;

list p=16c74 ; processor type

Page 31: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

31

errorlevel 1, �(305)

;

#include “p16c74.inc” ;

Stat1 equ 20h

Takt equ 21h

CntByte equ 22h

Shif equ 23h

RxBuf equ 24h

CntShi equ 25h

ByteX equ 26h

ByteY equ 27h

org 00h

; Полный прыжок

movlw 0

movwf PCLATH

goto Start

org 04h ; прерывания

nop org 100h ; программа тестирования

Start ; начальная установка

call ConstInit

DirBD; настройка направлений RB, RD

bsf STATUS,RP0

movlw b'01101101' ; RB input:0,5,6;output:1,4,7

movwf TRISB

movlw b'10000011' ; RD input:0,1,7;output:2,3,4,5,6

movwf TRISD

bcf STATUS,RP0

BegUst

movlw b'11111111'; установить сигналы на входах С+ и С� в исходное movwf PORTB ; состояние movlw b'11110111' ; то же для сигнала на входе R movwf PORTD bsf PORTD, 3; сброс счетчика bcf PORTD, 3

goto Answer

Page 32: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

32

Priemcall Receiv

movlw 2

xorwf PORTA,f

; сброс и пуск ПЛИСPusk bcf PORTE,2 ; CLR=0

bsf PORTC,1 ; U0=1

bsf PORTC,2 ; U1=1

bsf PORTC,0 ; RD=1

bsf PORTE,2 ; CLR=1

Commandmovf RxBuf,w

xorlw 'r'

btfsc STATUS,Z

goto BegUst

movf RxBuf,w

xorlw 'i'

btfsc STATUS,Z

goto Increm

goto Priem

Incrembcf PORTB,1 ; C+ = 0;

bsf PORTB,1 ; C+ = 1;

goto Answer

Answer ; выдача PORTD, PORTBmovf PORTD,w

call Transm

movf PORTB,w

call Transm

; разрешение CLKUmovlw b'11111001'

andwf PORTC,f ; U1=0, U0=0

bcf PORTC,0 ; RD=0

; чтение ПЛИС и выдача 6 байтmovlw 3

movwf CntByte

Page 33: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

33

RdTranscall RdAlt

movf ByteX,w

call Transm

movf ByteY,w

call Transm

decfsz CntByte

goto RdTrans

goto Priem

ConstInitbsf STATUS,RP0

movlw b'10000000' ; RC7/RX in

movwf TRISC

movlw b'111100' ;A0,RA1 out diod

movwf TRISA

movlw b'011' ;СLR out

movwf TRISE

movlw d'129'

movwf SPBRG

movlw b'00100100'

movwf TXSTA

bcf STATUS,RP0

clrf INTCON

clrf PORTC

movlw b'10010000'

movwf RCSTA

returnReceiv ; прием

clrf STATUS ; Bank 0

RecA btfss PIR1,RCIF ; check for received data

goto RecA

RecB movf RCREG,w

movwf RxBuf

returnTransm ; выдача

clrf STATUS

movwf TXREG ; transmit byte to PC

Page 34: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

34

bcf PIR1,TXIF

tr3 btfss PIR1,TXIF

goto tr3

returnRdAlt ; чтение 2 байт ПЛИС

movlw 8

movwf Shif

Rd1 bcf STATUS,C

btfsc PORTE,0

bsf STATUS,C

rlf ByteX,f

bcf STATUS,C

btfsc PORTE,1

bsf STATUS,C

rlf ByteY,f

bsf PORTC,3

bcf PORTC,3 ; CLKU=1,0

decfsz Shif

goto Rd1

returnend

После инициализации Init2 выполняется настройка направленияработы отдельных разрядов портов RB и RD. Выход каждого тригге�ра портов, например PORTB.3, подключен к внешнему контакту че�рез электронный ключ, который управляется триггером направле�ния (TRISB.3). При записи 0 в триггер направления TRISB.3 = 0ключ замкнут и состояние триггера PORTB.3 передается на выход�ной контакт – он настроен на вывод. При записи TRISB.3 = 1 ключразомкнут и контакт настроен на ввод.

После настройки направления на метке BegUst выполняется на�чальная установка микросхемы. После этого управление передает�ся на метку Answer и в ПЭВМ по последовательному каналу выдает�ся и отражается на экране состояние портов микросхемы. После вы�дачи программа переходит на метку Priem и ожидает команду отПЭВМ.

При нажатии любой клавиши на клавиатуре ПЭВМ ее код переда�ется в МК. Изменяется состояние светодиода VD1 (чтобы подтвер�дить работу последовательного канала) и на метке Pusk запускается

Page 35: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

35

микросхема ПЛИС. На метке Command начинается анализ приня�той команды. Набор приходящих от ПЭВМ команд для конкретноймикросхемы устанавливает сам пользователь. В программе Lab2.asmреализованы 2 команды – команда сброса r и команда инкремента i.При нажатии других клавиш управление просто возвращается наметку Priem и состояние микросхемы не изменяется.

По команде сброса, осуществляемой нажатием клавиши r, управ�ление передается на метку BegUst и выполняется описанная ранееисходная установка микросхемы. По команде инкремента, осуще�ствляемой нажатием клавиши i, управление передается на меткуIncrem и выдается отрицательный импульс по линии инкремента RB1.Новое состояние микросхемы на метке Answer передается в ПЭВМи отражается на экране. После каждого нажатия клавиши i состоя�ние увеличивается на 1, что можно пронаблюдать по сигналам навыходах Q3, Q2, Q1, Q0. Сброс всегда переводит схему в исходноесостояние Q3 Q2 Q1 Q0 = 0000.

Выполнение работы

1. Скопировать файл Lab2.asm в файл с заданным Вами именем,например Qq.asm. Изменить в файле Qq.asm настройку направленийлиний портов RB, RD для работы с микросхемой Ie7. Разработанныепри подготовке отчета наборы команд для управления микросхемойввести в программу Qq.asm вместо прежнего набора команд.

2. Вызвать в режиме текстового редактора служебный файл с опи�санием соединений между ИМС и МК nogi.txt и сравнить с исходнойинформацией, при необходимости скорректировать.

3. Запустить трансляцию программы Qq.asm командным файломAsm.bat вида

mрasm Qq.asm.

В результате трансляции создаются файлы Qq.lst и Qq.hex. Еслитранслятор выдает сообщение об ошибках, просмотреть файл Qq.lstи устранить ошибки в файле Qq.asm.

4. В файле Param.txt вида

1 р Qq.hex

проверить и отредактировать (если необходимо) параметры загрузки –номер Com�порта и имя hex�файла. Запустить программу загрузкиgruzim.exe.

Page 36: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

36

При появлении запроса «рress reset» нажать на тренажере кнопкусброса. По окончании загрузки нажать пробел.

5. Запустить программу show.exe. Проверить поведение микро�схемы при выполнении выбранного набора команд. В случае непра�вильной работы скорректировать текст исходной программы Qq.asm.

Отчет

Отчет по лабораторной работе должен содержать:1) формулировку задания на лабораторную работу;2) функциональную схему МКС для проверки ИМС;3) графическую схему алгоритма блока Command;4) тексты программных блоков выполнения отдельных функций,

а также DirBD, Command.

Контрольные вопросы

1. Объяснить необходимость переключения банков при инициа�лизации портов.

2. Составить программу инициализации порта В, если известно,что:

а) четные разряды порта должны работать на ввод, а нечетные –на вывод;

б) старшие разряды 7…4 должны работать на вывод, младшие раз�ряды 3…0 – на ввод.

3. Контакт PORTВ,5 соединен с клавишей. При нажатии клави�ши в точке соединения сигнал изменяется с 1 на 0. Запрограммиро�вать инициализацию порта.

4. Для предыдущей задачи составить программу ожидания нажа�тия клавиши.

5. По заданной схеме соединения МК и ИМС ЛП5 написать:а) программу инициализации портов В и D;б) программу перебора наборов.6. Написать набор команд для проверки функции обратного счета

счетчика ИЕ7.7. Написать набор команд для проверки функции записи состоя�

ния 1010 в счетчик.8. Привести схему алгоритма блока Command для проверки вы�

полнения ИМС всех четырех функций.

Page 37: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

37

ПРИЛОЖЕНИЯ

Приложение 1

Таблица П1.1. Система команд PIC16C74

Байтовые операции Имя Операнды Операция Кодировка ПризнакиADDWF f,d f=W+f 00 0111 dfff ffff C,DC,Z

ANDWF f,d f=W&f 00 0101 dfff ffff Z

CLRF f f=0 00 0001 1fff ffff Z

CLRW W=0 00 0001 0000 0011 Z

COMF f,d f=!f 00 1001 dfff ffff Z

DECF f,d f=f�1 00 0011 dfff ffff Z

DECFSZ f,d f=f�1, skip if 0 00 1011 dfff ffff

INCF f,d f=f+1 00 1010 dfff ffff Z

INCFZ f,d f=f+1, skip if 0 00 1111 dfff ffff

IORWF f,d f=W|f 00 0100 dfff ffff Z

MOVF f,d f=f 00 1000 dfff ffff Z

MOVWF f f=W 00 0000 1fff ffff

NOP нет операции 00 0000 0xx0 0000

RLF f,d С <� f <� C 00 1101 dfff ffff C

RRF f,d C �> f �> C 00 1100 dfff ffff C

SUBWF f,d f=f�W 00 0010 dfff ffff C,DC,Z

SWAPF f,d обмен тетрад f 00 1110 dfff ffff

XORWF f,d f=f^W 00 0110 dfff ffff Z

Битовые операции

BCF f,b b=0 01 00bb bfff ffff

BSF f,b b=1 01 01bb bfff ffff

BTFSC f,b skip if b=0 01 10bb bfff ffff

BTFSS f,b skip if b=1 01 11bb bfff ffff

Константы и переходы

ADDLW k W=W+k 11 111x kkkk kkkk C,DC,Z

ANDLW k W=W&k 11 1001 kkkk kkkk Z

CALL k вызов подпрог. 10 0kkk kkkk kkkk

CLRWDT сброс WDT 00 0000 0110 0100

GOTO k PC.10�0=k 10 1kkk kkkk kkkk

IORLW k W=W|k 11 1000 kkkk kkkk Z

Page 38: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

38

MOVLW k W=k 11 00xx kkkk kkkk

RETFIE возвр.из прер. 00 0000 0000 1001

RETLW k возвр. с W=k 11 01xx kkkk kkkk

RETURN возвр.из подпр. 00 0000 0000 1000

SLEEP энергосбереж. 00 0000 0110 0011

SUBLW k W=k�W 11 110x kkkk kkkk C,DC,Z

XORLW k W=W^k 11 1010 kkkk kkkk Z

Page 39: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

39

Приложение 2

Таблица П2.1. Альтернативные функции контактов

RA0/AN0 RC0/T1OSO/T1CKI RB0/INT RD0/PSP0

RA1/AN1 RC1/T1OSI/CCP2 RB1 RD1/PSP1

RA2/AN2 RC2/CCP1 RB2 RD2/PSP2

RA3/AN3/VREF RC3/SCK/SCL RB3 RD3/PSP3

RA4/T0CKI RC4/SDI/SDA RB4 RD4/PSP4

RA5/AN4/SS# RC5/SDO RB5 RD5/PSP5

RE0/RD#/AN5 RC6/TX/CK RB6 RD6/PSP6

RE1/WR#/AN6 RC7/RX/DT RB7 RD7/PSP7

RE2/CS#/AN7

Таблица П2.2. Адреса регистров RAM (00…7F банк 0, 80…FF банк 1)

Банк 0 Банк1 Банк 0 Банк1

00 INDF 80 INDF 10 T1CON 90 �

01 TMR0 81 OPTION 11 TMR2 91 �

02 PCL 82 PCL 12 T2CON 92 PR2

03 STATUS 83 STATUS 13 SSPBUF 93 SSPADD

04 FSR 84 FSR 14 SSPCON 94 SSPSTAT

05 PORTA 85 TRISA 15 CCPRIL 95 �

06 PORTB 86 TRISB 16 CCPR1H 96 �

07 PORTC 87 TRISC 17 CCP1CON 97 �

08 PORTD 88 TRISD 18 RCSTA 98 TXSTA

09 PORTE 89 TRISE 19 TXREG 99 SPBRG

0A PCLATH 8A PCLATH 1A RCREG 9A �

0B INTCON 8B INTCON 1B CCPR2L 9B �

0C PIR1 8C PIE1 1C CCPR2H 9C �

OD PIR2 8D PIE2 1D CCP2CON 9D �

0E TMR1L 8E PCON 1E ADRES 9E �

0F TMR1H 8F � 1F ADCON0 9F ADCON1

20 Зона A0 Зона

. пользователя . пользователя

. .

7F (банк 0) FF (банк 1)

Таблица П2.3. Формат регистров

Регистр STATUS (адреса 03h, 83h)Биты Имя Сброс Назначение

7 IRP 0 резерв (для косв.адресов 100h � 1FFh)

Page 40: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

40

6�5 RP1�0 00 00..банк 0 01..банк 1

4 TO# 1 1..сброс, SLEEP, CLRWDT 0..сработал WDT

3 PD# 1 1..сброс, CLRWDT 0..SLEEP

2 Z 0 признак нуля

1 DC 0 десятичный перенос

0 С 0 перенос

Регистр OPTION (адрес 81h)

Биты Имя Сброс Назначение

7 RBPU 1 0..подтяжка RB0

6 INTEDG 1 0..спад INT 1..рост INT

5 T0CS 1 0..TMR0 от F/2 1..TMR0 от RA4

4 T0SE 1 0..рост RA4 1..спад RA4 (TMR0+)

3 PSA 1 0..TMR0 1..WDT (подкл.делителя К0)

2�0 К0 111 (000..1/2 111..1/256 для TMR0)

Регистр INTCON (адреса 0Bh, 8Bh)Биты Имя Сброс Назначение

7 GIE 0 1..общее разреш прерыв

6 PEIE 0 1..разреш дополн прерыв

5 TOIE 0 1..разреш прер по TOIF

4 INTE 0 1..разреш прер INT

3 RBIE 0 1..разреш прер по измен RB.7�4

2 TOIF 0 флаг TMR0

1 INTF 0 флаг INT

0 RBIF x флаг измен RB.7�4

Регистр управления выдачи TXSTA (адрес 98h)Биты Имя Сброс Назначение

7 CSRC 0 1..master 0..slave (синхрон.режим)

6 TX9 0 0..8 бит 1..9 бит

5 TXEN 0 1..разреш.выдачи

4 SYNC 0 0..асинхр.режим 1..синхр.режим

3 U не использ.

2 BRGH 0 1..повыш.асинхр.скорость

1 TRMT 0 1..сдвиг.регистр пуст

0 TX9D 0 9�й бит при выдаче

Регистр управления приема RCSTA (адрес18h)Биты Имя Сброс Назначение

7 SPEN 0 1..разреш. USART

6 RX9 0 1..9 бит 0..8 бит

Page 41: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

41

5 SREN 0 1..разреш.синхр.приема

4 CREN 0 1..разреш.асинхр.приема

3 0 не использ.

2 FERR 0 1..ошибка кадра

1 OERR 0 1..ошибка наложения

0 RX9D 0 9�й бит на приеме

Регистр флагов PIR1 (адрес 0Ch)Биты Имя Сброс Назначение

7�6 � 00 Не использ.

5 RCIF 0 Флаг приема USART

4 TXIF 0 Флаг выдачи USART

3 SSPIF 0 Флаг SPI

2 CCP1IF 0 Флаг CCP1

1 TMR2IF 0 Флаг TMR2

0 TMR1IF 0 Флаг TMR1

Регистр скорости SPBRG (адрес 99h)Если загрузить в SPBRG число X, то скорость передачи в бодах

Baud = F / ( N * (X+1))

N=64..норм.скор. N=4..повыш.скорость F�частота кварца в герцах

Регистр выдачи TXREG (адрес 19h)

Регистр приема RCREG (адрес 1Ah)

Регистр результата АЦП ADRES (адрес 1Eh)

Регистр управления ADCON0 (адрес 1Fh)Биты Имя Сброс Назначение

7�6 ADCS1�0 00 TAD (00..2/F 01..8/F 10..32/F 11..2�6 мс)

5�3 СHS2�0 000 номер канала (0,1,...,7)

2 GO 0 1..пуск АЦП

1 0 не использ.

0 ADON 0 1..включ.АЦП

Время преобразования 10 TAD

Регистр выбора ADCON1 (адрес 9Fh)Биты Имя Сброс Назначение

7�3 00000 не использ.

2�0 PCFG2�0 000 код выбора (000 � все входы аналоговые)

Page 42: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

42

Приложение 3

ИМС с указанием соединений их контактов с контактами МК

ID7 (138) Дешифратор 3*8 _________

RB7 ��>| A0 VCC |��� 16 Начальная установка входов

RB6 ��>| A1 Y0 |��> RD2 A0,A1,A2,E1,E2 = 0 E3 = 1

RB5 ��>| A2 Y1 |��> RD3 Активный выход один (низкий уровень)

RB4 ��>| E1 Y2 |��> RD1 При увеличении кода А2�0 = 000,...,111

RB1 ��>| E2 Y3 |��> RD0 активный выход смещается от Y0 к Y7.

RB0 ��>| E3 Y4 |��> RD6 При E3�1 != 100 все выходы неактивны

RD7 <��| Y7 Y5 |��> RD5 (высокий уровень)

8 ���| GND Y6 |��> RD4

~~~~~~~~~~

TM9 (174) 6 триггеров ________

RB7 ��>| R VCC |��� 16

RB6 <��| Q1 Q6 |��> RD2 Начальная установка входов

RB5 ��>| D1 D6 |<�� RD3 R=1 D6�1=111111 C=0

RB4 ��>| D2 D5 |<�� RD1 По импульсу R=0,1 сброс Q6�1=000000

RB1 <��| Q2 Q5 |<�� RD0 По импульсу C=1,0 загрузка Q6�1 = D6�1

RB0 ��>| D3 D4 |<�� RD6

RD7 <��| Q3 Q4 |��> RD5

8 ���| GND C |<�� RD4

~~~~~~~~~

IE7 (193) 4�разрядный счетчик _________

RB7 ���| D1 VCC |��� 16 Начальная установка входов

RB6 <��| Q1 D0 |<�� RD2 R=0 D3�0=1111 C+=1 C�=1 PE=1

RB5 <��| Q0 R |<�� RD3 По импульсу R=1,0 сброс Q3�0 = 0000

RB4 ��>| C� P�|��> RD1 По импульсу C+ = 0,1 код Q3�0 увелич. на 1

RB1 ��>| C+ P+ |��> RD0 По импульсу C� = 0,1 код Q3�0 сокращ. на 1

RB0 <��| Q2 PE |<�� RD6 По импульсу PE = 0,1 загрузка Q3�0 = D3�0.

RD7 <��| Q3 D3 |<�� RD5

8 ���| GND D2 |<�� RD4

~~~~~~~~~

Page 43: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

43

IR8 (164) 8�разрядный сдвиговый регистр _________RB7 ��>| SA VCC |��� 14 Начальная установка входов

RB6 ��>| SB Q7 |��> RD2 R,SA,SB = 1 C = 0

RB5 <��| Q0 Q6 |��> RD3 По импульсу R=0,1 сброс Q7�0 = 00000000

RB4 <��| Q1 Q5 |��> RD1 По импульсу C=1,0

RB1 <��| Q2 Q4 |��> RD0 сдвиг Q7�1 = Q6�0, Q0 = (SA & SB).

RB0 <��| Q3 R |<�� RD6

7 ���| GND C |<�� RD5

~~~~~~~~

IR16 (295) 4�разрядный сдвиговый регистр ________RB7 ��>| SI VCC |��� 14 Начальная установка входов

RB6 ��>| D0 Q0 |��> RD2 OE,C,SI = 1 PE = 0 D3�0 = 0000

RB5 ��>| D1 Q1 |��> RD3 Если PE = 1 по имп. C=0,1 загрузка Q3�0 = D3�0

RB4 ��>| D2 Q2 |��> RD1 Если PE = 0 по импульсу C=0,1

RB1 ��>| D3 Q3 |��> RD0 сдвиг Q3�1 = Q2�0, Q0 = SI

RB0 ��>| PE C |��> RD6 При OE = 0 выходы Q3�0 отключаются

7 ���| GND OE |��> RD5

~~~~~~~~

561IE8 (CD4017) счетчик�дешифратор ________RB7 <��| Q5 VCC |��� 16 Начальная установка входов

RB6 <��| Q1 R |<�� RD2 R,EC=0 C=1

RB5 <��| Q0 C |<�� RD3 Активный выход (по выс. уровню) только один.

RB4 <��| Q2 EC |<�� RD1 По импульсу сброса R=1,0 Q0 = 1(акт. выход)

RB1 <��| Q6 P |��> RD0 По импульсу инкремента C = 0,1 активный

выход

RB0 <��| Q7 Q9 |��> RD6 смещается по циклу Q1,Q2,...,Q9,Q0,Q1,...

RD7 <��| Q3 Q4 |��> RD5 Установка EC = 1 блокирует инкремент.

8 ���| GND Q8 |��> RD4

~~~~~~~~~

LA3 (000) 4 конъюнктора с инверсией __________RB7 ��>| A1 VCC |��� 14 Начальная установка входов

RB6 ��>| A2 D1 |<�� RD2 A1,A2,B1,B2,C1,C2,D1,D2 = 1

RB5 <��| A3 D2 |<�� RD3 A3 = !(A1 & A2)

RB4 ��>| B1 D3 |��> RD1 B3 = !(B1 & B2)

RB1 ��>| B2 C1 |<�� RD0 C3 = !(C1 & C2)

RB0 <��| B3 C2 |<�� RD6 D3 = !(D1 & D2)

7 ���| GND C3 |��> RD5

~~~~~~~~~~

Page 44: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

44

LI2 (009) 4 конъюнктора _________RB7 ��>| A1 VCC |��� 14 Начальная установка входов

RB6 ��>| A2 D1 |<�� RD2 A1,A2,B1,B2,C1,C2,D1,D2 = 1

RB5 <��| A3 D2 |<�� RD3 A3 = A1 & A2

RB4 ��>| B1 D3 |��> RD1 B3 = B1 & B2

RB1 ��>| B2 C1 |<�� RD0 C3 = C1 & C2

RB0 <��| B3 C2 |<�� RD6 D3 = D1 & D2

7 ���| GND C3 |��> RD5

~~~~~~~~~

LP5 (086) 4 схемы ИСКЛЮЧАЮЩЕЕ ИЛИ _________RB7 ��>| A1 VCC |��� 14 Начальная установка входов

RB6 ��>| A2 D1 |<�� RD2 A1,A2,B1,B2,C1,C2,D1,D2 = 1

RB5 <��| A3 D2 |<�� RD3 A3 = A1 ^ A2

RB4 ��>| B1 D3 |��> RD1 B3 = B1 ^ B2

RB1 ��>| B2 C1 |<�� RD0 C3 = C1 ^ B2

RB0 <��| B3 C2 |<�� RD6 D3 = D1 ^ D2

7 ���| GND C3 |��> RD5

~~~~~~~~~

LE4 (027) 3 дизъюнктора с инверсией _________RB7 ��>| A1 VCC |��� 14 Начальная установка входов

RB6 ��>| A2 A3 |<�� RD2 A1,A2,A3,B1,B2,B3,C1,C2,C3 = 0

RB5 ��>| B1 A4 |��> RD3 A4 = !(A1 | A2 | A3)

RB4 ��>| B2 C1 |<�� RD1 B4 = !(B1 | B2 | B3)

RB1 ��>| B3 C2 |<�� RD0 C4 = !(C1 | C2 | C3)

RB0 <��| B4 C3 |<�� RD6

7 ���| GND C4 |��> RD5

~~~~~~~~~

LI6 (021) 2 конъюнктора _________RB7 ��>| A1 VCC |��� 14 Начальная установка входов

RB6 ��>| A2 B1 |<�� RD2 A1,A2,A3,A4,B1,B2,B3,B4 = 1

���| B2 |<�� RD3 A5 = A1 & A2 & A3 & A4

RB4 ��>| A3 |��� B5 = B1 & B2 & B3 & B4

RB1 ��>| A4 B3 |<�� RD0

RB0 <��| A5 B4 |<�� RD6

7 ���| GND B5 |��> RD5

~~~~~~~~~

Page 45: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

45

Приложение 4

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

555LA3 4 конъюнктора с инверсией типа A3 = !(A1 & A2)Входы – A1, A2, B1, B2, C1, C2, D1, D2Выходы – A3, B3, C3, D3Исходное состояние – A1, A2, B1, B2, C1, C2, D1, D2 = 1555LP5 4 схемы ИСКЛЮЧАЮЩЕЕ ИЛИ типа A3 = A1 ̂ A2Входы – A1, A2, B1, B2, C1, C2, D1, D2Выходы – A3, B3, C3, D3Исходное состояние – A1, A2, B1, B2, C1, C2, D1, D2 = 0555LE4 3 дизъюнктора с инверсией типа A4 = !(A1 | A2 | A3)Входы – A1, A2, A3, B1, B2, B3, C1, C2, C3Выходы – A4, B4, C4Исходное состояние – A1, A2, A3, B1, B2, B3, C1, C2, C3 = 0555LI6 2 конъюнктора типа A5 = A1 & A2 & A3 & A4Входы – A1, A2, A3, A4, B1, B2, B3, B4Выходы – A5, B5Исходное состояние – A1, A2, A3, A4, B1, B2, B3, B4 = 1555ID7 Дешифратор 3*8Входы – A0, A1, A2, E0, E1, E2Выходы – Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7Исходное состояние – A0, A1, A2, E0, E1 = 0 E2 = 1Активный выход один (низкий уровень)При увеличении кода A2–0 = 000, ..., 111 активный выход сме�

щается от Y0 до Y7.При E2–0 != 100 все выходы неактивны (высокий уровень)555IE7 4�разрядный счетчикВходы – R, PE, C+, C–, D0, D1, D2, D3Выходы – Q0, Q1, Q2, Q3, P+, P–Исходное состояние – R, PE, D0, D1, D2, D3 = 0C+, C– = 1По импульсу R=1,0 сброс Q3–0 = 0000.По импульсу инкремента C+ = 0,1 код Q3–0 увеличиваетcя на 1По импульсу декремента C– = 0,1 код Q3–0 уменьшается на 1По импульсу PE = 1,0 загрузка Q3–0 = D3–0555IR11 4�разрядный сдвиговый регистрВходы – R, C, DSR, DSL, S1, S0, D3, D2, D1, D0Выходы – Q3, Q2, Q1, Q0Исходное состояние – R, DSR, DSL, S1, S0 = 1 C, D3, D2, D1, D0 = 0

Page 46: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

46

По импульсу R=0,1 сброс Q3–0 = 0000При S1–0 = 11 по импульсу C=1,0 загрузка Q3–0 = D3–0При S1–0 = 01 по импульсу C=1,0 левый сдвиг Q3–1 = Q2–0,

Q0=DSLПри S1–0 = 10 по импульсу C=1,0 правый сдвиг Q2–0 = Q3–1,

Q3=DSR555IR16 4�разрядный сдвиговый регистрВходы – OE, C, SI, PE, D3, D2, D1, D0Выходы – Q3, Q2, Q1, Q0Исходное состояние – OE, C, SI = 1PE, D3, D2, D1, D0 = 0Если PE = 1, по импульсу C=0,1 загрузка Q3–0 = D3–0Если PE = 0, по импульсу C=0,1 сдвиг Q3–1 = Q2–0, Q0 = SIПри OE = 0 выходы Q3–0 отключаются (третье состояние)555IR8 8�разрядный сдвиговый регистрВходы – R, C, DA, DBВыходы – Q7, Q6, Q5, Q4, Q3, Q2, Q1, Q0Исходное состояние – R, DA, DB = 1 C = 0По импульсу R=0,1 сброс Q7–0 = 00000000По импульсу C=1,0 сдвиг Q7–1 = Q6–0, Q0 = (DA & DB)555TM9 6 триггеровВходы – R, C, D1, D2, D3, D4, D5, D6Выходы – Q1, Q2, Q3, Q4, Q5, Q6Исходное состояние – R, D1, D2, D3, D4, D5, D6 = 1 C = 0По импульсу R=0,1 сброс Q6–1 = 000000По импульсу C=1,0 загрузка Q6–1 = D6–1561IE8 счетчик�дешифраторВходы – R, C, ECВыходы – Q0, Q1, ..., Q9, PИсходное состояние – R, EC = 0 C = 1Активный выход (по высокому уровню) только одинПо импульсу сброса R=1,0 Q0 = 1(активный выход) Q1, Q2, ...,

Q9 = 0По импульсу инкремента C = 0,1 активный выход смещается по

циклу Q1, Q2, ..., Q9, Q0, Q1, ...Установка EC = 1 блокирует импульс инкремента

Page 47: Применение микроконтроллеров в системах управления и контроля Методические указания к выполнению

47

Библиографический список

1. Ульрих В. А. Микроконтроллеры PIC16C7X: Справочник. СПб.: Наукаи техника, 2000. 253 с.

2. Астапкович А. М. и др. Архитектура однокристальных микроконт�роллеров: Метод. указ. к самостоятельной работе/ГУАП. СПб., 1997.

СОДЕРЖАНИЕ

Лабораторная работа № 1.Система команд микроконтроллера PIC16С7Х ........................ 3Лабораторная работа № 2.Программирование на Ассемблере содержательной задачи микро�контроллера PIC16С7Х ....................................................... 18Лабораторная работа № 3.Взаимодействие микроконтроллера PIC16С7Х с внешними уст�ройствами .......................................................................... 24Приложения ...................................................................... 37Библиографический список .................................................. 47