; Шим регулятор для подсветки
; панели приборов

.include "C:\001\tiny13\tn13def.inc"

; Define here the variables
.def	tmp	=	r16
;==============================================================================
.CSEG
; Define here Reset and interrupt vectors, if any
reset:
		rjmp	start
		reti      ; Addr $01
		reti      ; Addr $02
		reti      ; Addr $03
		reti      ; Addr $04
		reti      ; Addr $05
T0_compA:	reti      ; Addr $06        Use 'rjmp myVector'
		reti      ; Addr $07        to define a interrupt vector
		reti      ; Addr $08
ADC_RDY:	rjmp	adc_comp      ; Addr $09

; Program starts here after Reset

start:
; Initialize stack pointer,
		cli
		ldi	tmp,low(RAMEND)
		out	SPL,tmp
		sei

; initialize ports
; линии порта PB0-PB5 выходы, PB3 - вход, PB2 - вход АЦП
		ldi	tmp,0b00111011
		out	DDRB,tmp
		clr	tmp
		out	PORTB,tmp
; initialize ADC
; непрерывный режим, выравнивание по левому краю, Vref=5V
; ADCSRA
		ldi	tmp,0b10101101
		out	ADCSRA,tmp
; ADCSRB
		clr	tmp
		out	ADCSRB,tmp
; ADCMUX
		ldi	tmp,0b00100001
		out	ADMUX,tmp
; initialize T0
; режим работы Fast-PWM, выход OC0A, прямой
; TCCR0A
		ldi	tmp,0b10000011
		out	TCCR0A,tmp
; TCCR0B
		ldi	tmp,0b00000010
		out	TCCR0B,tmp
; OCR0A
		ldi	tmp,127
		out	OCR0A,tmp
main:
; запуск преобразования
		sbi	ADCSRA,ADSC
		rjmp	main
;==============================================================================
; Subroutines
;==============================================================================
adc_comp:
		in	tmp,ADCL
		in	tmp,ADCH
		out	OCR0A,tmp
		reti
;==============================================================================
.ESEG
;==============================================================================
;==============================================================================
.DSEG
;==============================================================================
