Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Лабораторная работа 7. Суммирование значений массива





 

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

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

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

Организация программ с косвенной адресацией для суммирования приведена во фрагменте 7.1. Регистр FSR хранит адрес ячейки, к которой происходит обращение через имя формально существующего регистра INDF. Инструкция INCF увеличивает значение регистра на единицу.

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

Фрагмент программы 7.1 предназначен для сложения массива чисел, расположенных в регистрах по адресам 4Сh…4Fh. В программе для проверки окончания массива используется адрес следующего регистра 50h.

Фрагмент 7.1. Суммирование массива.

REG1 EQU h’4C’; Первый регистр массива.

………….; Во все регистры массива запишем далее число 11.

MOVLW REG1; Запись адреса первого регистра массива
; с символьным именем REG1 в регистр W.

MOVWF FSR; Запись в регистр FSR адреса первого регистра массива.

CLRF W; Очистка рабочего регистра W перед суммированием.

NEXT; Метка для организации цикла.

ADDWF INDF, 0; Сложение значения регистра W и регистра, адрес
; которого записан в регистре FSR.

; с сохранением результата в рабочем регистре W.

INCF FSR, 1; Увеличение значения адреса в FSR на единицу.

BTFSS FSR, 4; Проверка – выполнено? Дошли до адреса 50h?

GOTO NEXT; Если нет, то переходим на метку NEXT,

MOVWF PORTC; если да, то выводим сумму на светодиоды.

Чтобы определить в каком бите следует проверять появление ‘1’, рекомендуется все адреса регистров записать в двоичной форме в таблицу 7.1.

Т а б л и ц а 7.1 - Адреса

Форма ‘h’ Форма ‘b’
4D  
4E  
4F  
  010 1 0000

Результаты работы программы записаны в таблице 7.2.

Аналогично пишется программа для очистки массива информации в оперативной памяти.

Используя приведенный фрагмент, подготовьте программу по варианту из таблицы 7.3, выполняющую сложение указанных регистров. Результаты занесите в таблицу 7.2.

Т а б л и ц а 7.2– Результаты суммирования массива

Вариант Адрес регистра массива, указываемый в FSR Число в регистре массива Сумма в регистре W
Форма h Форма В Форма h Форма В
  4C   0Bh 0Bh  
  4D   0Bh 16h  
  4E   0Bh 21h  
  4F   0Bh 2Ch  

Т а б л и ц а 7.3 – Варианты заданий

Вариант Адреса регистров массивов Вариант Адреса регистров массивов
  20h - 23h   34h - 37h
  24h - 27h   40h - 43h
  28h -2Bh   44h - 47h
  2Ch -2Fh   54h - 57h
  30h -33h   60h – 63h
         

 

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

1. Расскажите какую реальную задачу решает ваша программа

2. Какие разряды регистра status меняют свои значения при логических и математических операциях?

3. Поясните инструкцию условного перехода BTFSC.

4. Поясните инструкцию условного перехода BTFSS.

5. Какую функцию используют, чтобы очистить один разряд?

6. Какую логическую операцию надо использовать, чтобы установить бит в одном разряде?

7. Когда флаг Z регистра STATUS обнуляется?

8. Когда флаг C регистра STATUS обнуляется?

9. Когда флаги Z и С регистра STATUS одновременно равны нулю?

10. С какой целью подсчитывают сумму чисел в массиве?

 

Date: 2015-05-09; view: 563; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию