10 çıkışı zamanlı kontrol etme

Başlatan gubaz, 23 Temmuz 2015, 18:26:17

gubaz

merhaba arkadaşlar. Ben özel bir şirkette teknisyen olarak yıllarımı çürütmeye devam ediyorum. bir arkadaşın farklı bir iş için  istediği devreyi tasarladım. devre şu şekilde çalışıyor

10 role çıkışım          RL
10 seçici switchim    SW
1 adette para algılayan mekanizmam var    PM

çalışması şu şekilde olması lazım.

PM low olduğunda ve hangi SW low olursa onun karşılığındaki RL çekecek.

RL çekme zamanını ise kartın üzerindeki önceden jumper ile seçilen değerler belirleyecek.

10dk 20dk 30dk
1tl 2tl 3tl

mesela kartın üzerindeki 20dk ve 3tl seçili ise

PM ' ye 3 defa para attık ve ardından SW3' e bastık. RL3 çekecek ve  20dk çekili kalacak.

tabi bu arada RL3 çekili iken başka bir röleyi tekrar para atarak ve sw seçerek  çalıştırıbilecez...

program aşağıda

şimdiden yardımlarınız için teşekkürler


Cmcon=7
Adcon1=7
TRISA=%000000
TRISB=%11111111
TRISC=%11111111
TRISD=%00000000
TRISE=%00000111
PORTA=0
PORTD=0

SYMBOL SW1=PORTB.0
SYMBOL SW2=PORTB.1
SYMBOL SW3=PORTB.2
SYMBOL SW4=PORTB.3
SYMBOL SW5=PORTB.4
SYMBOL SW6=PORTB.5
SYMBOL SW7=PORTB.6
SYMBOL SW8=PORTB.7
SYMBOL SW9=PORTE.0
SYMBOL SW10=PORTE.1
SYMBOL DK1=PORTC.0
SYMBOL DK2=PORTC.1
SYMBOL DK3=PORTC.2
SYMBOL TL1=PORTC.3
SYMBOL TL2=PORTC.4
SYMBOL TL3=PORTC.5
SYMBOL PM=PORTC.6
SYMBOL RL1=PORTD.0
SYMBOL RL2=PORTD.1
SYMBOL RL3=PORTD.2
SYMBOL RL4=PORTD.3
SYMBOL RL5=PORTD.4
SYMBOL RL6=PORTD.5
SYMBOL RL7=PORTD.6
SYMBOL RL8=PORTD.7
SYMBOL RL9=PORTA.0
SYMBOL RL10=PORTA.1

i var byte
DEFINE OSC 4

PAUSE 5000

ZAMAN:
    if TL1=1 and DK1=1 then
        For i=1 To 10
        Pause 65535
        Next i
        ENDiF

    if TL1=1 and DK2=1 then 
        For i=1 To 20
        Pause 65535
        Next i
        endif
       
    if TL1=1 and DK3=1 then
        For i=1 To 30
        Pause 65535
        Next i
        endif
               
    if TL2=1 and DK1=1 then
        For i=1 To 10
        Pause 65535
        Next i
        endif
       
    if TL2=1 and DK2=1 then
        For i=1 To 20
        Pause 65535
        Next i
        endif
       
    if TL2=1 and DK3=1 then
        For i=1 To 30
        Pause 65535
        Next i
        endif
       
    if TL3=1 and DK1=1 then
        For i=1 To 10
        Pause 65535
        Next i
        endif
       
    if TL3=1 and DK2=1 then
        For i=1 To 20
        Pause 65535
        Next i
        endif
       
    if TL3=1 and DK3=1 then
        For i=1 To 30
        Pause 65535
        Next i
        endif
    RETURN

BASLA1:
IF PM=0 AND SW1=1 THEN
        HIGH RL1
        gosub ZAMAN
        LOW RL1
        endif
        goto BASLA1

BASLA2:
IF PM=0 AND SW2=1 THEN
        HIGH RL2
        gosub ZAMAN
        LOW RL2
        endif
        goto BASLA2
