Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Org 0 ;



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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...