Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗФ / Контрольная ВМСиС.doc
Скачиваний:
21
Добавлен:
06.11.2017
Размер:
5.45 Mб
Скачать

Блок-схема алгоритма выполнения задачи.

Величина

Значение

Тип микропроцессора

КР1810ВМ86

Адрес порта ввода

08h

Адрес порта вывода

1: 09h; 2: 10h

Количество датчиков

N = 60

Количество исполнительных элементов

M = 43

Номер I-го датчика DI

I = 20

Номер k-го датчика Dk

k = 60

Номер r-го исполнительного элемента ИЭr

r = 27

После опроса датчиков алгоритм анализирует состояние датчика №20, затем датчика №60. Соответственно после указанного анализа появляется возможность выбрать четыре возможных варианта развития событий, а именно:

  1. Ничего не делать

  2. Включить канал

  3. Выключить канал

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

После выполнения выбранного варианта программа возвращается к опросу датчиков и все повторяется сначала.

Программа.

Поскольку адресное пространство ОЗУ начинается только с 1000h, там мы и расположим массив из 60 байт, который будет заполняться при выполнении подпрограммы опроса датчиков. Причем значению высокого уровня датчика будет соответствовать значение FFh соответствующего байта, а низкому уровню – 00h.

Программу разместим по адресу 0100h в ПЗУ устройства. Для перехода в указанный адрес в начале поставим команду «jmp 0100h». По условиям задания процедура задержки на Т секунд размещается по адресу 028h.

Общая длинна основной программы (без процедуры задержки) – 136 байт. Из памяти данных используется 60 байт для запоминания массива датчиков.

Строки программы с 3 по 38 относятся к подпрограмме опроса датчиков. Строки 39 – 43 выполняют верхнюю проверку алгоритма (Датчик №20=0). Причем если условие выполняется, управление передается команде в строку №52, если нет, то в строку 44.

Из алгоритма видно, что после выполнения указанной проверки производится проверка условия «Датчик №60=0». Так вот левая (по схеме алгоритма) проверка производится в строках 44 – 48. Причем, если условие не выполняется (вариант развития событий №1), то программа возвращается к строке 3 и весь цикл начинается по новой. А если выполняется (вариант развития событий №4), то запускается процедура задержки (строка 49). После возврата управления процедурой задержки управление передается в блок строк 57 – 61. Этот блок включает выход 27 (в соответствии с методическими указаниями).

Выключает вышеуказанный выход блок строк 63 – 67. Оба этих блока, после своего выполнения передают управление строке 3, то есть начинают цикл программы заново.

Правая проверка производится в строках 52 – 56. Причем при выполнении условия управление передается в строку 63 и соответственно выполняется блок выключения выхода 27 (вариант развития событий №3), при не выполнении, в строку 57, в блок включения выхода 27 (вариант развития событий №2).

Листинг программы

Мнемоника команды адрес код

  1. org 0000h

  2. jmp 0100h 0000 E9FD00

  3. org 0100h

  4. mov cl,00 0100 B100

  5. mov ch,cl 0102 8AE9

  6. and ch,07 0104 80E507

  7. jnz 0119 0107 7510

  8. shr ch,01 0109 D0ED

  9. shr ch,01 010B D0ED

  10. shr ch,01 010D D0ED

  11. mov al,ch 010F 8AC5

  12. out 0Ah,al 0111 E60A

  13. nop 0113 90

  14. nop 0114 90

  15. in al,08 0115 E408

  16. mov ah,al 0117 8AE0

  17. mov dx,1000h 0119 DA0010

  18. mov ch,cl 011C 8AE9

  19. shr ch,01 010E D0ED

  20. shr ch,01 0120 D0ED

  21. shr ch,01 0122 D0ED

  22. add dl,ch 0124 02D5

  23. mov ch,cl 0126 8AE9

  24. and ch,07 0128 80E507

  25. shl ch,01 012B D0E5

  26. shl ch,01 012D D0E5

  27. shl ch,01 012F D0E5

  28. add dl,ch 0131 02D5

  29. mov di,dx 0133 8BFA

  30. mov ch,00 0135 B500

  31. rcr ah,1 0137 D0DC

  32. jnc 013Dh 0139 7302

  33. mov ch,FFh 013B B5FF

  34. mov cs:[di],ch 013D 2E882D

  35. inc cl 0140 FEC1

  36. mov ch,41h 0142 B541

  37. sub ch,cl 0144 2AE9

  38. jnz 0102h 0146 75BA

  39. mov di,20 0148 BF1400

  40. mov cl,0 014B B100

  41. mov ch,cs:[di] 014D 2E8A2D

  42. sub ch,cl 0150 2AE9

  43. jz 0166h 0152 7412

  44. mov di,60 0154 BF3C00

  45. mov cl,0 0157 B100

  46. mov ch,cs:[di] 0159 2E8A2D

  47. sub ch,cl 015C 2AE9

  48. jnz 0100h 015E 7525

  49. call 0028h 0160 E8C5FE

  50. jmp 0172h 0163 EB0D

  51. nop 0165 90

  52. mov di,60 0166 BF3C00

  53. mov cl,0 0169 B100

  54. mov ch,cs:[di] 016B 2E8A2D

  55. sub ch,cl 016E 2AE9

  56. jz 017D 0170 740B

  57. mov al,040h 0172 B040

  58. out 0Ah,al 0174 E60A

  59. mov al,004h 0176 B004

  60. out 09h,al 0178 E609

  61. jmp 0100h 017A EB84

  62. nop 017C 90

  63. mov al,040h 017D B040

  64. out 0Ah,al 017F E60A

  65. mov al,000h 0181 B000

  66. out 09h,al 0183 E609

  67. jmp 0100h 0185 E978FF

Соседние файлы в папке ЗФ