Методические указания для практических занятий по дисциплине мдк. 02. 01
Скачать 7.37 Mb.
|
Практическая работа №35. Микроконтроллеры семейства МК51 (типы операндов). Цель работы: изучить систему команд 8-разрядного микроконтроллера семейства МК51, а также программно-логическую модель МК-51 и работу с ней. Теоретические сведения. 187 Микроконтроллер имеет 111 базовых команд передачи данных, арифметических и побитных операций, передачи управления и операций с битами. Большинство команд выполняются за 1 или 2 машинных цикла при fтак=12Mгц и длительности машинного цикла 1 мкс. Первый байт команды всегда содержит код операции (КОП), второй и третий байты - либо адреса операндов, либо непосредственные операнды. Перечень команд МК-51 приводится в таблице 4. Таблица 4 - Система команд Мнемокод КОП Мнемокод КОП Мнемокод КОП ACALL 0ххН 11 AJMP 5XXH A1 DA A D4 ACALL 1xxH 31 AJMP 6XXH C1 DEC A 14 ACALL 2xxH 51 AJMP 7XXH El DEC ad 15 ACALL 3ххН 71 ANL A , ad 55 DEC R0 18 ACALL 4xxH 91 ANL A, R0 58 DEC R1 19 ACALL 5xxH B1 ANL A, R1 59 DEC R2 1A ACAlL 6xxH D1 ANL A, R2 5A DEC R3 1B ACALL 7xxH FI ANL A, R3 SB DEC R4 1С ADD A, ad 25 ANL A, R4 5C DEC R5 1D ADD A, R0 28 ANL A, R5 5D DEC R6 1E ADD A , R1 29 ANL A, R6 5E DEC R7 1F ADD A, R2 2A ANL A, R7 5F DEC @R0 16 ADD A, R3 2B ANL A, @R0 56 DEC @R1 17 ADD A, R4 2C ANL A, @R1 57 DIV AВ 84 ADD A, R5 2D ANL A, #d 54 DJNZ ad, rel D5 ADD A, R6 2E ANL ad, A 52 DJNZ R0, rel D8 ADDA, R7 2F ANL ad, #d S3 DJNZ R1, rel D9 ADD A, @R0 26 ANL C, bit 82 DJNZ R2, rel DA ADD A, @R1 27 ANL C, /bit BO DJNZ R3, rel DB ADD A, #d 34 CJNE A, ad, rel B5 DJNZ R4, rel DC ADDC A, ad 35 CJNE A, #d, rel B4 DJNZ R5, rel DD ADDC A, R0 38 CJNE R0, #d, rel B8 DJNZ R6, rel DE ADDC A, R0 39 CJNE R1, #d, rel B9 DJNZ R7, rel DF ADDC A, RO ЗА CJNE R2, #d, rel BA INC a 04 ADDC A , R0 3B CJNE R3, #d, rel BB INC ad 05 ADDC A, R0 ЗС CJNE R4, #d, rel ВС INC DPTR A3 ADDC A, R0 3D CJNE R5, #d, rel BD INC R0 08 ADDC A, R0 3E CJNE R6, #d , rel BE INC R1 09 ADDC A , R0 3F CJNE R7 , #d, ret BF INC R2 OA ADDC A, @R0 36 CJNE @R0, #d, rel B6 INC R3 OB ADDC A, @R1 37 CJNE @R1, #d, rel B7 INCR4 0С ADDC A, #d 24 CLR A E4 INC R5 0D AJMP 0XXH 01 CLR bit C2 INC R6 0E AJMP 1XXH 21 CLR C C3 INC R7 OF AJMP 2XXH 41 CPL A F4 INC @R0 06 188 AJMP 3XXH 61 CPL bit B2 INC @R1 07 AJMP 4XXH 81 CPL С B3 JB bit, rel 20 JBC bit, rel 10 Продолжение таблицы 2 Мнемокод КОП Мнемокод КОП Мнемокод КОП JC rel 40 MOV ad , @R0 86 MOV R7 , ad AF JMP@A+DPTR 73 MOV ad, @R1 87 MOV R7, #d 7F JNB bit , rel 30 MOV ad, #d 75 MOV @R0 , A F6 JNC rel 50 MOV ad, ads 85 MOV@R0, ad A6 JNZrel 70 MOV bit, C 92 MOV@R0, #d 76 JZ rel 60 MOV C, bit A2 MOV @R1 , A F7 LCALL ad16 12 MOV DPTR, #dl6 90 MOV@R1, ad A7 LJMP ad 16 02 MOV R0, A F8 MOV @R1, #d 77 MOV A , ad E5 МОV R0, ad A8 MOVC A, @+DPTR 93 MOV A , RO E8 MOV R0, #d 78 MOVC A , @+PC 83 MOV A, R1 E9 MOV R1 , A F9 MOVX A , @DPTR EO MOV A , R2 EA MOV R1 , ad A9 MOVX A, @R0 E2 MOV A , R3 EB MOV Rl , #d 79 MOVX A, @R1 E3 MOV A , R4 EC MOV R2, A FA MOVX @DPTR, A F0 MOV A , R5 ED MOV R2, ad AA MOVX @R0 , A F2 MOV A , R6 ЕЕ MOV R2, #d 7A MOVX @R1, A F3 MOV A , R7 EF MOV R3 , A FB MUL AB A4 MOV A , @R0 Е6 MOV R3 , ad AB NOP 00 MOV A, @R1 E7 MOV R3 , #d 7B ORL A , ad 45 MOV a , #d 74 MOV R4, A FC ORL A , R0 48 MOV ad , A F5 MOV R4 , ad AC ORL A, R1 49 MOV ad , R0 88 MOV R4, #d 7C ORL A, R2 4A MOV ad , R1 89 MOV R5, A FD ORL A , R3 4B MOV ad , R2 8A MOV R5 , ad AD ORL A, R4 4C MOV ad, R3 8B MOV R5 , #d 7D ORL A, R5 4D MOV ad , R4 8C MOV R6 , A FE ORL A, R6 4E MOV ad , R5 8D MOV R6, ad AE ORL A, R7 4F MOV ad , R6 8E MOV R6, #d 7E ORL A, @R0 46 MOV ad , R7 8F MOV R7 , A FF ORL A , @R0 47 ORL A, #d 44 RRC A 13 SUBB A , R7 9F ORL ad , A 42 SETB bit D2 SUBB A , @R0 96 ORL ad , #d 43 setb c D3 SUBB A, @R1 97 ORL С , bit 72 SJMP rel 80 SWAP A C4 ORL С, /bit АО SUBB A, ad 95 XCH A , ad C5 POP ad DO SUBB A, R0 98 XCH A, R0 C8 189 PUSH ad CO SUBB A, R1 99 XCH A, R1 C9 RET 22 SUBB A , R2 9A XCH A , R2 CA RETI 32 SUBB A , R3 9B XCH A , R3 CB RL A 23 SUBB A, R4 9C XCH A , R4 CC RLC A 33 SUliB A , R5 9D XCH A , R5 CD RR A 03 SUBB A, R6 9E XCH A , R6 CE XCH A, R7 CF XRL A, R1 69 XRL A , R7 6F XCH A, @R0 06 XRL A, 6A XRL A , @)R0 66 XCH A, @Rl C7 XRL A, R3 6B XRL A, @R1 67 XCHD A, @R0 D6 XRL A, R4 6C XRL A, #d 64 XCHD A, @R1 D7 XRL A, R5 6D XRL ad , A 62 XRL A, ad 65 XRL A , R6 6E XRL ad, #d 63 XRL A, R0 68 Программно-логическая модель МК-51 и работа с ней Программно-логическая модель микроконтроллера K18I6BE51 реализуется с использованием PC. Программа SCM (Single-Chip Machine) представляет собой систему моделирования однокристальных микроконтроллеров. Система моделирования Single-Chip Machine 1.22 предназначена для исследования поведения внутренних и внешних сигналов указанных микросхем. Программа SCM (Single-Chip Machine) выполнена в виде независимого запускаемого модуля, работоспособного под управлением операционной системы MS Window NT/XP. SCM включает средства отладки и редактирования программ на ассемблере. Выполнение программы пользователя осуществляется с максимальным приближением к действительности с помощью имитационной модели. Кроме того, пользователю предоставляется такие средства, как временные диаграммы внутренних и внешних сигналов, имитация внешних сигналов, возможность изменения значений узлов МК в процессе работы модели и др. Пользователь набирает программу в редакторе программ, затем нажимает кнопку “компиляция”. Текст программы переводится в машинные коды и записывается в одноименный файл (с исходным текстом) с расширением “.MPM”. Расширение “.MPM”, расшифровывается как Microcontroller Program Memory, однако существует стандартный формат представления памяти программ - так называемый формат HEX. Программа обеспечивает: выполнение прикладной программы для ОЭВМ в пошаговом режиме, в режиме прогона с остановом по контрольным точкам; доступ ко всем внутренним ресурсам ОЭВМ, внешней памяти программ и данных. Практическая часть. Ход работы: 1. Изучение программы эмулятора SCM. 2. Запуск программы. Знакомство и изучение основного меню программы, ознакомление с возможностями и способами редактирования внутренних и внешних ресурсов эмулятора. 3. Изучение процесса программирования микроконтроллера, ввода и отладки программ, и также их выполнения. 4. Запуск программы - эмулятора и практическое закрепление полученных знаний. Контрольные вопросы: 1. Архитектура микроконтроллера. Основные узлы и блоки. 2. Максимальный объем ОЗУ и ПЗУ, используемый данным контроллером. 190 3. Способы редактирования с помощью программы - эмулятора ОЗУ, ПЗУ, системных ресурсов. 4. Команды выполнения программы. Результаты выполнения. 5. Возможности отладки МПУ. 6. Между какими частями микроконтроллера осуществляется передача данных. 7. Методы адресации, используемые в ОЭВМ. 8. Типы портов микроконтроллера. 9. Как происходит адресация внешнего ОЗУ и ПЗУ? Практическая работа №36. Исследование логических элементов (система прерываний). Цель работы: исследование системы прерываний микроконтроллеров семейства MCS-51 с помощью персонального компьютера и программных средств отладки. Практическая часть 1. Зафиксировать содержимое регистров, флагов и ячеек памяти микроконтроллера после загрузки эмулятора (avsim51 -c1 a). Чему равно содержимое указателя стека? Разрешены ли прерывания? На какой режим настроены таймеры? Какая установлена скорость выполнения программы? 2. Составить комментарий к программе преобразования двоичного числа, задаваемого на линиях порта Р1, в двоично-десятичное содержимое регистра DPTR: MOV A,P1 MOV B,#100 DIV AB MOV DPH,A MOV A,#10 XCH A,B DIV AB SWAP A ORL A,B MOV A,B В режиме Patch Code ввести текст программы в эмулятор и проверить ее работу в пошаговом (F10) режиме. Как выполняется команда деления? Какие флаги PSW изменяются при выполнении программы? 3. Записать в первые две ячейки памяти программ программу, состоящую из одной команды SJMP 0 (80 FE), и запустить ее на выполнение в автоматическом режиме. Почему не работают таймеры Т/С0 и Т/С1? Установив TR0=1, проверить работу Т/С0 в режиме таймера (скорость счета изменяется клавишей F5) и счетчика событий (TMOD.2=1). Перепады на линии Т0 (Р3.4) формировать с помощью клавиши Insert. В каком диапазоне изменяется содержимое регистров TL0 и TH0 при работе T/C0 в режиме 0? Когда устанавливается флаг TF0? Проверить работу Т/С1 в режиме 1. Установив TR1=1 и GATE1=1, проверить возможность аппаратного управления работой таймера уровнем сигнала на входе INT1 (P3.3). Перевести Т/С0 в режим 2 (8-битный автоперезагружаемый таймер/счетчик). Установив (ТН0)=0D5H, проследить работу Т/С0 в режиме таймера и счетчика событий. Перевести Т/С0 в режим 3 (TL0 и ТН0 функционируют как два независимых 8-битных счетчика). Возможно ли в этом режиме использование прерываний от Т/С1? 4. В режиме Patch Code ввести в эмулятор текст программы, при реализации которой регистры R0, R1, R2, R3, R4 фиксируют число выполнения подпрограмм обслуживания прерываний от различных источников, а аккумулятор работает в режиме двоичного счетчика: 191 ORG 00H INC A SJMP 0 ORG 03H INC R0 RETI ORG 0BH INC R1 RETI ORG 13H INC R2 RETI ORG 1BH INC R3 RETI ORG 23H INC R4 CLR SCON.0 CLR SCON.1 RETI Разрешить прерывания по входу INT0, установив в режиме окна ЕА=1 и ЕХ0=1. При работе программы в автоматическом режиме исследовать различие механизма обработки прерывания при IT0=0 и IT0=1 (по уровню и по срезу Р3.2). Разрешить прерывания и по входу INT1. При IT0=IT1=0 установить INT0=INT1=0 и запустить программу. Почему не выполняется подпрограмма обслуживания прерываний по входу INT1? Повторить работу программы, установив в регистре приоритетов прерываний РХ1=1. Разрешить все прерывания. Установить TR0=TR1=IT0=IT1=1. Запустить программу на выполнение. Убедиться, что периодически выполняются подпрограммы обслуживания прерываний по переполнению таймеров. Что происходит при изменении содержимого буферных регистров приемника и передатчика последовательного порта SBUF? Проимитировать внешние прерывания по входам INT0 и INT1. Остановить выполнение программы. Установить все флаги прерываний (IE0, IE1, TF0, TF1, RI и TI). Продолжить выполнение программы в пошаговом режиме. Объяснить поведение микроконтроллера. В какой момент сбрасываются флаги IE0, IE1, TF0, TF1(при передаче управления подпрограмме обслуживания или по команде RETI)? Повторить эксперимент, установив в регистре приоритетов PS=1. Объяснить новую последовательность выполнения подпрограмм обслуживания прерываний. Что будет, если при выполнении подпрограммы обслуживания прерываний пришел запрос прерываний с большим приоритетом? Нужно ли сбрасывать программно флаги TF0, TF1, RI и TI? 5. Испытать на эмуляторе работу следующей программы, формирующей в аккумуляторе двоично-десятичный код длительности импульса (единицы и десятые доли мс) на входе INT0: ORG 00H ; RESET MOV TH0,#156 ; Загрузка регистров Т/С0 MOV TL0,#0 MOV TMOD,#0AH ; Настройка Т/С0 на режим 2 SJMP M1 ORG 0BH ; Вектор прерывания от Т/С0 192 ADD A,#1 ; Подпрограмма обслуживания DA A ; прерываний RETI ; Возврат из подпрограммы M1: CLR A ; Очистка аккумулятора MOV IE,#82H ;Разрешение прерываний от Т/С0 SETB TR0 ; Запуск таймера Т/С0 SJMP $ ; Зацикливание программы Начиная с адреса 0ВН записана подпрограмма обслуживания прерываний по таймеру Т/С0. После каждого переполнения таймера (т.е. через каждые 100 мкс при частоте кварца 12 МГц) содержимое двоично-десятичного счетчика, организованного в аккумуляторе, увеличивается на единицу. Основная программа начинается с нулевой ячейки, при выполнении обходит ячейки, занятые подпрограммой, и заканчивается командой SJMP $. Таймер Т/С0 настраивается на режим 8-разрядного счетчика с автоперезагрузкой и возможностью аппаратного запуска логической 1 на входе INT0 (перед запуском программы на этом входе надо зафиксировать логический 0). В регистр ТН0 загружается дополнительный код числа минус 100. Проимитировав на входе INT0 импульс длительностью 10 мс, измерить секундомером реальное время работы программы при наивысшей скорости (HI). Во сколько раз скорость воспроизведения программы с помощью эмулятора отличается от реального масштаба времени? Контрольные вопросы 1. Разрешены ли прерывания после системного сброса? 2. Может ли быть прервано выполнение программы обработки прерывания с высоким уровнем приоритета? 3. Транслировать команду JB ТF0,$+5. 4. Что происходит при выполнении команды CJNE A,#40,M1? 5. Какой флаг устанавливается после выполнения команды MOV SBUF,B? 6. Какими командами можно загрузить в Т/С0 дополнительный код числа 10000? Практическая работа №37. Параллельный интерфейс. Цель работы: изучение схем динамической и статической индикации Краткие теоретические сведения В состав интегральной микросхемы К580ВВ55 (ИМС) программируемого параллельного интерфейса входит: 1. устройство управления вводом-выводом; 2. двухнаправленнй буфер данных; 3. порты А и В, 8-ми разрядные регистры с шинными формирователями; 4. порт С, два 4-ех разрядных регистра с шинами формирователями; 5. регистр управляющего слова. Порт А и старшая половина порта С может объединятся в группу А. Порт В и младшая половина порта С может объединятся в группу В. Для обеспечения работоспособности ИМС необходимо записать управляющее слово. Формат управляющего слова инициализации. Управляющее слово инициализации определяет режим работы и направление передачи данных. Бит 193 D7 Определяет либо установку режимов работы каналов D7- "1", либо работу ППИ в режиме сброса/установки отдельных разрядов порта С D6 Режим 0 Режим 1 Режим 2 Группа А D5 D4 Вывод РА(7-0) Ввод РА(7- 0) D3 Вывод РС(7-4) Ввод РС(7-4) D2 Режим 0 Режим 1 Группа В D1 Вывод РВ(7-0) Ввод РВ(7-0) D0 Вывод РС(3-0) Ввод РС(3-0) Простейшими приборами отображения информации в цифровых устройствах являются светодиоды и цифровые индикаторы. Включение единичных индикаторов. В полупроводниковых светодиодах используется свойство p-n перехода излучать свет в видимой части спектра при протекании через него прямого тока (I пр =5-20мА, U пр =2-3В). Варианты включения индикаторов на рис5. Для отображения цифровой информации наибольшее распространение получили семи сегментные индикаторы, в которых изображение цифры составляют из семи линейных светодиодных сегментов расположенных в виде цифры 8. На основе светодиодов и семи сегментных индикаторов строятся подсистемы отображения информации. При построении подсистем отображения информации различают два подхода, динамическая и статическая индикация. Статическая индикация заключается в постоянной подсветке индикаторов HL1-n от одного источника информации рис.6. 194 DA – дешифратор адреса, необходим для выборки соответствующего регистра R1-R3- регистры, в которых временно хранится значение кода числа для отображения (соответствующий регистр выбирается DA). DC1-DC3 – семи сегментные дешифраторы, преобразующие двоичный код в семи сегментный код. HL1-HL3 – семи сегментные индикаторы. ШД – шина данных, по ней осуществляется передача данных на индикацию. Структурная схема статической индикации. В такой системе каждый индикатор HL1-n подключен через собственный дешифратор DC1-n и регистр-защелку RG1-n к шине данных, выборка регистров RG1-n производится при помощи селектора адреса СА. Аппаратные затраты при такой организации составляют n пар регистр + дешифратор при n десятичных разрядов индикатора. В стенде адресация реализована с помощью дешифратора микросхему КР555ИД7, выходные сигналыCS2, CS3, т.к. адреса индикаторов находятся в поле адресации внешней памяти данных, то для выборки используется сигнал WR с процессора. Микросхемы индикации КР490ИП2 содержат в себе регистр и семи сегментный дешифратор. Сущность динамической индикации заключается в поочередном циклическом подключении каждого индикатора HL1-n к источнику информации через общую шину данных, рис 7. Выборка индикатора осуществляется дешифратором DА. В регистре RD хранится цифровой код, предназначенный для отображения. В регистре RA хранится адрес индикатора. Структурная схема динамической индикации RD- регистр данных для временного хранения отображаемого числа либо символа. RA- регистр адреса для временного хранения двоичного кода адреса выбираемого индикатора. DA-для преобразования адреса задаваемого двоичным кодом а позиционный код. HL1-HL4- семи сегментные индикаторы. При таком включении значительно уменьшаются аппаратные затраты. Но необходимо обеспечить достаточное время свечения одного индикатора, для того чтобы не уменьшалась яркость. Также необходимо обеспечить такую частоту перебора индикаторов, чтобы не было заметно мерцание. Преимущества такого способа заметны при количестве десятичных разрядов индикации больше 5. 195 На стенде статическая индикация реализована на четырех статических семи сегментных двоично-десятичных индикаторах (HG1 – HG4). Обращение к ним производится, как к ячейкам памяти с адресами А000h , В000h. Передача данных на индикаторы осуществляется с ОЭВМ по шине данных AD(0-7). Сигналы выборки микросхем индикации CS2, CS2. Динамическая индикация реализована с помощью двух семи сегментных индикаторов HG2, HG3. Управление динамической индикацией осуществляется с помощью элементов DD4, DD3.4, DD3.5 (линия данных А,B,C,D,E,F,G,H, -РВ0, РВ1, РВ2, РВ3, РВ4, РВ5, РВ6 ,РВ7) сигналы поступают с порта РВ микросхемы параллельного приемопередатчика DD10 (см. схему электрическую стенда приложение 1) , сигналы выборки соответствующего индикатора поступают от линии порта РС микросхемы DD10 к транзисторам VT2 и VT3. Также на плате расширения установлены матрица 5х7 светодиодов HG1, и линейка светодиодов HL1-HL8. Светодиоды зажигаются записью логических единиц в соответствующие разряды порта РА микросхемы параллельного приемопередатчика DD10. Управление светодиодной матрицей осуществляется по линиям РА0-РА4 параллельного приемопередатчика DD10 и Р1.0-Р1.6. Например для того чтоб засветить точку с координатами [1;1] необходимо вставить уровень логической единицы на линии РА0, и уровень логического нуля на линии Р1.0. |