;Tiny 11 - 	Пример применения микроконтроллера
;		для индикации состояния внешних датчиков.

; Определение устройства.
.device ATTINY11

; Определение имен регистров ввода/вывода
.equ    SREG    =$3F
.equ    GIMSK   =$3B
.equ    GIFR    =$3A
.equ    TIMSK   =$39              
.equ    TIFR    =$38 
.equ    MCUCR   =$35
.equ    TCCR0   =$33
.equ    TCNT0   =$32
.equ    TCCR1   =$30
.equ    TCNT1   =$2F
.equ    OCR1A   =$2E
.equ    OCR1B   =$2D
.equ    PORTB   =$18
.equ	DDRB    =$17
.equ    ACSR    =$08     
.equ    ADMUX   =$07
.equ    ADCSR   =$06
.equ    ADCH    =$05
.equ    ADCL    =$04       

.cseg					

;Вектор прерываний
.org 0
	rjmp init			;Инициализация и обработка прервания по Reset
.org $4
	rjmp ana_comp		;Обработка прерывания от аналогового компаратора

;Блок инициализации
init:   

	ldi r16,$4			; Установить бит 2 в portb для вывода на LED
	out DDRB,r16   		; Установить биты 0,1 в portb для приема сигнала
	sbi ACSR,$3			; Разрешить прерывания компаратора по смене знака 
					; ACIE=1; ACIS1=0; ACIS0=0 
	
	sbis ACSR,$5		; Установить LED в соответствии с ACO
	sbi PORTB,$2
	sbi PORTB,$1		; Установить высокий уровень на выходах AIN0/AIN1
	sbi PORTB,$0
	ldi r16,$20			; Разрешить режим холостого хода
	out MCUCR,r16  
	sei				; Разрешить прерывания  
loop2:	
 	sleep				; Перейти в режим холостого хода
	rjmp 	loop2			; После обработки прерывания 
					; снова перейти в режим холостого хода

ana_comp:
	clr r16			; Установить LED в соответствии с ACO
	sbis ACSR,$5		;
	ldi r16,$4			; 
	out PORTB,r16
	reti

