Индивидуальное задание №2

РАЗРАБОТКА И ОТЛАДКА ПРИКЛАДНОЙ ПРОГРАММЫ НА ЯЗЫКЕ АССЕМБЛЕРА МК51

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

  1. Разработать программу, сортирующую числа массива ячеек РПД микроконтроллера МК51 (с 32 по 127 ячейки) в порядке их убывания.

  2. Карта опроса 64 датчиков (битовая информация) записана в ячейки 20Н-27Н РПД микроконтроллера К1830ВЕ51. Должны замигать светодиоды, подключенные к порту вывода Р1, если число датчиков с нулевым уровнем превышает 15.

  3. Разработать программу, формирующую на выводе Р3.7 пачку из 10 импульсов, следующих с частотой 10 кГц.

  4. На светодиодах, подключенных к порту Р1, получить световой эффект бегущего огонька со сменой направления. Скорость эффекта должна регулироваться тумблерами, подключенными к порту Р2 микроконтроллера МК51.

  5. Карта опроса 64 датчиков (битовая информация) записана в ячейки 20Н-27Н РПД микроконтроллера К1830ВЕ51. При срабатывании датчика (нулевой уровень), его номер необходимо вывести в порт Р1 в двоично-десятичном коде.

  6. Реализовать на микроконтроллере МК51 программу, фиксирующую в регистре DPTR наибольшее число из массива двухбайтовых чисел без знака (20Н-3FН).

  7. Если на тумблерах порта ввода Р1 микроконтроллера К1830ВЕ51 набрано четное число, на светодиодах порта вывода Р2 должен наблюдаться эффект бегущего огонька, а если нечетное - бегущей тени.

  8. Отрицательные числа массива однобайтовых чисел со знаком в дополнительном коде 20Н-27Н РПД микроконтроллера семейства МК51 переписать в предварительно обнуленный массив 28Н-2FH.

  9. Записать в массив В памяти данных микроконтроллера МК51 двоично-десятичный код двоичных чисел массива А, больших числа, набранного на тумблерах порта Р1 в двоично-десятичном коде.

  10. Светодиоды, подключенные к порту Р1 микроконтроллера МК51, должны мигнуть число раз, набранное в двоично-десятичном коде на тумблерах, подключенных к порту Р2, через одну секунду каждый.

  11. Произведение двоично-десятичных чисел с портов Р0 и Р1 микроконтроллера МК51 вывести в порты Р2 и Р3 в двоично-десятичном коде.

  12. Разработать программу, фиксирующую в ячейке 28Н РПД микроконтроллера МК51 наибольшее положительное число из массива однобайтовых чисел со знаком (30Н-3FН), представленных в дополнительном коде.

  13. Карта опроса 128 датчиков (битовая информация) записана в ячейки 20Н-2FН РПД микроконтроллера К1830ВЕ51. Определить число датчиков с нулевым уровнем и записать в расширитель аккумулятора В.

  14. Разработать программу умножения четырехбайтового двоичного числа на однобайтовое для микроконтроллера К1830ВЕ51.

  15. Должны замигать светодиоды порта вывода Р1 микроконтроллера К1830ВЕ51, если контрольная сумма массива ячеек РПД с 20Н по 27Н не совпадает с контрольной суммой массива ячеек с 28Н по 2FH.

  16. Реализовать на микроконтроллере МК51 программу, фиксирующую в регистре В количество слов массива текстовой информации (20Н-7FН).

  17. Реализовать программу, фиксирующую в регистре DPTR наименьшее число (и его адрес) массива однобайтовых чисел (20Н-3FН) РПД.

  18. Реализовать программу, фиксирующую в регистре DPTR наибольшее положительное число (и его адрес) из массива однобайтовых чисел со знаком (20Н-3FН), представленных в прямом коде.

  19. На светодиодах, подключенных к порту Р2, реализовать световой эффект бегущей тени со сменой направления. Скорость эффекта должна регулироваться программным переключателем, подключенным к порту ввода Р1 микроконтроллера К1830ВЕ51.

  20. Карта опроса 128 датчиков (битовая информация) записана в ячейки 20Н-2FН РПД микроконтроллера К1830ВЕ51. При срабатывании датчика (нулевой уровень) его номер необходимо вывести в регистр DPTR в двоично-десятичном коде.

  21. Разработать программу, формирующую на выводе Р3.6 пачку из 20 импульсов, следующих с частотой 100 кГц.

  22. Если на тумблерах порта ввода Р1 микроконтроллера К1830ВЕ51 набрано четное число, на светодиодах порта вывода Р2 должен наблюдаться эффект бегущего огонька, а если нечетное - елочки.

  23. Записать в массив В памяти данных микроконтроллера МК51 двоично-десятичный код двоичных чисел массива А, меньших числа, набранного на тумблерах порта Р1 в двоично-десятичном коде.

  24. Среднее арифметическое значение элементов массива 20Н-27Н РПД микроконтроллера семейства МК51 вывести в порт Р1.

  25. Светодиоды, подключенные к порту Р2 микроконтроллера К1816ВЕ51 должны мигнуть число раз, набранное в двоично-десятичном коде на тумблерах, подключенных к порту Р1, через 2 секунды каждый.

  26. В регистре DPTR сформировать в двоично-десятичном коде произведение двоично-десятичных чисел с портов Р0 и Р1 микроконтроллера К1816ВЕ51.

  27. Карта опроса 16 датчиков (массив однобайтовых чисел без знака) записана в ОЗУ МП серии МК51 начиная с ячейки 20H. Начиная с ячейки 30Н сформировать копию массива, изменив порядок следования чисел на обратный, а минимальное значение вывести в порт Р1.

  28. Разработать программу, формирующую на выводе Р3.7 импульсы длительностью 100 мкс, следующие с частотой 1 кГц.

  29. Сформировать на линии Р1.3 последовательность импульсных сигналов с частотой ноты СИ первой октавы (длительность полупериода 1012 мкс).

  30. Если на тумблерах порта ввода Р1 микроконтроллера К1830ВЕ51 набрано число, меньшее 20Н, на светодиодах порта вывода Р2 должен наблюдаться эффект бегущего огонька, а если большее - бегущей тени. Если число равно 20Н, светодиоды должны потухнуть.

  31. Двухбайтовые двоично-десятичные числа массива 20Н-27Н РПД преобразовать в двухбайтовые двоичные и записать в массив 28Н-2FН.

  32. Двухбайтовые двоичные числа массива 20Н-27Н РПД преобразовать в двухбайтовые двоично-десятичные. Числа массива меньше 10000.

  33. Числа массива 20Н-27Н РПД микроконтроллера семейства МК51, отличные от двоично-десятичных, переписать в предварительно обнуленный массив 28Н-2FH.

  34. В ячейках 30Н-37Н сформировать массив, каждый элемент которого определяется как сумма однобайтовых чисел массивов 20Н-27Н и 28Н-2FH, представленных в двоично-десятичном коде. Если сумма равна или превышает 100, в ячейку писать 99Н.

  35. Отсортировать числа массива 20Н-27Н РПД микроконтроллера К1816ВЕ51 в порядке нарастания.

  36. В массиве 20Н-3FН РПД микроконтроллера МК51 подготовлены для передачи семиразрядные сообщения. Добавить в качестве восьмого разряда каждого байта бит контроля четности. Наибольшее число продублировать в регистре В.

  37. Записать в регистр DPTR произведение наибольших чисел массивов 20Н-27Н и 28Н-2FH.

  38. Разработать программу умножения трехбайтового двоичного числа на однобайтовое для микроконтроллера К1830ВЕ51.

  39. Сформировать на линии Р1.5 последовательность импульсных сигналов с частотой ноты СОЛЬ второй октавы (длительность полупериода 638 мкс).

  40. Карта опроса 128 датчиков (битовая информация) записана в ячейки 20Н-2FН РПД микроконтроллера К1830ВЕ51. Должны замигать светодиоды, подключенные к порту вывода Р1, если число датчиков с единичным уровнем превышает 25.

  41. Карта опроса 128 датчиков (битовая информация) записана в ячейки 20Н-2FН РПД микроконтроллера К1830ВЕ51. Должен замигать светодиод, подключенный к линии Р1.1, если число датчиков с нулевым уровнем превышает число датчиков с единичным уровнем.

  42. Скопировать массив 20Н-27Н в массив 28Н-2FH, преобразовав двоично-десятичные числа в двоичные. Наибольшее число записать в регистр В.

  43. Числа со знаком, записанные в ячейках РПД 20Н-27Н в дополнительном коде, преобразовать в прямой код и разместить массив в области 28Н-2FH.

  44. Записать в регистр DPTR сумму наибольших чисел массивов 20Н-27Н и 28Н-2FH двоично-десятичных чисел.

  45. Разработать программу, сортирующую двоично-десятичные числа массива 20H-3FH РПД микроконтроллера МК51 в порядке их убывания. Наибольшее число продублировать в регистре В.

