3 Bit sayıcı için yardım eder misiniz

Başlatan oongit, 29 Aralık 2012, 21:50:28

oongit

Merhaba Arkadaşlar...

Protonu yeni yeni öğrenmeye çalışıyorum. Çok çok az da olsa PBP deneyimim var. İçinden çıkamadığım bir konu var... Linkteki ( http://b1212.hizliresim.com/14/x/hfj4v.png ) şemada da görüldüğü üzere GPIO.3 ve GPIO.4'e bağlı 2 adet butonum var. Bu butonlarla GPIO.0, GPIO.1 ve GPIO.2 çıkışlarından 3 bit saydırmak istiyorum. Ama kodlarını çözemedim. Bu konuda yardımınızı rica ediyorum.

PIC başlangıçta "111" olarak çıkış vermeli.
"ARTTIR" butonuna her bastığımda 110-101-100-011-010-001-000 olarak sayabilmeli.
"AZALT" butonuna her bastığımda da tam tersi
PIC'in dahili osilatörünü kullanmak istiyorum.

Bu devreyle 4051 entegresini kontrol edebilmeyi planlıyorum. Umarım anlatabilmişimdir. Şimdiden teşekkür ediyorum. Hayırlı geceler...
Device = 12F675
Config INTRC_OSC_NOCLKOUT, MCLRE_OFF, WDT_OFF, PWRTE_ON
CMCON = 7
ANSEL = 0
Xtal = 4
All_Digital TRUE

TRISIO = %011000
High GPIO.0
High GPIO.1
High GPIO.2

BASLA:
    If GPIO.3 = 0 Then GoSub ARTTIR
    If GPIO.4 = 0 Then GoSub AZALT
    GoTo BASLA
    
ARTTIR:
AZALT:

End

t2

#1
...
dim say as byte
...
High GPIO.0
High GPIO.1
High GPIO.2
delayms 1000
say = 0
git:

        if button1 =0 then 
        while button1 =0
                delayms 100
        wend
        say = say +1
        if say > 8 then say=0

        endif
       
        if button0 =0 then 
        while button0 =0
                delayms 100
        wend
        if say > 0 then         say = say -1
        endif
       

        GPIO.0= say.0
        GPIO.1= say.1
        GPIO.2= say.2

        
        


goto git


oongit

#2
Teşekkür ederim "t2"

Derlemede hata veriyor." button1 not found" diyor.

Edit: button1 ve 0'ı GPIO.3 ve 4 olarak değiştirdim çalıştı... Şimdi bu çıkışlara 4051 bağlayıp sonuca ulaşmaya çalışacağım. Tekrar teşekkür ediyorum, saygılarımla...

mesaj birleştirme:: 29 Aralık 2012, 22:20:51

Peki yazılan kod, dahili osilatörü kullanmak için doğru mudur? Dahili osilatörle ilgili bir işlem yapmamıştım daha önce...

OG

INTRC_OSC_NOCLKOUT
doğru.

Bunu da ekle
Set_OSCCAL
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

oongit


OG

Device = 12F675
Config CPD_OFF, CP_ON, BODEN_OFF, MCLRE_OFF, PWRTE_ON, WDT_OFF, INTRC_OSC_NOCLKOUT
Set_OSCCAL
Declare Xtal 4
All_Digital = TRUE

gibi
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

oongit

İkinize de çok teşekkür ederim arkadaşlar... Saygılarımla...

ipek

biraz değiştirdim sonuçta çalıştı fakat artır butonu 0..7'ye kadar sayıp tekrar başa dönüyor sizde'de öylemi??
http://f1212.hizliresim.com/14/x/hfpy7.jpg

Device = 12F675
Config CPD_OFF, CP_OFF, BODEN_OFF, MCLRE_OFF, PWRTE_ON, WDT_OFF, INTRC_OSC_NOCLKOUT
Set_OSCCAL
Declare Xtal 4
All_Digital = TRUE 

TRISIO = %00111000      ' Set PORTIO 0,1,2, outputs,3, 4,5 inputs
WPU = %110000       	' any pin pullup  1 pull 0 disable pin ,GPIO.4,5 Pull
OPTION_REG.7=0      	' pullup enables
GPIO = 0                ' All Port Clear

Dim say As Byte
Dim Button0   As  GPIO.4
Dim Button1   As  GPIO.5

High GPIO.0
High GPIO.1
High GPIO.2
DelayMS 200
say = 0
git:

        If Button1 =0 Then 
        While Button1 =0
                DelayMS 100
        Wend
        say = say +1
        If say > 8 Then say=0

        EndIf
       
        If Button0 =0 Then 
        While Button0 =0
                DelayMS 100
        Wend
        If say > 0 Then         say = say -1
        EndIf
       

        GPIO.0= say.0
        GPIO.1= say.1
        GPIO.2= say.2

        

GoTo git

oongit

Alıntı yapılan: ipek - 29 Aralık 2012, 23:54:34
biraz değiştirdim sonuçta çalıştı fakat artır butonu 0..7'ye kadar sayıp tekrar başa dönüyor sizde'de öylemi??

Evet bende de öyle çalışıyor.

ipek

o zaman t2 hocam tekrar bir el atmanız gerekecek 7 yi geçmesin nasıl limitleyeceğiz.???

t2

If say > 8 Then say=0
If say >7 Then say=7

ipek

t2 hocam nokta vuruş elinize sağlık..