avatar_medes

PORTB nin OR lanması

Başlatan medes, 07 Şubat 2012, 12:54:28

medes

arkadaşlar yapmak istediğim PORTB'nin OR'lanarak tamamı giriş olacak portb'nin tamamı 8'li swich ile kontrol edilecek  örneğin PORTB.0=1 olduğu zaman  PORTA.2=1 olacak led  1sn  yanacak ve sönecek.( bu işlem için şart sadece PORTB'nin tamamında  sadece 1 swich devrede olacak)
yalnız led tekrar yanmayacak ancak led'in tekrar yanması için PORTB.0=0 olacak tekrar PORTB.0=1 olur ise veya diğer PORTLAR'dan herhangi biri PORTB.3=1 ........PORTB.7=1 olunca tekrar led bir defa yanıp sönecek .ben PORT'ları ayrı ayrı IF .....THEN  ile 8 işlem yapmak gerekiyor daha kısa yolu
var ise onu kullanmak daha iyi olur fikrindeyim. örneğin=PORTB=DURUM I %11111111 gibi bunu nasıl kontrol edebilirim. benim yaptığım

BASLA:
IF PORTB.0=1 THEN YAK
IF PORTB.2=1 THEN YAK
GOTO BASLA
YAK:
WAHILE PORTB=0:WEND
PORTA.2=1
PAUSE 1000
PORTA.2=0
WAHILE PORTB=1:WEND
medes              saygılarımla

ete

#1
Medes,
Yazdıklarında bir şey anlayamadım maalesef. Ne demek "PORTB'nin OR'lanarak tamamı giriş olacak" Bir yandan bir şey istiyorsun ama diğer yandan da onu aslında yapabileceğini göstermeye çalışır bir halin var.
Net olarak ne yapmak istediğini açıklarsan daha kolay yardımcı olacağız.
Açıkaldığın şeylerin bütün Port pinlerine uygulanıp uygulanmayacağını açıklaman gerekiyor.
Ete

medes

ete hocam
sadece PORTB giriş PORTA çıkış PORTB'ye 8li swich bağlı bu swich'lerden herhangi biri aktif olduğunda PORTA.2 çıkışında led yanacak 1sn sonra led sönecek . hocam burada aktif olan swich
devamlı aktif durumda kalmaktadır. ledin tekrar yanabilmesi için mutlaka PORTB'de swich'lerden
aktif olanı pasif duruma getidikten sonra tekrar istenilen swich (anahtar) aktif duruma getirilince
led tekrar 1sn. yandıktan sonra sönecek PORTB'de swich(anahtar) lerden bir tanesi devamlı aktif durumda kalacak fakat LED ben PORTB'ye bağlı swich'lerden herhangi birini aktif yaptığım zaman
yanıp sönecek  swich'lerden yalnız bir tanesi aktif

halilgaliç


ete

#4
Birde buna bak,
Açıklamandan sanki sw nin birisi aktif olduktan sonra yerinde kalacak da bir başkasını aktif edince led yine yanacak gibi algıladım. Şayet anahtar aktif olduktan sonra yeniden açılıyor ise o zaman program kısalacak demektir. Zira portb her konumda 255 de bekler (pullup lar ile) 255 den küçük olunca bir anahtar aktif edilmiş demektir.
O zaman Halilgalicin yolladığı daha doğru olacaktır.
Ete

@ DEVICE pic16F628 
@ DEVICE pic16F628, WDT_ON
@ DEVICE pic16F628, PWRT_ON
@ DEVICE pic16F628, PROTECT_OFF
@ DEVICE pic16F628, MCLR_OFF
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT

Define OSC 4
OPTION_REG.7=0
cmcon=7
PortA=0:TRISA=0
PORTB=0:TRISB=255

DURUM VAR BYTE 56
SAYAC VAR WORD 57
DURUM=PORTB
PAUSE 200



BASLA:
'      If portb<255 THEN porta.2=1
      IF PORTB<>DURUM then
         PORTA.2=1
         DURUM=PORTB
          SAYAC=0
         WHILE DURUM=PORTB
            PAUSE 1
            SAYAC=SAYAC+1
            IF SAYAC=1000 THEN
              porta.2=0
              goto CIK
            ENDIF 
          wend
        ENDIF 
         
CIK:       porta.2=0
           DURUM=PORTB
          PAUSE 100
          GOTO BASLA
                       

medes

ete hocam   &  halilgaliç
her ikinize teşekkür ederim  iki programda güzel çalışıyor . saygılarımla 


Powered by EzPortal