BASLA3:       
IF PM=0 AND SW3=1 THEN
        HIGH RL3
        gosub ZAMAN
        LOW RL3
        endif
        goto BASLA3
       
BASLA4:         
IF PM=0 AND SW4=1 THEN
        HIGH RL4
        gosub ZAMAN
        LOW RL4
        endif
        goto BASLA4
       
BASLA5:       
IF PM=0 AND SW5=1 THEN
        HIGH RL5
        gosub ZAMAN
        LOW RL5
        endif
        goto BASLA5
       
BASLA6:       
IF PM=0 AND SW6=1 THEN
        HIGH RL6
        gosub ZAMAN
        LOW RL6
        endif
        goto BASLA6
       
BASLA7:       
IF PM=0 AND SW7=1 THEN
        HIGH RL7
        gosub ZAMAN
        LOW RL7
        endif
        goto BASLA7
       
BASLA8:       
IF PM=0 AND SW8=1 THEN
        HIGH RL8
        gosub ZAMAN
        LOW RL8
        endif
        goto BASLA8
       
BASLA9:       
IF PM=0 AND SW9=1 THEN
        HIGH RL9
        gosub ZAMAN
        LOW RL9
        endif
        goto BASLA9
       
BASLA10:       
IF PM=0 AND SW10=1 THEN
        HIGH RL10
        gosub ZAMAN
        LOW RL10
        endif
        goto BASLA10
       
     
END


ete

Hiç ilgilenen çıkmadı. Demekki ya açıklamalar yetersiz yada zor bir proje. Bana göre her ikiside geçerli.
Bu proje aslında çok kolaymış gibi gözüken oldukça zor bir proje. Zorluk aslında aynı anda 10 adet rölenin aktif edilme olasılığıdır. Zira sistem bir yandan saniye sayarken bir yandan da yeni bir anahtar seçilmişmi bakmak zorunda. Yine her SN artışında aktif olan rölelerin zaman sayaçlarını artırmak ve her birinin zamanları dolmuşmu dolmamışmı hesaplamak zorundadır ki bu o kadarda kolay bir iş değil.
Açıklamalar yetersiz çünki bir şema ile desteklenmemiş. Bazen şema yerine şemanın tarifinin verilmesi yeterli olmaz.
genellikle görsel hafıza zihinsel hafızadan daha yararlı olur ve kolaylıkla çözüm elde edersiniz. Mesela tarifine göre sistemde TL ve çalışma süresi hesabı PORTC de ilk 6 bit de bağlı pinler üzerinden yapılıyor. Bunu şemada görerek kolaylıkla halletmek mümkün iken bu hesabı çok kişi bir sürü anahtarın tek tek kontrolünü yapmak ister.
Nasıl olabilirki dediğinizi duyar gibi oluyorum. Kolay şöyle;
PORTC nin ilk 3 biti %00000XXX bize rölenin çekili kalma süresini verecek.
PORTC nin sonraki 3 biti %00XXX000 ise bize kaç adet para atılmasını gösterecek.
Önce PORTC yi okurum.  Örnek ile devam edersek; PORTC=%00001010  olsun. Buradan rölenin 20 dakika açık kalacağını ve 1 adet TL atılması gerekeceğini görebiliyorum.
Önce kaç adet TL atılması gerektiğini bulalım; PARA=(PORTC & (%00111000))>>3: TL=ncd PARA
Sonra kaç dak çalışacağını bulalım.
SURE=PORTC & (%00000111): DAK=(ncd sure)*10

Açıklama yetersiz dedik. Bir yetersizlik de bir rölenin aktive edilmesi için şartlar sıralı olarak açıklanmamış.
Ben bir işlem başlatmak için PM ye mi bakacağım yoksa önce bir Switch LOW olacakmı onamı bakmalıyım. Bu belirtilmediği için sistem nasıl aktive edilecek belirlemek zor. Mantığım bana önce switch ile bir seçim yapılacağını buna bağlı olarak da para adedinin belirlenmesi gerektiğini ve ardından bu kadar paranın atılıp atılmadığının kontrol edilmesi gerektiğini söylüyor.
Peki 3 adet para atılması gerekirken kullanıcı 2 adet para attı ne olacak? sistem sürekli bir sonraki parayı geldimi gelmedimi diye kontrol ederken zaman sayma işi aksayabilir. Bu gibi olasılıklar her zaman değerlendirilmeli ve sistem güzel bir senaryoya bağlanmalıdır.

