Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Rjmp begin_;передать управление на начало основной программы
Org OVF0addr
Rjmp TIM0_OVF;передать управление на обработку прерывания от таймера
Org 0x0030
begin_: cli
;Организовать программный стек в конце сегмента SRAM
Ldi temp,low(RAMEND)
Out SPL,temp
Ldi temp,high(RAMEND)
Out SPH,temp
;Инициализировать PORTB (РВ5 - выдача, остальные прием)
In temp,low(PORTB);read PORTB latch
sbr temp,(1<<PB5);set PB5
Out low(PORTB),temp;output to PORTB
Clr temp
sbr temp,(1<<PB4);set PB4
sbr temp,(1<<PB5);set PB5
Out low(DDRB),temp; Set port B(5) as output
;Инициализировать PORTЕ (все на прием)
In temp,low(PORTE);read PORTE latch
sbr temp,(1<<PE7);set PE7
Out low(PORTE),temp;output to PORTE
Clr temp
Out low(DDRE),temp; Set port E as input
;Инициализировать локальные переменные
Ldi count,low(0xcc)
Clc
;Запрограммировать таймер0
;TCCR0: -,PWM0,COM01,COM00,CTC0,CS02,CS01,CS00
; 0 0 0 1 0 1 1 1
ldi temp,(ck1024+0x10)
Out low(TCCR0),temp;
; CK/1024 ASSR = 0<<AS0
In temp,low(ASSR);
cbr temp,(1<<AS0)
Out low(ASSR),temp;
;TCNT0 = 0
Ldi temp,0
Out low(TCNT0),temp;
;OCR0 = 128
Ldi temp,0x7
Out low(OCR0),temp;
;Очистить флаг переполнения таймер0
In temp,low(TIFR)
sbr temp,(1<<TOV0)
Out low(TIFR),temp
; ожидать установку 0 в ASSR[2-0]
wait_0:
In temp,low(ASSR);
Andi temp,0x7
Brne wait_0
;Разрешить прерывание от таймера0
In temp,low(TIMSK)
sbr temp,(1<<TOIE0)
Out low(TIMSK),temp
;Разрешить все прерывания
Sei
;Рабочий цикл -
cicle_:
; rcall delay_
;cont_:
Дата публикования: 2015-09-18; Прочитано: 223 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!