Конспект лекций по курсам "Проектирование центральных и периферийных устройств ЭВС", "Микропроцессоры и ЭВМ в микросистемах". Лукьяненко Е.Б. - 50 стр.

UptoLike

Составители: 

.def tmp=r16
def mark=r17
def counter=r18
.cseg
.org 0
rjmp Reset
Reset:
Ldi tmp,low(RAMEND) ; загрузка стека
Out SPL,tmp
ser tmp
out DDRB,tmp ; B0…B7 – выходы
out DDRD,tmp ; D0…D7 – выходы
ldi tmp,0b00000001 ; включаем 1-й светодиод
Out PortB,tmp
Ldi tmp,0b00000101 ; конфигурирование таймера
Out TCCR0B,tmp ; F
таймера
= f
такт
/1024
Ldi mark,200 ; загрузка в регистр mark числа 200
Ldi counter,4 ; загрузка в регистр counter числа 4
; обработка длительности свечения
Timer:
Clr tmp
In tmp,TCNT0 ;считываем состояние таймера в tmp
Cp tmp,mark ; сравниваем числа в tmp и в mark
Brbs 4,Timer ; если результат отрицательный, то есть число в TCNT0
меньше числа в mark, возвращаемся к Timer
Clr tmp
Out TCNT0,tmp ; сброс TCNT0, если результат положительный, то есть чис-
ло в TCNT0 больше числа в mark
Dec counter ; уменьшаем число в регистре counter на 1
Brne Timer ; переходим на метку, если counter не равен 0.
; меняем светодиод
In tmp,PortB ; считываем число из порта В (00000001)
Lsl tmp ; сдвиг влево (00000010)
Brcc PC+2 ; переход, если сброшен флаг переноса
Ldi tmp,0b00000001
Out PortB,tmp
Rjmp Timer
Подсчитаем время задержки:
T
таймера
=mark*(1/3,9 кГц) =200*0,25 мс=50 мс
Время цикла с учетом того, что цикл подпрограммы Timer равен 5 тактов, по-
лучим:
50 мс*5=0,25 с
С учетом регистра counter общее время равно
0,25 с*5=1,25 с.
50