zaman saymanın sıhhatli yapılması için timer kesmesi kullanılarak geri planda ve ana programdan etkilenmeyen bir zaman saydırma sistemi seçilmeli ve bu sistem yalnızca bir tek SN sayacını artırmalı. Buna bağlı olarak aktif olan röle sayacları ayrıca artırılmalıdır.

İşin kontrol kısmı çok zaman alan bir iş gibi gözüküyor. Bu nedenle zamanı kısaltmak amacı ile aktif röleler için arı bir değişken (16 bit) kullanılmalı ve tek bir index değişkeni kullanılarak hem aktif olan röle zamanları artırılmalı hem süresi dolan röleler kapatılmalıdır.

Projenin ana hatlarını ve kritik noktalarda olası kod şeklinide gösterdim. Bu söylediklerim bile bu projeyi gerçekleştirmek için yeterli değil. Ancak bu aşamada fazlasınıda söylemek zor. Zira çıkacak zorluklar programın yazım aşamasında değerlendirilip gerekirse algoritma değişikliğine gidilmesi gerekiyor.
Projeyi toparlamak gerekir ise,
Seçilen anahtarlardan aktif rölelerin hesabı bir değişkende tutulmalı. Mesela adı AKTF olan 16 bitlik bir değişkenin ilk 10 biti bu işi kolaylıkla yapabilir.
Seçilmiş anahtarların durumu MEVCUT isimli bir 16 bitlik değişkende tutularak program akışı içinde anahtarlar sürekli okunarak MEVCUT ile karşılaştırılmalı ve farklılık var ise yeni bir rölenin aktive edileceği anlaşılmalıdır. Yeni rölede sonradan MEVCUT a ilave edilerek aynı işlem program akışı içinde tekrarlanmalıdır.
Yeni bir röle aktive edilirken önce Dakika hesabı ve TL hesabı yukardaki şekilde yapılmalı ve TL hesabı hemen PM üzerinden test edilerek yeterli para atıldımı kontrol edilerek ilgili röle aktive edilmelidir.
Sonradan süresi SURE[INDEX] şeklinde hangi röleye ait ise onun numarasını index olarak kullanıp bu değişkene yerleştirilmelidir.
Her Dakika değişiminde
FOR I=0 to 9
  IF DAK=SURE[I] and AKTIF.0[I]=1 THEN ROLEKAPAT
NEXT
şeklinde akrif olupta süresi dolmuş rölelerin kapatılması yapılmalıdır.
Şimdilik bu kadar akıl yeter herhalde. Eksikler çıktıkça sorulmalı ve tamamlanmalıdır.

Ete


ete

Bu proje için bir işlem sırası gerekir. Önce para mı atılıyor yoksa önce hangi sw yi seçecek isem onu seçip sonra mı para atacağım. Bence önce sw seçip ne yapacağımı makinaya bildirmeli sonra işe uygun para adedini atmalıyım diye düşünüyorum.
Şayet önce para atılıp sonra sw seçiliyor ise PM nin low olup olmadığını sürekli kontrol etmek gerekecek.
LOW olmuş ise yeterince adet TL atılmışmı kontrol ettikten sonra basılan sw üzerinden ilgili röle aktif edilip zaman sayacı set edilmeli.

Sıralama bu işte önemli işlem sırasını bildir lütfen.
Ete

gubaz

şöyle anlatayım...

mesela bu cihazın üstünde 2tl ile çalışır yazacak. bunun için zaten elektronik kart üzerindeki TL2ye jumper edip pici buna uyaracak. yine her ücretin kaç dak. olacağınada elektronik kart üzerinde belli edilecek. yani cihaza enerji verildiğinde DK ve TL ayarları değiştirilmeyecek.

adam 2tl atınca PM iki defa low yapacak pimi.
sonra eleman hangi röleyi kullanacaksa onun switch ine bascak. o SW low olacak ve bizim zaman döngümüz kaç dk ise o kadar süre röleyi çekili bırakacak.

dediğiniz gibi adam 1tl attı daha da para atmadı. bi dahaki para atana kadar beklesin. ama bu seferde başka biri gelip 2tl daha atarsa o önceden fazla atılan 1tlyi de yapacak birşey yok.


kudretuzuner

#4
Merhaba,
Burada en büyük sıkıntı atılan paranın gerçek olup olmadığıdır.Para gerçek ise,şöyle çalışan bir tasarım geliştirilebilir.Kısa aralıklarla atılan paraları sayan pic para atımı bittikten belli bir süre bekledikten sonra para gelmeyince kaç adet atıldı ise o röleyi aktif eder.Bence sivice gerek olmadan da çalışabilir.Ete beyin dediği gibi biraz kapsamlı bir projedir.

gubaz

hiç aklımda yokken ve basit geldiği için aldım bu projeyi. halbuki picle yakından uzaktan ilişkim yok tanımıyorum :)

10 adet sw var. bu 10 adet sw 10 farklı çıkılı kontrol ediyor

para mekanizmasını araştırdım. paranın ağırlığına göre onay için low'a çekme yada high'a çekme çıkışları var. yani sahte para derdimiz yok

ete

Para atma ile switchlerin hangisinin basıldığı arasında zaman farkı olursa basılan switchin kaçırılma ihtimali var gibi geliyor bana.
her şeyi gözümüzde canlandıramıyoruz maalesef.

Acaba basılan yada seçilen sw. basılı kalıyormu yoksa para atıldığı anda hem switche basılıp aynı zamanda paramı atılıyor.
Diyelimki açıklamana göre önce para atılıyor. Sonra program bir switche basılmasınımı beklesin yoksa o anda hangi sw basılı ise onumu değerlendirsin?

İşin bu kısmında açıklarsan sevinirim.
Ete

gogoce

usta sen tetelefon şarj istasyonu mu yapmaya çalışıyorsun
Ne ukalayı affederim nede yapılan haksızlığı ...
Ya sus adam sansınlar , yada adam gibi kouş ilham alsınlar

İlyas KAYA

Alıntı yapılan: gogoce - 24 Temmuz 2015, 17:51:12
usta sen tetelefon şarj istasyonu mu yapmaya çalışıyorsun

Bence de asıl soru bu tarz olmalı. Yani yapılacak sistem nedir ?
Belki en baştan yanlış yoldasınız. Eğer yapılacak olan sistemi bilir isek fikirler çıkacaktır.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

MS_59

dediğiniz gibi şarj istasyonu galiba ses çıkmadı
mehmet

ete

Evet bu proje bir Şarjmatik projesi. Özel mesajla bana bildirildiği için ben açıklayayım dedim.
İstenenler şunlar;
Sistemde 10 adet anahtar, bir para algılama mekanizması (Para görünce aktif LOW oluyor)
10 adet röle çıkışı mevcut. Diğer detaylar henüz belli değil. Ama bu kadar detayla bile proje yapılabilir nitelikte.
Senaryosu ise şöyle;
- Sistem de 2 adet 3 er pinli dip switch bağlı (PORTC.0-2 Röle Çekme süresi default değer seçimi) ve PORTC.3-5 Atılacak Para adedi seçimi). Bunlarda pinler HIGH da bekliyor low olan aktif oluyor. Örneğin Röle çekme süresinde ;
PORTC.0=0 ise Sure 10 dak.  PORTC.1=0 ise 20 dak. PORTC.2=0 ise 30 dak.
PORTC.3=0 ise 1 adet TL., PORTC.4=0 ise 2 adet TL. PORTC.5=0 ise 3 adet TL atılması gerekecek.
Sistem bu dip switchleri okuyarak default çalışma süresi ile default para adedini bilecek.
- Birisi gelip default para adedi kadar para atıp , 10 adet anahtardan birisini seçer ise  ilgili röle çıkışı aktif edilecek ve default süre çalışmaya başlayacak. Diyelimki 1 nolu anahtar seçilerek 1 nolu röle çıkışı aktif edildi. Bu röle diyelimki 10 dakika sonra otomatik kapanacak.
- Bir röle aktif halde iken diyelimki bir kaç dakika sonra başka birisi para atıp başka bir anahtarı seçer ise bu sefer ona ait röle çekilecek ve yine default süresi kadar bu rölede çekili kalacaktır.
Sonuçta aynı anda veya değişik anlarda 10 ayrı röle aktif edilebilecek ve her biri kendi süreleri kadar çalışıp sonra otomatik kapanacaklar.

Atılacak para adedi birden fazla olabileceği için ve sistemde LCD falan görsel bir eleman olmadığı için atılan para sayısının yeterli seviye ye gelmesi halinde bir ledin yakılması bana göre gerekli. Böylece sisteme boş pinlerden birine (PORTC.7) bir led ilave edilmesi uygun olacaktır.

Sistem 3 adet para gerektiriyor ve 2 adet atılmış ise 3. cü para atılmadan herhangi bir röle çıkışı aktif olmamalıdır. Sistem bir yandan zaman sayarken bir yandan da atılan paraları sayabilmeli ve yeterli para miktarına ulaşınca seçilen röleyi aktif edebilmelidir.

Yeterli para atılmış ve henüz bir anahtar seçilmemiş ise sistem bunu bilmeli ve bir yandan süre sayarken (Mevcut aktif edilmiş röle zamanlarını) bir yandan da bir anahtarın seçilip seçilmediğini kontrol etmelidir.

Aklıma gelen ve olmasıgereken detaylar bunlar.  Olması gerekenler hakkında başka alternatif fikri olan var ise söylesin lütfen.

Aklıma geldi para atma ve anahtar seçme işlemleri ya önce anahtar seçip sonra para atma şeklinde yada önce para atıp sonra anahtar seçme şeklinde de olabilmelidir. Zira bazısı öncen atar sonra tuşa basar bazısı önce tuşa basar sonra parasını atar ve para atılınca tuşu bırakır şeklinde uygulama yapabilir. Elbette önce anahtar seçilmiş ise para atma süreci boyunca anahtar bırakılmamalı ve yeterli para atıldıktan sonra anahtar yada buton her neyse bırakılarak seçim yapılmış olmalıdır.
Öncen para atılıp sonra tuşa basılacak ise yeterli para atıldıktan sonra tuşa basılıp bırakılmalıdır.

Ete

İlyas KAYA

#11
Şimdi daya iyi oldu hocam. Böylece olası senaryolar netleşmiş oldu.

10 ayrı sayaç aynı anda aktif olabilmekte. Hmmm. Biraz kafa karıştırıcı ama bir algoritma çıkartarak çözülmeyecek şey değil.

- Para atılmadan zaten hiç bir işlem yapılmayacağına göre öncelik ile para girişi okunur ve tuşa basması beklenir.
- Eğer önce tuş basıldı ise para atması için uyarı verilir.

Buraya kadar sorun yok sanırım.

Asıl mesele 10 ayrı sayacı aynı anda saydırmak ve start stop sürelerini belirlemek için bir algoritma oluşturmak.

- 10 ayrı sayaç kurulur. 10 ayrı sayacın star biti (işaret) her bir butona atanır.
- Start bitini alan sayaç kendi rolesini çeker ve kendi süresi sonunda kendi rolesini bırakır.

Tek bir döngü içerisinde hepsinin bitmesi gerekecek. Biraz deneme yapayım hazır uykumu almışken.

Ekleme; İşlemci ne kullanıcak onu da belirtirseniz daha iyi olacak.

Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

ete

işlemci 16F877A olacak. Zaten fazlasına gerek yok.

Ete

İlyas KAYA

Tek eksik bişey kaldı hocam. Diyelim ki para attım role çekti. 10 dk açık kalacak.

5 dk sonra tekrar para attım ve aynı butona tekrar bastım. Sure sıfırlanmalımı ? yoksa 10 dk sonra tekrar mı aynı butona basmak gerekecek ?
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

İlyas KAYA

Aşağıdaki kodlarını bir inceleyin. Mantık hataları olabilir ama çalışıyor. Çıkışları daha kısa yoldan buton girişlerine göre de ayarlayabilirdim ancak açık olmasını daha çok seviyorum :)

Atılan para sayısı kadar hak verme işlemi yaptım.
Diyelim 2 paraya ayarlı. Her 2 parada bir 1 hak veriyor. Hak bittiğinde ise yeni eklediğim uyarı ledi yanıp sönüyor.
Bütün program 100 ms gecikme ile çalışıyor ve tek döngü içerisinde bitirildi.
Süre hesaplarını 100ms ve katları olarak yapmak gerekecek.
Butona tekrar basılırsa işlemini yapmadım artık o kadarı da size kalsın :)





'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 26.7.2015                                         *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
   #CONFIG
      __config _XT_OSC & _WDT_ON & _CP_ALL & _LVP_OFF & _PWRTE_ON
#ENDCONFIG

        Cmcon=7
Adcon1=7
TRISA=%000000
TRISB=%11111111
TRISC=%11111111
TRISD=%00000000
TRISE=%00000111
          option_reg.7=0

   DEFINE OSC 4
   
SYMBOL SW1=PORTB.0
SYMBOL SW2=PORTB.1
SYMBOL SW3=PORTB.2
SYMBOL SW4=PORTB.3
SYMBOL SW5=PORTB.4
SYMBOL SW6=PORTB.5
SYMBOL SW7=PORTB.6
SYMBOL SW8=PORTB.7

SYMBOL SW9=PORTE.0
SYMBOL SW10=PORTE.1

SYMBOL DK1=PORTC.0
SYMBOL DK2=PORTC.1
SYMBOL DK3=PORTC.2

SYMBOL TL1=PORTC.3         
SYMBOL TL2=PORTC.4
SYMBOL TL3=PORTC.5

SYMBOL PM=PORTC.6           'paramatikten gelen pals

SYMBOL RL1=PORTD.0
SYMBOL RL2=PORTD.1
SYMBOL RL3=PORTD.2
SYMBOL RL4=PORTD.3
SYMBOL RL5=PORTD.4
SYMBOL RL6=PORTD.5
SYMBOL RL7=PORTD.6
SYMBOL RL8=PORTD.7
SYMBOL RL9=PORTA.0
SYMBOL RL10=PORTA.1

symbol uyar=porta.2

PORTA=0
PORTB=0
PORTC=0
PORTD=0

TIMER1 VAR WORD
TIMER2 VAR WORD
TIMER3 VAR WORD
TIMER4 VAR WORD
TIMER5 VAR WORD
TIMER6 VAR WORD
TIMER7 VAR WORD
TIMER8 VAR WORD
TIMER9 VAR WORD
TIMER10 VAR WORD





ADET var byte
sure var byte

pmkes var bit

girenpara var byte

hak var byte

    I VAR BYTE
   
    LEDUYAR VAR BIT
    LEDSURE VAR BYTE
    LEDSAY VAR BYTE
   
    BUTONKES VAR BIT
       

clear





PAUSE 500

'FOR I=1 TO 5
'UYAR=1
'PAUSE 200
'UYAR=0
'PAUSE 200
'NEXT

   

   
   HAK=0    ' deneme için 50 yapıldı.
   

basla:

sure = (portc & %00000111)       'dip switch oku sureyi hesapla
if sure=0 then sure=1

adet=((portc & %00111000) >>3 )+1 ' diwswitch oku adet hesapla   

'############################# PARA ATILMALARINI SAY #############

if pm=1 then pmkes=0

if pm=0 and pmkes=0 then
pmkes=1

girenpara = girenpara+1

if girenpara>=adet then           ' ayarlanan paraya eşitlenince hak ver
hak=hak+1
girenpara=0
endif

endif

'################################################################

'##################### PARA ATILMAMIŞ İSE UYARI VER
IF PORTB=255 AND PORTE=%011 THEN BUTONKES=0


IF BUTONKES=0 THEN              'BUTONLARA BAK

if  SW1=0 OR SW2=0 OR SW3=0 OR SW4=0 OR SW5=0 OR SW6=0 OR SW7=0 OR SW8=0 OR SW9=0 OR SW10=0 THEN
BUTONKES=1


            if HAK=0 THEN
            LEDUYAR=1
            ELSE
   
    HAK=HAK-1
    IF HAK>200 OR HAK=0 THEN HAK=0
   
'PORTD = PORTD + (255- PORTB)                      'ÇIKIŞLARI AYARLA

IF SW1=0 THEN PORTD.0=1
IF SW2=0 THEN PORTD.1=1
IF SW3=0 THEN PORTD.2=1
IF SW4=0 THEN PORTD.3=1
IF SW5=0 THEN PORTD.4=1
IF SW6=0 THEN PORTD.5=1
IF SW7=0 THEN PORTD.6=1
IF SW8=0 THEN PORTD.7=1
IF SW9=0 THEN PORTA.0=1
IF SW10=0 THEN PORTA.1=1


    ENDIF
   

ENDIF

ENDIF ' BUTON KES



'################## LED YAKIP SÖNDÜR #################
IF LEDUYAR=1 THEN
LEDSURE=LEDSURE+1
LEDSAY=LEDSAY+1

IF LEDSURE<2 THEN UYAR=1
IF LEDSURE>3 THEN UYAR=0
IF LEDSURE=5 THEN LEDSURE=0

    IF LEDSAY>=10 THEN
    LEDSAY=0
    LEDSURE=0
    LEDUYAR=0
    ENDIF

ENDIF

'########################################################################################



'portd=sure

'###################### ZAMANLAMALAR ###################################
' süreler 600 olacak denemek için 60 yaptım 60*100 = 6 sn , 600*100 = 1dk * ayarlanan süre
IF RL1=1 THEN
TIMER1=TIMER1+1

       IF TIMER1=60*SURE THEN
       RL1=0
       TIMER1=0
       ENDIF
       
       
ENDIF

IF RL2=1 THEN

TIMER2=TIMER2+1
IF TIMER2=60*SURE THEN
       RL2=0
       TIMER2=0
       ENDIF
ENDIF

IF RL3=1 THEN
TIMER3=TIMER3+1
IF TIMER3=60*SURE THEN
       RL3=0
       TIMER3=0
       ENDIF
ENDIF

IF RL4=1 THEN
TIMER4=TIMER4+1
IF TIMER4=60*SURE THEN
       RL4=0
       TIMER4=0
       ENDIF
ENDIF

IF RL5=1 THEN
TIMER5=TIMER5+1
IF TIMER5=60*SURE THEN
       RL5=0
       TIMER5=0
       ENDIF
ENDIF

IF RL6=1 THEN
TIMER6=TIMER6+1
IF TIMER6=60*SURE THEN
       RL6=0
       TIMER6=0
       ENDIF
ENDIF

IF RL7=1 THEN
TIMER7=TIMER7+1
IF TIMER7=60*SURE THEN
       RL7=0
       TIMER7=0
       ENDIF
ENDIF

IF RL8=1 THEN
TIMER8=TIMER8+1
IF TIMER8=60*SURE THEN
       RL8=0
       TIMER8=0
       ENDIF
ENDIF

IF RL9=1 THEN
TIMER9=TIMER9+1
IF TIMER9=60*SURE THEN
       RL9=0
       TIMER9=0
       ENDIF
ENDIF

IF RL10=1 THEN
TIMER10=TIMER10+1
IF TIMER10=60*SURE THEN
       RL10=0
       TIMER10=0
       ENDIF
ENDIF




'#######################################################################





pause 100

goto basla


end


Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Powered by EzPortal