	list		p=18f2525	
	#include	<p18f2525.inc>


; A kis HP 4 szegmenses cucc+leptetomotor-proba FELLEPESSEL, na ez szepen forog!
; portc -  data
; porta 0,1,2,3 - segmens

#define seg1		PORTA,4
#define seg2		PORTA,5
#define seg3		PORTA,3
#define seg4		PORTA,2
#define step1		PORTB,0
#define step2		PORTB,1
#define step3		PORTB,2
#define step4		PORTB,3

;***** VALTOZOK

cblock 0x00
szorzolo
szorzohi
szorzandolo
szorzandohi
szamlalo
szamlahi
szepite	
osztolo	
osztohi	
oszto2lo
oszto2hi
osztandolo
osztandohi
osztando2lo
osztando2hi
munkalo
munkahi
munka2lo
munka2hi
eredmenylo
eredmenyhi
eredmeny2lo
eredmeny2hi
idegw
idegb
idegs
TEMP1
TEMP2
TEMP3
TEMP4
CIKLO1
ERTEK
ERTEKKI
villan
irqcounter
nyolcbites
PITCH
PLUSZ
IDEG
IDEG2
TEMPVK1
TEMPVK2
TEMPVK3
blokkszamlo
blokkszamhi
szam1
szam2
szam3
szam4
sorozat
idegszam
kezdet
endc
                            
;****** MAKROK

lep1 MACRO
 	bsf step1
	call kisvarakozas
	bcf step1
	call SOKVARAKOZAS
ENDM

lep2 MACRO
 	bsf step2
	call kisvarakozas
	bcf step2
	call SOKVARAKOZAS
ENDM
lep3 MACRO
 	bsf step3
	call kisvarakozas
	bcf step3
	call SOKVARAKOZAS
ENDM
lep4 MACRO
 	bsf step4
	call kisvarakozas
	bcf step4
	call SOKVARAKOZAS
ENDM



zoldled_be MACRO
	bsf PORTB,0
	ENDM
zoldled_ki MACRO
	bcf PORTB,0
	ENDM

;**********************************************************************
ORG 0x0000
	goto Start
org 0x0008
        goto interup	;high priority interrupt, compatibility int.
org 0x0018
	retfie		;low priority interrupt

ORG 0x002A
;----------------------------------------------------------- IRQ-k jonnek-----
tablazat
	andlw 0f
	movwf idegszam
	clc
	rlcf idegszam
	movf idegszam,W 
	nop
	addwf PCL
dt b'11101110'	;0
dt b'01000100'	;1
dt b'10110110'	;2
dt b'11010110'	;3
dt b'01011100'	;4
dt b'11011010'	;5
dt b'11111010'	;6
dt b'01000110'	;7
dt b'11111110'	;8
dt b'11011110'	;9

dt b'01111110'	;A
dt b'11111000'	;b
dt b'10110000'	;c
dt b'11110100'	;d
dt b'10111011'	;E
dt b'00111011'	;F
dt 001	;tizedespont
     
szamido = 0f0
sotetido = 0d0
             
interup:
	bcf INTCON,GIE		;disable interupts
	movwf idegw		;save w
	movbb idegs,STATUS      ;save status
	movbb idegb,BSR
	BCF PIR1, TMR1IF ; Clear interrupt flag

	decfsz irqcounter
	jmp atugi
	mov irqcounter,40
	incf szam4
atugi
	movlw 0
	cpfseq sorozat
	jmp kovhas1

	mov sorozat,1
	bcf seg1
	movbb PORTC,szam1
	mov TMR1H,szamido
	clrf TMR1L 
	jmp vegeterirq
kovhas1
	movlw 1
	cpfseq sorozat
	jmp kovhas2
	mov PORTA,0ff
	mov sorozat,2
	mov TMR1H,sotetido
	clrf TMR1L 
	jmp vegeterirq

kovhas2
	movlw 2
	cpfseq sorozat
	jmp kovhas3
	mov sorozat,3
	bcf seg2
	movbb PORTC,szam2
	mov TMR1H,szamido
	clrf TMR1L 
	jmp vegeterirq
kovhas3
	movlw 3
	cpfseq sorozat
	jmp kovhas4
	mov PORTA,0ff
	mov sorozat,4
	mov TMR1H,sotetido
	clrf TMR1L 
	jmp vegeterirq

kovhas4
	movlw 4
	cpfseq sorozat
	jmp kovhas5
	mov sorozat,5
	bcf seg3
	movbb PORTC,szam3
	mov TMR1H,szamido
	clrf TMR1L 
	jmp vegeterirq
kovhas5
	movlw 5
	cpfseq sorozat
	jmp kovhas6
	mov PORTA,0ff
	mov sorozat,6
	mov TMR1H,sotetido
	clrf TMR1L 
	jmp vegeterirq
kovhas6
	movlw 6
	cpfseq sorozat
	jmp kovhas7
	mov sorozat,7
	bcf seg4
	movbb PORTC,szam4
	mov TMR1H,szamido
	clrf TMR1L 
	jmp vegeterirq
kovhas7
	movlw 7
	cpfseq sorozat
	jmp vegeterirq
	mov PORTA,0ff
	mov sorozat,0
	mov TMR1H,sotetido
	clrf TMR1L 
	jmp vegeterirq

vegeterirq
	movbb BSR,idegb		;restore bank select register
	movbb STATUS,idegs	;restore status
	movf idegw,w            ;restore w
	bsf INTCON,GIE          ;enable interrupts
	retfie                  ;ret from interrupt


;--------------------------------------------------------------- Progi jon!
            
Start

	clrf	PORTA
	clrf	PORTB
        clrf    PORTC	;minden port torlese
	clrf	PORTE
	mov TRISC, B'00000001'	; PortC 0 bemenet
	mov TRISA, B'11000011'
	mov TRISB, B'11110000'	; portB 0-3 kimenet
	mov OSCCON, B'11110010'	; 8MHz
	mov ADCON1, B'00001111'	;all portA digital
	clrf TRISC

	mov sorozat,0
	mov TMR1H,4
	CLRF TMR1L
	mov T1CON,b'10000101'
	BSF PIE1, TMR1IE ; Enable Timer1 interrupt
	bsf INTCON,GIE          ;enable interrupts
	bsf INTCON,PEIE          ;enable interrupts

gaga
	movf kezdet,W
	call tablazat
	movwf szam1
	incf kezdet

	movf kezdet,W
	call tablazat
	movwf szam2
	incf kezdet

	movf kezdet,W
	call tablazat
	movwf szam3
	incf kezdet

	movf kezdet,W
	call tablazat
	movwf szam4
	incf kezdet

ujkort:

 	bsf step1
	call kisvarakozas
ujlop
	bsf step3
	call kisvarakozas
	bcf step1
	call kisvarakozas
	bsf step2
	call kisvarakozas
	bcf step3
	call kisvarakozas
	bsf step4
	call kisvarakozas
	bcf step2
	call kisvarakozas
	bsf step1
	call kisvarakozas
	bcf step4	
	call kisvarakozas
	nop
	jmp ujlop


kisvarakozas
	mov TEMPVK2,80	;4 a minimum
cimkey2              
	mov TEMPVK1,0
cimkey
	decfsz  TEMPVK1, F
	jmp    cimkey
	decfsz  TEMPVK2, F
	jmp    cimkey2
	ret

SOKVARAKOZAS
	ret
;------------------------------------------------------------------------------


	END 

