МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ. Обработка данных на микроконтроллере
КУРСОВОГО ПРОЕКТА
Обработка данных на микроконтроллере
Motorola MCHC908GP32
К задачам, решаемых микроконтроллерными системами, можно отнести: задачи ввода/вывода информации, задачи обработки и преобразовании информации, а так же задачи организации временных функций.
Рассмотрим примеры программной реализации типовых алгоритмов обработки данных.
Часто при выполнении арифметико-логических операций необходимо определить минимальный (максимальный) элемент массива. Суть алгоритма определения минимального элемента заключается в следующем. Из массива данных выбираются два числа, одно из которых помещается в аккумулятор А, другое в специально отведенную ячейку. Эти числа сравниваются, и меньшее число записывается в аккумулятор. Далее в специально отведенную ячейку, которую использовали ранее, записывается следующий элемент массива. Процедура повторяется. В конечном счете в аккумуляторе будет храниться минимальный элемент массива, который помещается в отдельную ячейку.
На рис. 3.1 представлена блок-схема программы определения минимального элемента списка.
Команда ORG устанавливает начальный адрес программы в памяти МК. При ассемблировании первая команда будет размещаться начиная с адреса $8000. После этого в ячейку памяти ОЗУ с адресом $50, которая выбрана в качестве счетчика циклов, загружается число 5 (число элементов массива). В индексный регистр H:X загружается начальный адрес первого элемента массива. В нашем случае – это $82. Далее в аккумулятор записывается число, адрес которого содержится в Н:Х. Содержимое Н:Х увеличивается на единицу, и число, адрес которой указан в ячейке Н:Х, записывается в специально отведенную ячейку $40. После этого содержимое индексного регистра Н:Х уменьшается на 2. Содержимое аккумулятора А сравнивается с числом, содержащимся в ячейке $40. Выполняемое действие будет иметь вид: (А) – ($40). По результату сравнения устанавливаются признаки.
Содержимое А и ячейки памяти после операции не изменяются. Если после операции сравнения бит знака в регистре ССR установлен в 0, т. е. число положительное, или содержимое аккумулятора больше содержимого ячейки $40, то процессор переходит по метке m2, где в аккумулятор записывается $40. Иначе же процессор переходит по метке m3, где очищается ячейка $40, увеличивается содержимое индексного регистра H:X на единицу, уменьшается содержимое счетчика циклов на единицу.
Нет |
Да |
Нет |
Да |
НАЧАЛО |
объявить минимумом первый элемент массива |
считать следующий элемент |
объявить минимумом текущий элемент |
он меньше минимума? |
уменьшить анализируемую часть массива на один элемент |
массив исчерпан? |
КОНЕЦ |
Рис. 3.1. Блок-схема программы определения минимального элемента массива.
После этого проверяется счетчик циклов на «0». Если содержимое счетчика циклов не равно 0, то необходимо продолжить выполнение программы, перейдя по метке m1 (программа опять от метки m1 начнет заново выполняться). Если же содержимое счетчика циклов равно 0, то программа выполняется дальше, а именно: происходит запись содержимого аккумулятора в ячейку $51 –в ней и будет храниться минимальное число данного массива чисел.
Процедура pr2 необходима для образования массива данных, DB – для определения байта данных. В поле операндов задаваемые данные записываются через запятую. С ячейки, имеющей адрес $82, резервируются 5 ячеек, в которые записываются соответствующие значения.
Суть программы определения максимального элемента заключается в следующем. Из массива данных выбираются два числа, одно из которых помещается в аккумулятор А, другое – в специально отведенную ячейку. Эти числа сравниваются, и большее число записывается в аккумулятор. Далее в специально отведенную ячейку, которую использовали ранее, записывается следующий элемент массива. Процедура повторяется. В конечном счете в аккумуляторе будет храниться максимальный элемент массива, который помещается в отдельную ячейку.
Текст программы на языке ассемблера для микроконтроллера MC68НС908GP32: