 LIST P=16F887
 #INCLUDE "P16F887.INC"
 ERRORLEVEL	0,	-302
	
	__CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF &_CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _HS_OSC
	__CONFIG    _CONFIG2, _WRT_OFF & _BOR21V

	cblock 0x20
	t1,t2
	hz1
	pclath

	sec_one,sec_ten,min_one,min_ten
	w_save,status,status_save
	fsr_s,pclath_s
;----------------------------------------------
;new register's:

	endc

	#define	pa	PORTA
	#define	pb	PORTB
	#define	pc	PORTC
	#define	pd	PORTD
	#define	pe	PORTE
	
	#define	d1	PORTD,0	
	#define	d2	PORTD,3
	#define	d3	PORTD,1
	#define	d4	PORTD,2
	#define	d5	PORTD,4
	#define	d6	PORTD,7
	#define	d7	PORTD,5
	#define	d8	PORTD,6

	#define	sout	PORTA,3
	#define	sw1		PORTA,0
	#define	sw2		PORTA,1
	#define	sw3		PORTA,2

	org	0x00
	goto	init
		
	
	org	0x04

	bcf		INTCON,T0IF		



	movwf	w_save	
	swapf	w_save,f

	swapf	STATUS,w		
	movwf	status_save

	movfw	FSR
	movwf	fsr_s
	movfw	PCLATH
	movwf	pclath_s



	decfsz	hz1,f
	retfie
	movlw	.225
	movwf	hz1
	



	


	incf	sec_one,f
	movlw	.10
	subwf	sec_one,w
	skpnz
	clrf		sec_one
	skpnz
	incf	sec_ten,f


	movlw	.6
	subwf	sec_ten,w
	skpnz
	clrf		sec_ten
	skpnz
	incf	min_one,f

	movlw	.10
	subwf	min_one,w
	skpnz
	clrf		min_one
	skpnz
	incf	min_ten,f


	movlw	.6
	subwf	min_ten,w
	skpnz
	clrf		min_ten



	
	movfw	fsr_s
	movwf	FSR
	movfw	pclath_s
	movwf	PCLATH

	swapf	status_save,w
	movwf	STATUS			

	swapf	w_save,w

	retfie



init

	movlw	.225	
	movwf	hz1

	
	bsf		STATUS,5
	
	clrf		TRISB
	clrf		TRISC
	clrf		TRISD
	clrf		TRISE

	movlw	b'00000111'
	movwf	TRISA


	movlw	0xff
	movwf	PR2
	movlw	B'00000011'
	movwf	OPTION_REG

	bcf		STATUS,5
	
	BANKSEL	ANSEL
	clrf			ANSEL
	BANKSEL	PORTA

	bsf		INTCON,T0IE
	bsf		INTCON,GIE

 	clrf 	TMR2 	
 	bsf 	T2CON,0 			;pwm kalibracio frekvencia.. stb
 	movlw 0xf	
	movwf CCP1CON 	
 	bsf 	T2CON,2 

	movlw	.100
	movwf	CCPR1L				;kijelzo fenyero

	clrf	PORTC
	clrf	PORTD
	
	clrf	sec_one
	clrf	sec_ten
	clrf	min_one
	clrf	min_ten


	


;Clock rutin	
clock
	
	call		prell
	call		voice

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;;;;;;;;CLOCK DISPLAY;;;;;;;;,
go	
	btfss	sw1
	goto	set1

	bsf		d1
	movfw	sec_one
	call		table
	movwf	pb	

	clrf	pb
	clrf	pd

	bsf		d2
	movfw	sec_ten
	call		table
	movwf	pb	

	clrf	pb
	clrf	pd

	bsf		d3
	movfw	min_one
	call		table
	movwf	pb	

	clrf	pb
	clrf	pd

	bsf		d4
	movfw	min_ten
	call		table
	movwf	pb

	clrf	pb
	clrf	pd

;;;;;;;;;;;;;;;;;;;;;;;;;

	bsf		d5
	movlw	.20
	call		table
	movwf	pb

	clrf	pb
	clrf	pd
	clrf	pc

	bsf		d6
	movlw	.33
	call		table
	movwf	pb

	clrf	pb
	clrf	pd
	clrf	pc

	bsf		d6
	movlw	.34
	call		table	
	movwf	pc

	clrf	pc
	clrf	pd
	clrf	pb

	bsf		d7
	movlw	.43
	call		table	
	movwf	pc

	clrf	pc
	clrf	pd
	clrf	pb


	bsf		d8
	movlw	.44
	call		table
	movwf	pb

	clrf	pb
	clrf	pd
	clrf	pc
	goto	go

;;;;;;;;SECOND SET;;;;;;;;;;
set1
	call		prell
	call		voice
set1r
	bsf		d8
	movlw	.42	;S
	call		table
	movwf	pb

	clrf	pb
	clrf	pd
	clrf	pa

	bsf		d7
	movlw	.20	;e
	call		table
	movwf	pb

	clrf	pb
	clrf	pd
	clrf	pa

	bsf		d6
	movlw	.16	;t
	call		table
	movwf	pb

	clrf	pb
	clrf	pd
	clrf	pa

	bsf		d1
	movfw	sec_one
	call		table
	movwf	pb

	clrf	pb
	clrf	pd
	clrf	pa

	bsf		d2
	movfw	sec_ten
	call		table
	movwf	pb

	clrf	pb
	clrf	pd
	clrf	pa

;	btfss	sw2
;	goto	seclear
	btfss	sw1
	goto	clock
	goto	set1r

;seclear
;	call		prell
;	clrf		sec_one
;	clrf		sec_ten
;	goto	set1r

	nop	
	nop	
	nop	
	nop
	nop
	nop
	nop	
	nop	
	nop	
	nop
	nop
	nop
	nop	
	nop	
	nop	
	nop
	nop
	nop
	nop	
	nop	
	nop	
	nop
	nop
	nop
	nop	
	nop	
	nop	
	nop
	nop
	nop
	nop	
	nop	
	nop	
	nop
	nop
	nop

	

;;;;;;;;;;;;;;;; SUBRUTIN ,;;;;;;;;;,	

prell
	movlw	0xff
	movwf	t1
	movlw	0xff
	movwf	t2
	decfsz	t2,f
	goto	$-1
	decfsz	t1,f
	goto	$-5	
	return
voice
	movlw	.100
	movwf	t1

	bsf	sout
	call	dd
	bcf	sout
	call	dd
	decfsz	t1,f
	goto	$-5
	return
dd
	movlw	.10
	movwf	t2
	decfsz	t2,f
	goto	$-1
	return

;;;;;;;;;;;;;TABLE;;;;;;;;;
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

								;E;F;A;G;B;C;G;D
table

	pagesel	table1

table1

	addwf	PCL,f

;num
	retlw	b'11101101'	;0
	retlw	b'00001100'	;1
	retlw	b'10111011'	;2
	retlw	b'00111111'	;3
	retlw	b'01011110'	;4
	retlw	b'01110111'	;5
	retlw	b'11110111'	;6
	retlw	b'00101100'	;7
	retlw	b'11111111'	;8
	retlw	b'01111111'	;9
;font							;H;L;M;N;K;x;J;x
	retlw	b'11111110'	;10	;A
	retlw	b'10111111'	;11	;a
	retlw	b'00101111'	;12	;B
	retlw	b'00100010'	;13	;B ;pc	;I			
	retlw	b'11010111'	;14	;b
	retlw	b'11100001'	;15	;C
	retlw	b'10010011'	;16	;c
	retlw	b'00101101'	;17	;D	& 13	;; 16, 17 d #2
	retlw	b'10011111'	;18	;d
	retlw	b'11110011'	;19	;E
	retlw	b'11111011'	;20	;e
	retlw	b'11110010'	;21	;F
	retlw	b'11100111'	;22	;G
	retlw	b'01111111'	;23	;g	;E;F;A;G;B;C;G;D
	retlw	b'11011110'	;24	;H
	retlw	b'11010110'	;25	;h
	retlw	b'00001101'	;26	;J
	retlw	b'00001101'	;27	;j
	retlw	b'11010000'	;28	;K
	retlw	b'00011000'	;29	;K	;pc	;k & 13
	retlw	b'11000001'	;30	;L 	;l >13
	retlw	b'11001100'	;31	;M
	retlw	b'10001000'	;32	;M	;pc	;N	;W
	retlw	b'10010110'	;33	;m
	retlw	b'00100000'	;34	;m	;pc
	retlw	b'10010000'	;35	;N	;pc	
	retlw	b'10010110'	;36	;n
	retlw	b'11101101'	;37	;O	;Q
	retlw	b'10010111'	;38	;o
	retlw	b'11111010'	;39	;P
	retlw	b'00010000'	;40	;Q	;pc	;R
	retlw	b'10010000'	;41	;r
	retlw	b'01110111'	;42	;S
	retlw	b'00100000'	;43	;T	;pc	& 13 ;i
	retlw	b'11010001'	;44	;t	
	retlw	b'11001101'	;45	;U
	retlw	b'10000101'	;46	;u
	retlw	b'11000000'	;47	;V
	retlw	b'01001000'	;48	;V	;pc
	retlw	b'10000000'	;49	;v
	retlw	b'00001000'	;50	;v	;pc
	retlw	b'01010000'	;51	;W	;pc	&31
	retlw	b'11011000'	;52	;X	;pc
	retlw	b'10101000'	;53	;Y	;pc
	retlw	b'01011111'	;54	;y
	retlw	b'00100001'	;55	;Z	& 48	
		
	return	

	end