ПРИМЕР ВЫПОЛНЕНИЯ ИНДИВИДУАЛЬНОГО ЗАДАНИЯ №2

        Задание. Подсчитать количество символов в первом предложении текста, размещенного в РПД начиная с ячейки 20Н (включая пробелы). Результат сформировать в регистре R7 в двоично-десятичном коде.

        Решение. Ниже приведен текст программы на языке ассемблера с подробным комментарием:
  MOV R0,#20H ; начало массива
  CLR A ; очистка счетчика
M1: CJNE @R0,#’.’,M2 ; сравнение с кодом точки 2ЕН
  SJMP EXIT ; закончить обработку массива
M2: INC R0 ; наращивание указателя памяти
  ADD A,#1 ; двоично–десятичный
  DA A ; счетчик в аккумуляторе
  SJMP M1 ; организация цикла
EXIT MOV R7,A ; результат в R7

        Используется косвенная адресация элементов массива. Двоично-десятичный счетчик числа символов организован в аккумуляторе с использованием команды десятичной коррекции.

        После ассемблирования программы сформирован файл листинга прикладной программы massiv.lst, приведенный ниже. Защита работы проводится на эмуляторе микроконтроллера путем прогона программы после предварительного заполнения массива кодами символов.

##############################################################################
#
#
# Micro Series 8051 Assembler V1.80/MD2
11/Oct/06 11:21:50 #
#
#
# Source = massiv.asm
#
# List = massiv.lst
#
# Object = massiv.r03
#
# Options =
#
#
#
#
(c) Copyright IAR Systems 1985 #
##############################################################################

1 0000 7820   mov r0,#20H
2 0002 E4   clr a
3 0003 B62E02 m1: cjne @r0,#'.',m2
4 0006 8006   sjmp exit
5 0008 08 m2: inc r0
6 0009 2401   add a,#1
7 000B D4   da a
8 000C 80F5   sjmp m1
9 000E FF exit: mov r7,a
10 000F     end  

 

Errors: None ##########
Bytes: 15 # massiv #
CRC: F3A2 ##########