;
;	fltest.asm
;
; asl -L fltest.asm; p2hex -F intel fltest
;

	cpu	at90s8515
	include	reg8535		;This if file is original


ZERO	reg	R1
_SREG	reg	R2		;save in interrupt routine
_temp	reg	R3		;work in interrupt routine
delay	reg	R16		;timer counter
temp	reg	R17
COUNTER	reg	R18		;Displayed data
Idelay	equ	38		;define 1Sec for Timer Value.

	org	0

	rjmp	reset		;Reset
	rjmp	0		;INT0
	rjmp	0		;INT1
	rjmp	0		;TIM_COMP2
	rjmp	0		;TIM_OVF2
	rjmp	0		;TIM_CAPT
	rjmp	0		;TIM_COMPA
	rjmp	0		;TIM_COMPB
	rjmp	0		;TIM_OVF1
	rjmp	TM_OVF0		;TIM_OVF0
	rjmp	0		;SPI_STC
	rjmp	0		;UART_RX
	rjmp	0		;UART_UDRE
	rjmp	0		;UART_TX
	rjmp	0		;ANA_ADC
	rjmp	0		;EE_RDY
	rjmp	0		;ANA_COMP

TM_OVF0	in	_SREG,SREG
	dec	delay
	brne	intend
	ldi	delay,Idelay
	ldi	R30,(2*segdata & $ff)
	ldi	R31,(2*segdata >> 8)
	mov	_temp,COUNTER
	add	_temp,_temp
	add	R30,_temp
	adc	R31,ZERO	;Z = segdata + COUNTER
	lpm
	out	PORTA,R0
	out	PORTB,R0
	out	PORTC,R0
	out	PORTD,R0
	inc	COUNTER
	cpi	COUNTER,10
	brcs	intend
	ldi	COUNTER,0
intend	out	SREG,_SREG
	reti
	

reset:
	ldi	temp,(iramend&$ff)
	out	SPL,temp
	ldi	temp,(iramend>>8)
	out	SPH,temp
	ldi	temp,$ff
	out	DDRA,temp
	out	DDRB,temp
	out	DDRC,temp
	out	DDRD,temp

	ldi	TEMP,(1<<CS02|1<<CS00)
	out	TCCR0,TEMP	; Timer0Clock=CK/1024(0.1ms)

	ldi	TEMP,(1<<TOIE0)
	out	TIMSK,TEMP	; Timer0 Interrupt on 

	ldi	TEMP,(1<<SE)
	out	MCUCR,TEMP	;Sleep Enable

	ldi	TEMP,(1<<ACD)
	out	ACSR,TEMP	;Analog Comparator Disable

	sei

init	ldi	COUNTER,0
	EOR	ZERO,ZERO
	ldi	delay,Idelay

main	sleep
	rjmp	main

segdata
	data	$3f	;0
	data	$06	;1
	data	$5b	;2
	data	$4f	;3
	data	$66	;4
	data	$6d	;5
	data	$7d	;6
	data	$2f	;7
	data	$7f	;8
	data	$6f	;9

	align	16

	data	"fltest.asm      "
	data	"2003.07.06      "
	data	"runner@protom.org"

	end
