Пример выполнения задания. Рассмотрим пример выполнения задания

Рассмотрим пример выполнения задания. После появления логической "1" на входе Р1.0 микроконтроллер на четырех выходах Р2.3…Р2.0 формирует временную диаграмму изменения четырех сигналов, представленную на рисунке 1. Диаграмма содержит пять временных интервалов, длительностью 100 мс каждый. Диаграмма периодически повторяется до появления логического "0" на входе P1.0.

 
 


Выберем начальную константу для таймера таким образом, чтобы переполнение происходило каждые 10 мс = 10000 мкс. Так как максимальное число в таймере 65535, следовательно начальное его значение должно быть 65535-10000=55535=D8EFh и этот интервал будем повторять 10 раз (10х10мс=100мс).

Разработаем требуемую программу. Ее текст с необходимыми комментариями приведен ниже.

org 0

clr tr0; остановить таймер ТС0

mov tmod,#1; настроить ТС0 в режим 1

;запоминание в памяти данных пяти 4-разрядных двоичных слов

mov 8,#2

mov 9,#7

mov 10,#5

mov 11,#6

mov 12,#11

; ожидание сигнала начало формирования временной диаграмы

m3:

jnb P1.0,$

mov r1,#8; адрес начала массива (номер выводимого элемента)

mov r2,#5; число элементов массива

m2:

mov p2,@r1; вывод элемента массива

; организация временного интервала

mov r3,#10; 10 раз по 10 мс

m1:

mov th0,#0D8h; начальное значение

mov tl0,#0EFh; для ТС0

setb tr0; запустить таймер

jnb tf0,$; ожидать переполнения таймера

clr tr0; остановить таймер

clr tf0; сбросить флаг переполнения

djnz r3,m1; прошел временной интервал

inc r1; переход к следующему элементу массива

djnz r2,m2; перейти если не все элементы массива выведены

jmp m3; на начало формирования временной диаграммы

end


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: