;Tiny 11 - Десятичный счетчик - секундомер.
;Пример подключения семисегментного индикатора
;со встроенным BCD декодером к ATTiny11
;
; Specify Device.
.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				;Сегмент кода (размещается во FLASH памяти).

;Вектор прерываний
.org 0
	rjmp init		;Переход на подпрограмму INIT

;Инициализация      
init:   
	ldi r16,$0f		; 0,1,2,3 биты  программируем на вывод:  00001111b
	out DDRB, r16   ; устанавливаем значение в PORTB
	clr r20			; 
loop1: 
	mov r16,r20		; Вывод тетрады из r20 в PORTB 
	out PORTB, r16
	rcall Delay		; Задержка: 1 секунда
	inc r20			; Увеличиваем значение секунд
	cpi r20,10
	brne loop1
	clr r20
rjmp loop1   

Delay:
ldi r17,4
d1: ldi r18,255								;Цикл
	d2: ldi r19,244				;Цикл		;
		d3: nop		;Цикл		;			;
		    dec r19	;задержки 	;			;
		brne d3		;на 4 такта	;задержки	;задержки
		nop						;			;
		dec r18					;			;
	brne d2						;на 4 такта ;	
	nop										;
	dec r17									;на 4 такта 
brne d1
ret
