Ld pointer,a ;загрузить в pointer содержимое аккумулятора
Отчет по лабораторной работе № 7 Изучение системы команд микроконтроллеров ST7 по дисциплине «Микропроцессорные средства систем управления»
Выполнили: Чижов В.И. Группа: Р-38011 Преподаватель: Мокрецов В.П.
Екатеринбург 2011 ЦЕЛЬ РАБОТЫ Целью работы является изучение системы команд и способов адресации микроконтроллеров семейства ST7 корпорации STMicroelectronics и применение команд при программировании различных операций, а также изучение подсистемы прерываний и параллельных портов ввода-вывода данных. ЗАДАНИЕ 1 Таблица 1. Операции, способы адресации, выбранная команда и ее выполнение
ЗАДАНИЕ 2 Программа должна установить первый разряд числа в ячейке памяти 0110h в 1, сбросить пятый разряд в 0 и инвертировать седьмой разряд. Используйте команды логических операций AND, OR и XOR. Составьте контрольный пример для отладки программы. Текст программы: st7/ TITLE "myprog.asm" MOTOROLA #include "ST7Lite2.INC" ;************************************************************* ; Объявление переменных в 'ram0' части памяти (ОЗУ) ;*************************************************************
BYTES segment byte 'ram0' ;------------------------------------------------------------ ;************************************************************ ; Раздел объявления констант и переменных ;*********************************************************** one ds.b 1 two ds.b 1 three ds.b 1 ;************************************************************* ; Объявление переменных в 'r0m' части памяти (ОЗУ) ;************************************************************* WORDS segment byte 'rom' ;************************************************************* ; Раздел объявления подпрограмм ;************************************************************* ;************************************************************* ; Основная часть программы ;************************************************************* main: RSP ld a,#$01 ld one,a ld a,$0110 or a,one ; первый разряд числа устанавливаем в 1 ld $0110,a ;------------------------------------------------------------- ld a,#$EF ld two, a ld a,$0110 and a,two ; сбасываем пятый разряд в 0 ld $0110,a ;------------------------------------------------------------ ld a,#$40 ld three,a ld a,$0110 xor a,three ; инвертируем седьмой разряд ld $0110,a ret ;************************************************************ ; Раздел объявления подпрограммы прерывания ;************************************************************ dummy_rt: IRET ; Пустая процедура для возврата ; в основную программу
;************************************************************ ; Объявление векторов прерывания ;************************************************************
segment 'vectit'
DC.W dummy_rt ; Address FFE0-FFE1h SPI_it DC.W dummy_rt ; Address FFE2-FFE3h lt_RTC1_it DC.W dummy_rt ; Address FFE4-FFE5h lt_IC_it DC.W dummy_rt ; Address FFE6-FFE7h at_timerover_it DC.W dummy_rt ; Address FFE8-FFE9h at_timerOC_it DC.W dummy_rt ; Address FFEA-FFEBh AVD_it DC.W dummy_rt ; Address FFEC-FFEDh DC.W dummy_rt ; Address FFEE-FFEFh lt_RTC2_it DC.W dummy_rt ; Address FFF0-FFF1h ext3_it DC.W dummy_rt ; Address FFF2-FFF3h ext2_it DC.W dummy_rt ; Address FFF4-FFF5h ext1_it DC.W dummy_rt ; Address FFF6-FFF7h ext0_it DC.W dummy_rt ; Address FFF8-FFF9h AWU_it DC.W dummy_rt ; Address FFFA-FFFBh softit DC.W dummy_rt ; Address FFFC-FFFDh reset DC.W main ; Address FFFE-FFFFh END
ЗАДАНИЕ 3 (12 вариант) Требуется выполнить логическую функцию четырех переменных F(x0,x1,x2,x3), принимающую значение «истина» на термах 00h, 02h, 03h, 04h, 05h, 06h. Входные переменные вводятся из порта PА или порта PВ. Для вызова программы выполнения логической функции используйте внешнее прерывание, вызываемое сигналом на линии порта. Задачу предлагается выполнить двумя способами. Способ 1. В памяти задается таблица значений функции для всех 16 значений переменных. Если по текущему значению аргумента обратиться к ячейке таблицы, то сразу получим значение функции. Этот способ очень быстрый, но требует хранить в памяти таблицу значений функции Входная переменная input находится в ячейке памяти 80h. Указатель на начало таблицы терм pointer находится в ячейке 81h. Таблица термы размещена по адресам 90h – 9Fh. Значение функции записывается в ячейку памяти 85h. Текст программы: st7/ TITLE "myprog.asm" MOTOROLA #include "ST7Lite2.INC" ;************************************************************* ; Объявление переменных в 'ram0' части памяти (ОЗУ) ;************************************************************* BYTES segment byte 'ram0' ;------------------------------------------------------------ ;************************************************************ ; Раздел объявления констант и переменных ;*********************************************************** Input ds.b 1 Pointer ds.b 1 ;************************************************************* ; Объявление переменных в 'r0m' части памяти (ОЗУ) ;************************************************************* WORDS segment byte 'rom' ;************************************************************* ; Раздел объявления подпрограмм ;************************************************************* term_loading_prog: ld a,#$00 ; загрузить в аккумулятор 00h ld $0110,a ; загрузить содержимое аккумулятора в ОЗУ ld a,#$02 ; загрузить в аккумулятор 02h ld $0111,a ; загрузить содержимое аккумулятора в ОЗУ ld a,#$03 ; загрузить в аккумулятор 03h ld $0112,a ; загрузить содержимое аккумулятора в ОЗУ ld a,#$04 ; загрузить в аккумулятор 04h ld $0113,a ; загрузить содержимое аккумулятора в ОЗУ ld a,#$05 ; загрузить в аккумулятор 05h ld $0114,a ; загрузить содержимое аккумулятора в ОЗУ ld a,#$06 ; загрузить в аккумулятор 06h ld $0115,a ; загрузить содержимое аккумулятора в ОЗУ ;************************************************************* loading_main: ld a,#$03 ; загрузить 03h в аккумулятор (исследуемая переменная) Ld input, a; загрузить содержимое аккумулятора в input ld a, #$05; установить значение счетчика ld pointer,a ;загрузить в pointer содержимое аккумулятора Ret ; Основная часть программы ;************************************************************* main: RSP
Популярное: Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Почему стероиды повышают давление?: Основных причин три... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (369)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |