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

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

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

.cseg					; Сегмент кода (находится во Flash памяти).
						; Для t11 память данных (EEPROM) отсутствует.

;Вектор прерываний
.org 0
	rjmp init			;Инициализация и обработка прервания по Reset
.org $2
	rjmp button			;Обработчик нажатия кнопок
	
;Блок инициализации
init:   

	ldi r16,$8			; 1 бит на вывод
	out DDRB,r16   		; Установить бит 3 в portb для вывода на LED

	ldi r16,$8			; Погасить LED
	out PORTB,r16

	ldi r16,$20			; Разрешить режим холостого хода 
	out MCUCR,r16		; и прерывание по изменению уровня   

	ldi r16,$21			; Разрешить прерывания по входам порта B 
	out GIMSK,r16

	sei					; Разрешить прерывания  
	
loop2:	
	nop					; Перейти в режим пониженного энергопотребления
	rjmp 	loop2		; После обработки прерывания нажатия кнопок
						; снова перейти в режим пониженного энергопотребления
button:
	sbic 	$16,4
	rjmp 	PIN0		
	ldi		r16,$80		; PIN4 - Погасить
	rjmp fin
PIN0:
	ldi		r16,$08		; PIN0 - Зажечь	
fin: 
	out   	PORTB,r16	; Вывод в PORTB 
	reti


