Bu kodda ledin sönmesinin nedeni nedir?

Başlatan Okan12345, 20 Şubat 2014, 13:09:52

Okan12345

İyi Günler. Sayın Arkadaşlar. Ete Hocanın Pic Basic Dersleri Makelesinde Proje4 isimli örnek programda kod var aşağıda paylaştım.

Burada bir şeyin mantığını anlamadım.
Tus0 a bastığımızda Led0 yanıyor Tuş1 bastığımızda ise Led0 sönerek Led1 yanıyor.

Benim anlamadığım şudur Led0 neden sönüyor? Sönmesi için komut yok ama.
Rica ediyorum basit bir şekilde anlatırmısınız?

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [Nurettin GÖKAŞAN]                                *
'*  Notice  : Copyright (c) 2005 [nurimelek]                    *
'*          : All Rights Reserved                               *
'*  Date    : 15.04.2005                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
TrisA=255
Trisb=0
'------------------------------------------------------------------------------------------------------------
@ DEVICE pic16F628                      'işlemci 16F628                                
@ DEVICE pic16F628, WDT_ON              'Watch Dog timer açık
@ DEVICE pic16F628, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628, MCLR_ON             'MCLR pini kullanılıyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak 
'---------------------------------------------------------------------------------------------------------------
CMCON=7    '16F628 de komparatör pinleri iptal hepsi giriş çıkış
'---------------------------------------------------------------------------------------------------------------
SYMBOL TUS0=PORTA.0
SYMBOL TUS1=PORTA.1
SYMBOL TUS2=PORTA.2
SYMBOL TUS3=PORTA.3
SYMBOL TUS4=PORTA.4

LED0   VAR    PORTB.0
LED1   VAR    PORTB.1
LED2   VAR    PORTB.2
LED3   VAR    PORTB.3
LED4   VAR    PORTB.4

PORTB=0
'------------------------------------------------------------------------------------------------------------------------

BASLA:  
        IF TUS0=0 THEN   'Tuşa basılmadığı zaman Tus=1 dir basılınca 0 olur.
           TOGGLE LED0   ' LED'in durumunu değiştir yak veya söndür.
           WHILE TUS0=0  ' hala tuşa basılı tutuluyor ise
           wend          ' bırakılıncaya kadar bekle.
        endIF            ' tuş bırakılınca buraya geç.
         
        IF TUS1=0 THEN TOGGLE LED1
        IF TUS2=0 THEN TOGGLE LED2
        IF TUS3=0 THEN TOGGLE LED3
        IF TUS4=0 THEN 
           TOGGLE LED4
           WHILE TUS4=0
           WEND
        ENDIF
        
' TUS kullanımı son derece değişik neticeler verir. Yukarıdaki örnekte 
' toplam 5 adet Tuş bulunmaktadır. İlk tuş ile sonuncu tuş korumaya alınmıştır.
' korumadan kasıt tuşa bir kere basılınca Toggle komutu icra edilmekte ancak
' tuş bırakılıncaya kadar başka hiç bir işlem yapılmamaktadır.
' Diğer tuşlarda ise koruma yoktur. Toggle komutu yerine getirildikten sonra
' program çok hızlı bir şekilde yeniden aynı tuşa bakmakta ve şayet halen basılı
' ise bir kez daha toggle komutunu icra etmektedir. Tüm tuşları deneyerek aradaki
' farkı görmeye çalışınız. Gerekirse PAUSE 100 süresini daha da kısaltarak farkı görmeye
' çalışınız.
          
        PAUSE 100
        GOTO BASLA
END

EGE

TOGGLE komutu yapılan işlemin tersini yapar yani led yanıyorsa  tekrar aynı tuşa  bastığında söndürür.

z

#2
Dediğin gibi TUS1 e basınca LED0 ın sönmemesi gerekir.

Acaba TUS0 ve TUS1 yolları arasında bir pislik falan mı kalmış?

LED0 sönükken TUS1 e basınca ne oluyor?

Yada TUS0 Basılı iken parmağını kaldırmadan TUS1 e bassan bu andan sonra TUS0'dan parmağını çeksen ne oluyor?

Yada avometre ile TUS0 ve TUS1 bir birine bağlımı kontrol et.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Okan12345

Pislik derken devresini yapmadım. Proteusda deniyorum. Mantığını öğrenmeye çalışıyorum.
Pic basice yeni başladım sayılır.

Proteusda devre şöyledir. Beş adet led beşer adette button var. 
Tus0 bastığımda Led0 yanıyor. Tus1 bastığımda ise led0 sönerek led1 yanıyor ve böylece sırayla aynı durum led2,led3,led4 içinde geçerli.
Yanı mantığını öğrenmeye çalışıyorum. Bir sorun yoktur.
Lütfen detaylı anlatırmısınız olayı bana?

z

TUS1 e basınca yanmakta olan LED0 nasıl söner ben de anlamadım.

WDT_ON u OFF yapmayı dene. O sonduruyor galıba.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

xoom

o led sönmüyordur led bacağının birisi gri renk oluyordur (İsis devrende ledleri direk Pic'in pinlerine bağladıysan eğer )..
ISIS devrende ledlere 100ohm ön direnç koyarsan aslında sönmediklerini görebilirsin.

mert53

aslında yazılımında sıkıntı yok 0 ve 4 nolu tuslara while wend koyman güzel ama değerlerine koymazsan butona basılı tuttukca led yanar söner. isis simulasyon kısmında sıkıntın olarabilir. butonlara pull up direnci koydun mu
5388110116 [email]mertsubasili@hotmail.com[/email] / ABB Control Builder AC500. ABB HMI Scada. Siemens Wincc Scada. Zenon Scada. OPC Haberlesme. Picbasic. Ares - Isis

Okan12345