Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Фрагмент 6.4. Определение равенства чисел и его применение.
Пусть к битам регистра PORTD, настроенного на ввод информации в ЦПУ, подключены: конечный выключатель ограждения окрасочной камеры (бит 3), датчик наличия заготовок (бит 2), датчик наличия заданной температуры в камере (бит 0). В этом случае предварительная звуковая сигнализация S1, присоединенная к нулевому биту PORTC, должна включиться при значении «1» в этих битах информации, что определяется фрагментом программы описанным ниже. Clrf PORTC Movlw b’11011101’; информация пересланная в PORTD. Movwf R1; регистр хранящий информацию из PORTD. Movlw b’00001101’; жирным выделены интересующие нас биты 0, 2, 3. Movwf Maska; число для маски, примененной в операции XOR. Movlw b’00001101’; маска для операции AND. Andwf R1, W; все биты кроме 0, 2, 3 обнуляем. Xorwf Maska, w; проверяем записаны ли в этих битах единицы. Movlw b’10000001’; предполагаем что да, тогда надо включить сирену. Btfss STATUS, Z; равно ли преобразованное число из PORTD маске? Movlw b’10000000’; если Z=0 (число равно маске) не включать сирену. Movwf PORTC Подготовьте программу, выполняющую маскирование на основе приведенных фрагментов для варианта из таблицы 6.2. Запишите результаты в таблицу 6.1. Не забудьте создать окно наблюдения за значениями всех регистров.
Т а б л и ц а 6.2 – Варианты заданий
6.3 Контрольные вопросы
1. Расскажите, какую реальную задачу решает ваша программа. 2. Как очистить нечетные разряды числа? 3. Какой логической функцией устанавливают в разряды единицы? 4. Какой логической функцией определяют равенство чисел? 5. Как очистить с 0 по 3 разряды? 6. Как установить с 4 по 7 разряды? 7. Зачем применяют логическую функцию Исключающее ИЛИ? 8. Укажите значение бита Z регистра STATUS после логической операции AND, если маска равна 00h? 9. Как инвертировать все нечетные биты в числе? 10. Проверка равенства определенных бит числа заданному значению? 11. Как оставить информацию только в битах 0-3 заданного числа? 12. Таблицы истинности для AND, OR, XOR.
13. Какое оборудование подключено к проверяемым битам?
Суммирование массива информации
Цель работы: использование косвенной адресации при создании программы суммирования массива. Определение среднего значения массива.
Теоретические сведения
Суммирование применяется для различных целей: подсчета количества поступивших изделий, определение средней температуры за расчетный период времени и других. Циклические структуры организуются с помощью операторов условий совместно с оператором перехода. В предыдущих лабораторных работах мы применяли абсолютную адресацию, при этом адрес регистра записывается непосредственно в инструкцию. Здесь будем применять косвенную адресацию при которой в инструкцию записывается указатель адреса, который может меняться в процессе выполнения программы. Изучите способы организации программ с косвенной адресацией на примере приведенных ниже фрагментов. Регистр FSR, являющимся просто указателем, хранит адрес ячейки, к которой происходит обращение через имя формально существующего регистра INDF. Исходные данные Задача. В массив записано потребление энергии по месяцам. Требуется определить суммарный расход энергии за указанный период и средний расход энергии в месяц. Блок-схема алгоритма представлена на рисунке 7.1.
Рисунок 7.1 – Блок-схема
Фрагменты программы.
Include<p16f877.inc> EL_MAS_1 EQU h'41' EL_MAS_2 EQU h'42' EL_MAS_3 EQU h'43'; последний элемент массива. IND_EL_MAS EQU h'50'; индекс прибавляемого элемента массива. SHAG EQU h'22'; шаг изменения данных. KOL_EL EQU h'44'; регистр хранения количества элементов массива. SUM EQU h'51'; регистр хранения суммы. SREDNEE EQU h'52'; регистр для хранения среднего расхода энергии. ; Стандартные операции настройки МК опущены. ; Заполнение массива MOVLW D'2' MOVWF SHAG MOVLW D'11' MOVWF EL_MAS_0 ADDWF SHAG, W; W= EL_MAS_0+SHAG MOVWF EL_MAS_1 ADDWF SHAG, W; W= EL_MAS_1+SHAG MOVWF EL_MAS_2 ADDWF SHAG, W; W= EL_MAS_2+SHAG MOVWF EL_MAS_3 CLRF SUM CLRF IND_EL_MAS MOVLW D'4'; количество элементов массива. MOVWF KOL_EL MOVLW EL_MAS_0; запись в аккумулятор адреса регистра EL_MAS_0. MOVWF FSR; запись в регистр FSR адреса первого регистра массива. NEXT_ELEM
MOVF SUM, W ADDWF INDF, W; сложить W и текущий элемент массива. MOVWF SUM; запоминаем полученную сумму. ; Подготовка к следующему циклу INCF FSR, F; переход к адресу следующего регистра массива. INCF IND_EL_MAS, F; фиксируем индекс следующего элемента. MOVF KOL_EL, W XORWF IND_EL_MAS, W; проверяем индекс элемента равен 4? BTFSS STATUS, Z; проверка – все элементы суммировали (Z=1)? GOTO NEXT_ELEM; только если Z =0, повторяем цикл. ; Подготовка вычисления среднего значения MOVF SUM, W; если Z=1, все элементы сложили, запоминаем сумму. MOVWF SREDNEE; копируем SUM в SREDNEE. END
Выполните самостоятельно деление на 4 регистра SREDNEE с помощью его сдвигов вправо для определения среднего значения. Количество повторений в цикле определяется следующим образом. Сначала записывается количество элементов в регистр Kol_El. Затем при каждом повторе цикла, увеличиваем индекс элемента в регистре и проверяем, получен ли ноль командой XORWF IND_EL_MAS, W, (здесь W= Kol_El). Поскольку регистр с индексом 4 будет лишним, выходим из цикла. Блок-схема программы приведена на рисунке 7.1. В ней предполагается, что в массив занесены данные.
7.3 Выполнение задания
Используя приведенный фрагмент, подготовьте программу по варианту из таблицы 7.2. Результаты занесите в таблицу 7.1.
Т а б л и ц а 7.1– Сумма массива и среднее массива
Т а б л и ц а 7.2 – Варианты заданий
7.4 Контрольные вопросы 1. БитыStatus меняющие свои значения при операциях вычислений? 2. Поясните команду условного перехода BTFSS STATUS, Z. 3. Поясните команду XORWF IND_EL_MAS, W. 4. Как можно определить равенство чисел? 5. Какие способы адресации вы знаете? 6. Как контролируется в цикле выход за пределы массива? 7. Назначение регистра FSR. 8. Назначение регистра INDF. 9. Как находится среднее четырех регистров? 10. Как выполняется деление на четыре? 11. Зачем очищается регистр IND_EL_MAS перед циклом сложения? 12. Какое участие принимает бит C регистра Statusв операции сдвига?
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-01-25; просмотров: 124; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.219.63.90 (0.011 с.) |