
AVRASM ver. 1.57  led_timer0.asm Thu Aug 03 12:38:38 2006


         ;Tiny 15 - 	Пример применения микроконтроллера
         ;			для обеспечения индикации светодиода.
         
         ; Определение устройства.
          .device ATTINY15
         
         ; Определение имен регистров ввода/вывода
          .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  
          .equ	PINB	=$16     
         
          .cseg					; Сегмент кода (находится во Flash памяти).
         						; Для t11 память данных (EEPROM) отсутствует.
         
         ;Вектор прерываний
          .org 0
000000 c005      	rjmp init			;Инициализация и обработка прервания по Reset
         
          .org $5
000005 c00e      	rjmp time			;Обработка прерывания по переполнению Timer0 (тип А)
         
         ;Блок инициализации
          init:   
         
000006 e008      	ldi r16,$8			; 1 бит на вывод
000007 bb07      	out DDRB,r16   		; Установить бит 3 в portb для вывода на LED
         
000008 e005      	ldi r16,$5			; Установить параметры делителя частоты (Timer 0)
000009 bf03      	out TCCR0,r16		; TCCR0 = $5 => 1MHz/256/1024 = 4Hz
         
00000a e002      	ldi r16,(1<<1)		; Разрешить прерывания Timer0
00000b bf09      	out TIMSK,r16
         
00000c e200      	ldi r16,$20			; Разрешить режим холостого хода
00000d bf05      	out MCUCR,r16  
         
00000e e008      	ldi r16,$8			; Погасить LED
00000f bb08      	out PORTB,r16
         
000010 e030      	ldi r19,0x00		; Дополнительный программный делитель частоты
             
000011 9478      	sei					; Разрешить прерывания  
         
         
          loop2:	
000012 9588      	sleep				; Перейти в режим холостого хода
000013 cffe      	rjmp 	loop2		; После обработки прерывания по переполнению Timer0
         						; снова перейти в режим холостого хода
          time:
000014 9533      	inc   	r19			; Увеличить значение счетчика
000015 3032      	cpi   	r19,2		
000016 f01a      	brmi  	fin			; Если счетчик <2 то переход
         	
000017 9502       	swap   	r16			; Изменение значения требуемого бита 
000018 bb08      	out   	PORTB,r16	; Вывод в PORTB 
         
000019 e030      	ldi   	r19,0		; Сброс счетчика
          fin: 
         
00001a 9518      	reti
         

Assembly complete with no errors.
