Code:
'________________________________ matrix tipke 3x2 ______________________________
SCAN: 'SKENER TIPKOVNICE
PORTA.0=0
PORTA.1=1
KEY=PORTC & %00000111
PORTA.0=1
PORTA.1=0
KEY=KEY*10+(PORTC & %00000111)
PORTA.0=0
'---------------------- DELAY - DEBOUNCE - RELOOP ----------------------
IF PRESS THEN 'AKO JE NESTO STISNUTO
'IF W<1 THEN SOUND PORTC.5 [100,5] '| OBAVEZNO SLATI NA PR? M
W=W+1 '| BROJI STISKOVE A
IF W > CEKAJ_STISAK THEN PONAVLJAJ = DA'| T
ELSE '| DELAY DO RELOOPA R
W=0 '| I
PONAVLJAJ = NE '| X
ENDIF
RETURN '--------------- TIPKA STISNUTA (PRESS DA ILI NE) ----------------
TIPKA_STISNUTA:
IF KEY = 77 THEN
PRESS = NE
ELSE
PRESS = da
ENDIF
RETURN
'________________________________ lcd setup IZBORNIK _________________________
SETUP: '---------------- ----------------
lcdout $fe,1,"MENU PODESAVANJA",$FE,$C0,"<-|>+|<>IZ|EN-OK"
PAUSE 4000
MENU=0
SETUP_LOOP:
GOSUB SCAN
PAUSE 100
SELECT CASE KEY
CASE 65 '<- + ->
IF NOT PRESS THEN IZLAZ
CASE 73 'ENTER
IF NOT PRESS THEN BRANCHL MENU, [SET_SAT,PROGRAMI,TJEDNI,POSTAVKE,IZLAZ]
'ENDIF
CASE 67 '<-
IF NOT PRESS AND MENU >= 1 THEN MENU=MENU-1
CASE 75 '->
IF NOT PRESS AND MENU < 5 THEN MENU=MENU+1
CASE 16 '1 + 2 + 3
GOSUB SKRIVENI
END SELECT
SELECT CASE MENU
CASE 0 '---------------- '----------------
lcdout $fe,1, "NAMJESTANJE SATA",$FE,$C0,"EN-OK, <+> IZLAZ"
CASE 1 '---------------- '----------------
lcdout $fe,1, "IZMJENA PROGRAMA",$FE,$C0,"EN-OK, <+> IZLAZ"
CASE 2 '---------------- '----------------
lcdout $fe,1, "TJEDNI RASPORED ",$FE,$C0,"EN-OK, <+> IZLAZ"
CASE 3 '---------------- '----------------
lcdout $fe,1, "POSTAVKE SUSTAVA",$FE,$C0,"EN-OK, <+> IZLAZ"
CASE 4 '---------------- '----------------
lcdout $fe,1, "IZLAZ IZ POSTAVA",$FE,$C0,"EN-OK, <+> IZLAZ"
END SELECT
GOSUB TIPKA_STISNUTA
GOTO SETUP_LOOP
IZLAZ:
lcdout $fe,1, "IZLAZ IZ SETUP-a",$FE,$C0,"I NASTAVAK RADA "
PAUSE 2000
GOTO PRE_MAIN_LOOP
'----------------------- SETIRANJE TRAJANJA PROGRAMA -----------------------------
PROGRAMI: '---------------- '----------------
lcdout $fe,1, "<T-|>T+|EN-V|2+V",$FE,$C0,"3+PRG|<+> SPREMI"
PAUSE 3000
X=1:Y=1:Z=1:A=0
PROGRAMI_LOOP:
GOSUB KEY2VAR
IF Z>3 THEN Z=3
IF X>BROJ_VENTILA THEN X=BROJ_VENTILA
IF Y>99 THEN Y = 15
LOC = PROG_LOC + ((Z-1) * PROG_OFFSET)+x
READ LOC,TEMP
lcdout $fe,1,"PROG.=",#Z," VENT.=",#x,$FE,$C0,"MEM=",#TEMP," SET=",#y
IF TEMP != y THEN A=A+1
IF PRESS THEN A=0
IF A>30 THEN
WRITE LOC,y
A=0
ENDIF
GOTO PROGRAMI_LOOP
'________________________________ lcd LICENCA _____________________________________
SKRIVENI:
lcdout $fe,1,"LICENCNI KOOD",$FE,$C0
read (PARAM_LOC+59),Y 'NEVIDLJIV KOOD
read (PARAM_LOC+60),Z
X=1':Y=0:Z=0 'ILI VIDLJIV KOOD
SKRIVENI_LOOP:
GOSUB KEY2VAR
IF X>2 THEN SKRIVENI_OUT
lcdout $FE,$C0," ",dec3 Y,dec3 Z,"=",dec3 KOOD0,dec3 KOOD1
A=A+1
IF PRESS THEN A=0
IF A>100 THEN SKRIVENI_OUT
GOTO SKRIVENI_LOOP
SKRIVENI_OUT:
lcdout $fe,1," KOOD SPREMLJEN ",$FE,$C0,"POVRAT. NA IZBOR",$FE,$0C
IF A.LOWBYTE = KOOD0 AND A.HIGHBYTE = KOOD1 THEN
Write (PARAM_LOC+59),A.HIGHBYTE 'LICENCA
Write (PARAM_LOC+60),A.LOWBYTE
ELSE '----------------
lcdout $fe,2," KOOD NETOCAN ! "
ENDIF
PAUSE 2000
goto setup
'__________________________ lcd setup PARAMETRI_____________________________________
POSTAVKE:
POSTAVKE_LOOP
return
GOTO POSTAVKE_LOOP
'________________________________ RUCNI START _____________________________________
POKRENI:
GOTO POKRENI
START_OUT:
LCDOUT $FE,$C0,"START PROGRAM ",#PROGRAM_FLAG
GOTO PRE_MAIN_LOOP
RUCNI_TEST:
GOSUB KEY2VAR
'________________________________STELANJE SATA ____________________________________
SET_SAT: '________________
lcdout $fe,1," STIMANJE SATA :",$FE,$C0
X=0:Y=0:Z=0
PAUSE 2000
GOSUB CITAJ_SAT
SAT_LOOP:
LOOKUP2 Y,[SATI,MINUTA,DAN,DATUM,MJESEC,GOD],X 'STA CEMO MJENJATI
LOOKUP Y, [ 60 , 60 , 7 , 31 , 12 ,99 ],TEMP 'MAXIMUMI ZA VREM.MJERE
LOOKUP Y, [ 0 , 4 , 7 , 0 , 4 , 7 ],P 'MAPIRANJE KURSORA
GOSUB KEY2VAR
IF Z>3 THEN Z=3
IF X>TEMP THEN X=TEMP
IF Y>5 THEN Y = 5
SELECT CASE Y
CASE 0
SATI=X
CASE 1
MINUTA=X
CASE 2
DAN=X
CASE 3
DATUM=X
CASE 4
MJESEC=X
CASE 5
GOD=X
END SELECT
lcdout $FE,1,DEC2 SATI,":", DEC2 MINUTA,"DAN:",DEC1 DAN,"-",#X,#Y,#Z,$FE,$C0,_
DEC2 DATUM,".", DEC2 MJESEC,".20",DEC2 GOD,$FE,$0F,$FE,2
IF Y>2 THEN LCDOUT $FE,$C0
FOR C=0 TO P
LCDOUT $FE,$14 'MAKNI KURSOR DA BLINKA GDJE SE CACKA
NEXT C
A=A+1
IF PRESS THEN A=0
IF A=20 THEN GOSUB PISI_SAT 'SVAKI PUT 2 SEC NAKON RELEZA
GOTO SAT_LOOP
'_______________________________ TJEDNI ________________________________________
TJEDNI:
GOTO SETUP
'___________ VAR=X,Y,Z IZ TIPKI SA TIMEOUTOM I AUTO REPEATOM I DEBOUNCEROM _________
KEY2VAR:
GOSUB SCAN
PAUSE 100
SELECT CASE KEY
CASE 65 '<- + ->
IF NOT PRESS THEN '---------------- '----------------
lcdout $fe,1,"POHRANJENO. POV-",$FE,$C0,"RATAK U IZBORNIK"
PAUSE 2000
goto setup
ENDIF
CASE 56 '1 + 3
IF NOT PRESS THEN '---------------- '----------------
lcdout $fe,1,"POHRANJENO. POV-",$FE,$C0,"RATAK U NORMALU "
PAUSE 2000
goto setup
ENDIF
CASE 73 'ENTER GORE
IF NOT PRESS THEN x=x+1
IF PONAVLJAJ THEN x=x+1
CASE 67 '<- < + > y
IF NOT PRESS THEN y=y-1
IF PONAVLJAJ THEN y=y-1
CASE 75 '->
IF NOT PRESS THEN y=y+1
IF PONAVLJAJ THEN y=y+1
CASE 37 '2 DOLE DOLE + GORE 2 + ENT X
IF NOT PRESS THEN x=x-1
IF PONAVLJAJ THEN x=x-1
CASE 57 '1
IF NOT PRESS THEN Z=Z-1
IF PONAVLJAJ THEN Z=Z-1
CASE 76 '3 1 + 3 Z
IF NOT PRESS THEN Z=Z+1
IF PONAVLJAJ THEN Z=Z+1
CASE 16 '1 + 2 + 3
GOTO SKRIVENI
END SELECT
TIMEOUT=TIMEOUT+1
IF PRESS THEN TIMEOUT=NE
IF TIMEOUT = %11111111 THEN IZLAZ
GOSUB TIPKA_STISNUTA
RETURN
'_____________________________OCISTI X,Y,Z _______________________________________
Bookmarks