микропроцессоры лаба 2
.docЛабораторная работа №2
Дискретный вывод и индикация
Обозначение в задании светодиодов привязаны к именам цепей на
принципиальной схеме.
Дано:
- четыре светодиода: VD0, VD1, VD2, VD3 - красный, обозначаемый далее буквой R, желтый (Y),
зеленый (G) и голубой (B).
Требуется:
написать программу, инициализирующую порты и выполняющую циклически управление светодиодами.
Программа не должна использовать таймера и прерывания. Подсчет времени сделать на основании
анализа времени выполнения программы и проверить в симуляторе.
В таблице вариантов задания в колонке через двоеточие указаны светодиоды и время, на которое
их надо включить. Например, строка
Вариант №2
B:0.2 Y:5 G:0.5 R,B:3 G,B:2
Текст программы:
.nolist
.include “micdef.inc”
.list
Reset: ldi r16, high(RAMEND)
out sph, r16
ldi r16, low(RAMEND)
out spl, r16
;Настройка портов А4, А5, D4, D5 на вывод
sbi DDRA, 4
sbi DDRA, 5
sbi DDRD, 4
sbi DDRD, 5
;Подпрограмма задержки в 0.1с в r16 * 0.1с. Погрешность устновки не более 10 тактов
delay: ldi r17, SFC -
ldi r18, S5F > = 22180
ldi r19, S03 -
loop subi r17, 1 ;вычитаем r17-1 в r17
sbci r18, 0 ;вычитаем r18-1 в r18
sbci r19, 0 ;вычитаем r19-1 в r19
brcc loop ;переход если нет перехода
dec r16
brne delay
ret
repeat: sbi PORTA, 5
ldi r16, 2
call delay
cbi PORTA, 5
sbi PORTD, 4
ldi r16, 50
call delay
cbi PORTD, 4
sbi PORTA, 4
ldi r16, 5
call delay
cbi PORTA, 4
sbi PORTA, 5
sbi PORTD, 5
ldi r16, 30
call delay
cbi PORTD, 5
sbi PORTA, 4
ldi r16, 20
call delay
cbi PORTA, 5
cbi PORTA, 4
rjmp repeat
Текст программы с комментриями:
.nolist
.include “micdef.inc”
.list
Reset: ldi r16, high(RAMEND)
out sph, r16
ldi r16, low(RAMEND)
out spl, r16
sbi DDRA, 4
sbi DDRA, 5
sbi DDRD, 4
sbi DDRD, 5
delay: ldi r17, SFC
ldi r18, S5F
ldi r19, S03
loop subi r17, 1
sbci r18, 0
sbci r19, 0
brcc loop
dec r16
brne delay
ret
repeat: sbi PORTA, 5 ; вкл. синий
ldi r16, 2 ; 2*0.1с= 0.2с
call delay ; вызов
cbi PORTA, 5 ;выкл. синий
sbi PORTD, 4 ;вкл. желтый
ldi r16, 50 ; 50*0.1с=5с
call delay ; вызов
cbi PORTD, 4 ; выкл. желтый
sbi PORTA, 4 ; вкл. зеленый
ldi r16, 5 ; 5*0.1с=0.5с
call delay ; вызов
cbi PORTA, 4 ; выкл. зеленый
sbi PORTA, 5 ; вкл. синий
sbi PORTD, 5 ; вкл. красный
ldi r16, 30 ; 30*0.1с=3с
call delay ; вызов
cbi PORTD, 5 ; выкл. красный
sbi PORTA, 4 ; вкл. зеленый
ldi r16, 20 ; 20*0.1с=2с
call delay ; вызов
cbi PORTA, 5 ; выкл. синий
cbi PORTA, 4 ; выкл. красный
rjmp repeat ; переход на повтор
БГТУ «ВОЕНМЕХ» имени Устинова
Микропроцессорная техника
Лабораторная работа №2
Дискретный вывод и индикация
Студент:Орлов Е.Ю.
Группа:ВА-316
Руководитель:Романов Сергей Леонидович