'****************************************************************
'*  Name    : 7 szegmens.BAS                                    *
'*  Author  : Kardos Attila ing.                                 *
'*  Notice  : Copyright (c) 2006 [set under view...options]     *
'*          : All Rights Reserved                               *
'*  Date    : 2006. 07. 12.                                     *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
DEFINE OSC 4

ora var byte
perc var byte
beugras var byte
cifra var byte
maska var byte
masodperc var byte
vilagit var bit
eloszor var bit
szoras var byte
szorasp var word
szido var byte
i var byte
poz var byte
idok var byte[6]
olvaspoz var byte
lehet var bit
vilagitas var bit

TRISB = %11100000
TRISA = %00010000

PORTA = %00010000

ora = 0
eloszor = 0
vilagit = 0
cifra = 0
perc = 0
beugras = 0
masodperc = 0
szoras = 5
szido = 0
lehet = 1
vilagitas = 1

OPTION_REG = %10000011		' TMR0 beállitása, előosztó 1:32
TMR0 = 5
INTCON = %10100000          ' TMR0 megszakitás engedélyezése

inic:
read 1,szoras
olvaspoz=0
for i=2 to 8
read i,idok[olvaspoz]
olvaspoz=olvaspoz+1
next i
szorasp=szoras
'resume
		
ON INTERRUPT Goto megszakitas   ' megszakitási vektor

Disable
ora_beallitas:

low PORTA.0
low PORTA.1

    if PORTB.7 = 0 then
    ora = ora + 1
    pause 200
    endif
    if ora = 24 then
    ora = 0
    endif
    if PORTB.6 = 0 then
    pause 1000
    goto perc_beallitas
    endif

cifra = ora dig 0
gosub kiszedes
PORTB = maska
high PORTA.0
pause 10
low PORTA.0

cifra = ora dig 1
gosub kiszedes
PORTB = maska
high PORTA.1
pause 10
low PORTA.1
goto ora_beallitas


perc_beallitas:
low PORTA.3
low PORTA.2

    if PORTB.7 = 0 then
    perc = perc + 1
    pause 200
    endif

    if perc = 60 then
    perc = 0
    endif

    if PORTB.5 = 0 then
    pause 1000
    goto kesz
    endif

cifra = perc dig 0
gosub kiszedes
PORTB = maska
high PORTA.3
pause 10
low PORTA.3

cifra = perc dig 1
gosub kiszedes
PORTB = maska
high PORTA.2
pause 10
low PORTA.2
goto perc_beallitas

kiszedes:
Lookup cifra,[$00,$01,$02,$03,$04,$05,$06,$07,$08,$09],maska  '[$00,$01,$02,$03,$04,$05,$06,$07,$08,$09]
return

kesz:
enable


main:
'read 1,szoras
'olvaspoz=0
'for i=2 to 10
'read i,idok[olvaspoz]
'olvaspoz=olvaspoz+1
'next i

if portb.7 = 0 then goto menu

if porta.4 = 0 then
pause 500
    if vilagitas = 0 then
    vilagitas = 1
    else
    vilagitas = 0
    endif
endif


if perc = 0 and lehet = 1 then
    for i=0 to 6
    if idok[i] != 255 then
        if idok[i] = ora then
        while szorasp != masodperc 
        high portb.4
        'pause szorasp
        wend
        low portb.4
        szorasp=szoras
        lehet=0
        endif
    endif
    next i
endif



cifra = ora dig 0
gosub kiszedes1
PORTB = maska
'gosub led
if vilagitas = 1 then
high PORTA.0
pause 1
low PORTA.0
else
pause 1
low PORTA.0
endif

cifra = ora dig 1
gosub kiszedes1
PORTB = maska
'gosub led
if vilagitas = 1 then
high PORTA.1
pause 1
low PORTA.1
else
pause 1
low PORTA.1
endif

cifra = perc dig 0
gosub kiszedes1
PORTB = maska
'gosub led
if vilagitas = 1 then
high PORTA.3
pause 1
low PORTA.3
else
pause 1
low PORTA.3
endif

cifra = perc dig 1
gosub kiszedes1
PORTB = maska
'gosub led
if vilagitas = 1 then
high PORTA.2
pause 1
low PORTA.2
else
pause 1
low PORTA.2
endif
goto main

menu:


low porta.3
low porta.1
low porta.0
low porta.2

if porta.4=0 then
pause 200
goto ora_beallitas
endif


if portb.5 = 0 and portb.7=0 then goto ora_beallitas

if portb.6 = 0 then
pause 300
  for i=2 to 8
  write i,255
  next i
  poz=2 
 while portb.5 = 1
  if portb.7 = 0 then
    pause 100
    szido = szido + 1
    if szido >24 then szido = 0
  endif
  
    if portb.6 = 0 then
        write poz,szido
        poz=poz+1
        if poz=8 then poz=2
        'high porta.4
        pause 1000
        'low porta.4
        masodperc = masodperc + 1
    endif
    
    cifra = szido dig 0
    gosub kiszedes1
    PORTB = maska
    'gosub led
    high PORTA.0
    pause 1
    low PORTA.0

    cifra = szido dig 1
    gosub kiszedes1
    PORTB = maska
    'gosub led
    high PORTA.1
    pause 1
    low PORTA.1 
   wend
    
    olvaspoz=0
    for i=2 to 8
    read i,idok[olvaspoz]
    olvaspoz=olvaspoz+1
    next i 
  goto main
endif
  
    

if portb.5=0 then
    szoras = 5
    while portb.6 = 1
        if portb.7 = 0 then
        pause 100
        szoras = szoras +1
        if szoras >= 30 then szoras=5
        endif

        cifra = szoras dig 0
        gosub kiszedes1
        PORTB = maska
        high PORTA.0
        pause 1
        low PORTA.0

        cifra = szoras dig 1
        gosub kiszedes1
        PORTB = maska
        high PORTA.1
        pause 1
        low PORTA.1
    wend
    write 1,szoras
    szorasp=szoras   
    goto main
endif
goto menu
return


kiszedes1:
Lookup cifra,[$00,$01,$02,$03,$04,$05,$06,$07,$08,$09],maska
'if maska = $00 then kiirando = 
return

'led:
'if vilagit = 1 then
'High PORTB.4
'else
'if vilagit = 0 then
'Low PORTB.4
'endif
'endif
'return

Disable
megszakitas:
beugras = beugras + 1
pauseus 17
if beugras < 217 then goto kilepes
'pauseus 35
'pauseus 257
beugras = 0
'pause 100
'if vilagit = 1 then
'vilagit = 0
'High PORTB.4
'else
'if vilagit = 0 then
'vilagit = 1
'Low PORTB.4
'endif
'endif

masodperc = masodperc + 1
    if masodperc >= 60 then
    masodperc = 0
    perc = perc + 1
        if perc >= 60 then
        perc = 0
        lehet = 1
        ora = ora + 1
            if ora >= 24 then
            ora = 0
            endif
        endif
    endif
kilepes:
TMR0 = 5
INTCON.2 = 0    ' a megszakitást jelző bit törlése
Resume
Enable ' megszakitás újboli engedélyezése

end
