Читаем PIC-микроконтроллеры. Все, что вам необходимо знать полностью

INDF equ 0; Регистр косвенной адресации

STATUS equ 3; Регистр STATUS

FSR equ 4; Индексный регистр

TEMP_0 equ h’30’; Начальный элемент массива

SUM equ h’48’ ; Общая сумма накапливается в регистрах h’48’:h’49’

AVERAGE equ h’4A’; Среднее

Z equ 2; Флаг нуля — 2-й бит регистра STATUS

С equ 0 ; Флаг переноса — 0-й бит регистра STATUS

; Задача 1: Обнулить общую сумму и среднее

AV_DAILY clrf SUM; Обнуляем старший байт суммы

                clrf SUM+1; Обнуляем младший байт суммы

; Задача 2: Установить указатель на Temp[0]

                movlw ТЕМР_0; Помещаем адрес первого элемента массива

                movwf FSR; в регистр указателя

; Задача 3: Основной цикл

; Задача 3,а: Прибавить Temp[i] к 2-байтной сумме

LOOP1 movf INDF,w; Считываем Temp[i]

           addwf SUM+1,f; Добавляем к младшему байту суммы

           btfsc STATUS,С; ЕСЛИ нет переноса, ТО не инкрементируем старший байт

           incf SUM,f; ИНАЧЕ учитываем перенос

; Задача 3,б: Инкрементирование i

NEXT incf FSR,f; i++

;Задача 3,в: Повторять вычисления, пока i < 24

           movf FSR,w; Считываем значение указателя

           sublw TEMP_0+h’18’; Вычитаем адрес конечного элемента массива (Теmр[24])

           btfss STATUS,Z; ЕСЛИ равно, то выходим из цикла

              goto LOOP1; ИНАЧЕ повторяем

; Задача 4: Разделить на 24 для получения среднего

            clrf AVERAGE; Обнуляем регистр среднего

; Вычитаем 24 и накапливаем количество вычитаний до формирования бита заема

LOOP2 movlw d’24’; Заносим константу 24 в W

           incf AVERAGE,f; Запоминаем очередную операцию вычитания

           subwf SUM+1,f;Вычитаем 24 из младшего байта суммы

           btfsc STATUS,C; ЕСЛИ заем, ТО переходим к старшему байту

             goto LOOP2; ИНАЧЕ повторяем вычитание

           movlw 1; Вычитаем единицу из старшего байта

           subwf SUM,f

           btfsc STATUS,С; ЕСЛИ заем (С==0), ТО выходим из цикла

             goto LOOP2; ИНАЧЕ повторяем вычитание

           decf AVERAGE,f; Компенсируем лишнюю операцию вычитания

... ...; Следующая процедура

Вопросы для самопроверки

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

addwf FILE,w

subwf FILE,w

5.2. Как можно проще всего с помощью одной команды поменять значение 0-го бита любого регистра данных? Допускается затрагивать и другие биты.

5.3. Напишите программу, которая складывает два 16-битных числа, получая 17-битную сумму. Первое слагаемое размещается в регистрах памяти данных h’20’ (старший байт) и h’21’ (младший байт). Второе слагаемое размещается в регистрах h’22’ (старший байт) и h’23’ (младший байт). Сумма запоминается в трех регистрах: h’24’ (старший байт), h’25’ (средний байт) и h’26’ (младший байт).

5.4. Напишите программу для вычитания двухбайтного числа NUM_2, находящегося в регистрах h’22’:h’23’, из числа NUM_1, находящегося в регистрах h’20’:h’21’. Двухбайтная разность должна запоминаться в регистрах h’24’:h’25’. Не забудьте, что в случае возникновения заема при вычитании младших байтов, необходимо при вычитании старших байтов дополнительно вычесть единицу из NUM_1. Считается, что NUM_2 меньше или равно NUM_1. Как можно после завершения программы определить, что это условие не было выполнено?

Перейти на страницу:

Все книги серии Программируемые системы

PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника

Похожие книги

Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию, елочные огни, электронные украшения, устройство преобразования звука, кодовый замок и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий. Во втором издании существенно переработан текст книги, в экспериментах используются более доступные электронные компоненты, добавлены новые проекты, в том числе с контроллером Arduino.

Чарльз Платт

Радиоэлектроника / Технические науки
Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки
Искусство схемотехники. Том 3 (Изд.4-е)
Искусство схемотехники. Том 3 (Изд.4-е)

Широко известная читателю по предыдущим изданиям монография известных американских специалистов посвящена быстро развивающимся областям электроники. В ней приведены наиболее интересные технические решения, а также анализируются ошибки разработчиков аппаратуры: внимание читателя сосредотачивается на тонких аспектах проектирования и применения электронных схем. На русском языке издается в трех томах. Том 3 содержит сведения о микропроцессорах, радиотехнических схемах, методах измерения и обработки сигналов, принципах конструирования аппаратуры и проектирования маломощных устройств, а также обширные приложения. Для специалистов в области электроники, автоматики, вычислительной техники, а также студентов соответствующих специальностей вузов и техникумов.

Пауль Хоровиц , Уинфилд Хилл

Техника / Радиоэлектроника