.EQU Xtal=8
.NOLIST
#include<m8535def.inc>
.include"macros.inc"
.LIST
.CSEG
;Interrupt Vector Table
.ORG 0x000
rjmp main ;Reset Vector
.ORG 0x008
rjmp timer1_ovf ;Timer1 Overflow
.ORG 0x00E
rjmp adccomplete ;ADC conversion Complete.
;Main Subroutine
.ORG 0x015
main:
ldi r16,HIGH(ramend) ;Init. Stack pointer
out sph,r16
ldi r16,LOW(ramend)
out spl,r16
bset SREG_I ;Enable Global Interrupt
rcall loadtimer
ldi r16,$04 ;Enable Timer1 Overflow Interrupt.
out timsk,r16
ldi r16,$00
out tccr1a,r16
ldi r16,tccr1b_value ;Start Timer1
out tccr1b,r16
terminate: rjmp terminate ;END Programme here.
;Timer1 Overflow Interrupt service routine
timer1_ovf:
nop
nop
reti
;ADC Conversion Complete service routine
adccomplete:
reti
;Other Subroutines
loadtimer:
;F424 counts @8MHz and prescale 64 accounts for 0.5s
;0DBD to FFFF accounts for F424
ldi r16,$0D
out tcnt1h,r16
ldi r16,$BD
out tcnt1l,r16
ret