
;Idomero 2010.02.26
;verzio 3
;kijelzők a B porton
;nyomógombok az A porton (fordított logikával működnek tehét megnyomva 0-re húzza a lábat)
;A port első 3 bitje a multiplex láb

'***********************************************
'Alapdefiniciok:

DEFINE	OSC 4			'4 MHz orajel

'***********************************************

'Port hozzarendelesek:
LEDEK 		var portB
SZAMOK		var byte [10]	'hetszegmenses kijelzore szamok kepei
NYG1		var portA.3
NYG2		var portA.4
;STOPp		var portA.7

'***********************************************
FELTOLT:
SZAMOK[0]= %11111110
SZAMOK[1]= %11000000
SZAMOK[2]= %10111101	
SZAMOK[3]= %11101101
SZAMOK[4]= %11000011
SZAMOK[5]= %01101111
SZAMOK[6]= %01111111
SZAMOK[7]= %11001100	
SZAMOK[8]= %11111111
SZAMOK[9]= %11101111

'***********************************************
'	 Konstansok:
IDO	CON 1000
szun	con 1000

'***********************************************
'Valtozok:
SEC 	VAR BYTE
PERC	VAR BYTE
EGYESS 	VAR BYTE
TIZESS 	VAR BYTE
EGYESP	VAR BYTE
TIZESP 	VAR BYTE
X 	VAR BYTE
Y	VAR BYTE
Z	VAR BYTE
NYGS	VAR BYTE
NYGS2	VAR BYTE
SEGED1	VAR BYTE		;Ennek segítségével döntöm el hogy a nyomógombnál fel vagy lefutó él van
SEGED2	VAR BYTE		;Ennek segítségével döntöm el hogy a nyomógombnál fel vagy lefutó él van
STOPp	VAR BYTE
'***********************************************
;Alapérték meghatározás:
TRISA	=	%11111000	;A port első 3 bitje a multiplex láb(kimenet) A.4 és A.5 nyomógombok(bemenet) 
TRISB	=	%00000000	;B port a kijelző szegmensek
;portA	=	%00000000	;A port a bekapcsolás otán 0
portB	=	%00000000	;B port a bekapcsolás után 0
NYGS	=	1		
NYGS2	=	0
SEGED1	=	1		;SEGED1 a bekapcsolás után 0
STOPp	=	1		;SEGED2 a bekapcsolás után 0		
'***********************************************

START:
	SEC=	00
	PERC=	00
	STOPp=	1
KEZD:
	
		FOR X=0 TO 2000		;Főprtogram 0-180-ig számol minden egyes x érték növelés előtt megnézi a	
					;nyomógombokat és kiír a kijelzőre. Az hogy meddig számoljon a program futási idejéből
					;számítható ki.  
	pauseus 200	
		gosub NYOMOGOMBKEZELES

		gosub KIIRAS
	pauseus 200
		next X

;***********************************************
IF STOPp=0 then
		
	SEC=SEC+1		;60-ig számolja a másodperceket
	IF SEC=60 THEN		
		SEC=0		;Ha elér 60-ig nullázza a másodpercet	
		PERC=PERC+1	;és hozzáad egyet a percekhez
	ENDIF
	IF PERC=60 THEN		
		PERC=0		;Ha a perc elér 60-ig nullázza
		
	ENDIF
else
endif
goto KEZD

;***********************************************

;***Szubrutinok:***

NYOMOGOMBKEZELES:
;	IF NYG1=0 THEN 		;Ha megnyomják a Startra megy ezzel nulláról indul a program.
;	STOPp=1
;	else
;	endif

;***********************************************

;MŰködik csak ritkán nézi a gombot:
	IF NYG1=0 THEN
		;IF STOPp=1 THEN
		STOPp=0
		;ELSE
		;STOPp=1
		;ENDIF

	else
	endif

RETURN

;***********************************************

KIIRAS:
	;Másodperc kiírás:
		TIZESS=	SEC/10
		EGYESS=	SEC//10
		portB=(SZAMOK[TIZESS])
		portA.1=1
		pauseus 600
		;gosub NYOMOGOMBKEZELES
		portA.1=0
		portB=(SZAMOK[EGYESS])
		portA.0=1
		pauseus 600
		portA.0=0	
		;gosub NYOMOGOMBKEZELES

	;Perc kiírás:
		TIZESP=	PERC/10
		EGYESP=	PERC//10
		portB=(SZAMOK[EGYESP])
		portA.2=1
		pauseus 600
		portA.2=0
		;gosub NYOMOGOMBKEZELES
RETURN

END










