port un 4 pinine tek satırla veri nasıl verilir

Başlatan er-da, 07 Mart 2015, 23:06:13

er-da

merhabalar ..örnek ( x) portunun (0-7)  4-7  pinlerine diğer pinler etkilenmeden
portB= 0000xxxx 
           0001
           0010
           0011
           0100
           0101
           0110
           0111
şöle yazmak yerine  portb.4=0
                                portb.5=0
                                portb.6=0
                                portb.7=0
nasıl tek satırla komut yazarım .

edit=xxxx yanlış yerde idi

Burak

Boolean cebiri ile korumak istediğimiz bitleri maskeleyebiliriz ; yani lojik "bir" ile "ve" mantığı ile filtreleriz .. Senin yapmak istediğin şeye uyarlamak gerekirse ;

PORTB=PORTB & %00001111


Burak
Ω Gens Una Sumus Ω

er-da

Burak hocam  xxxx işaretleri portb.0-portb.3 arasında olmalıydı yanlış yazmışım  şimdiki duruma göre portB.4-portB.7 dışındakiler maskelenmesi için sizin  kodunuza göre
PORTB=PORTB & %11110000
olur  herhalde kusura bakmayın  sizi d e yanılttım.

ete

Önce portun mevcut bitlerini okumak lazım,
Mevcut=Portb & %00001111
Sonra bu eklenen yeni değerlerin pozisyonunu ayarlamak lazım
Ekle=(%0000xxxx)<<4.  Yani 4 bit sola kaydırmış olduk
Sonra bunları mevcuta eklemek lazım
Portb=mevcut+ekle
Buütün bunları tek satırda yapmak mümkün
Ekle=%00001001 olsun
Portb=(Portb & %00001111) + (ekle <<4)

Ete

er-da

teşekkür ederim hocam..
cd4051 ile multiplex denemesi yapmak için öğrenmek istemiştim .oldu   4051 in inhibit pinini ayrı bir porttan  kontrol ettim pic in 0 ve 1 pinlerine iki led bağladım   konumu değişiyormu diye değişmediğini gözlemledim  istediğim bu idi.. yalınız isis te 4051 için "pin VEE is not modelled" hatası alıyorum  ve portb.4 ü bir türlü çıkış yapamadım gri renkte kaldı..ledler drençsiz  gerçekte öyle olmayacak..

Device=16F628AXtal 4 Config   WDT_off ,PWRTE_on ,CP_OFF , MCLRE_off, xt_OSCTRISA=%00000000TRISB=%00000000PORTA=0PORTB=%00000100CMCON=7basla:Toggle PORTB.0DelayMS 500Toggle PORTB.1DelayMS 500Low PORTB.2                                             'inhbit lowPORTB=(PORTB & %00000111) + (0 <<5)  ' %000DelayMS 500PORTB=(PORTB & %00000111) + (1 <<5' %001DelayMS 500PORTB=(PORTB & %00000111) + (2 <<5)  ' %010DelayMS 500PORTB=(PORTB & %00000111) + (3 <<5' %011DelayMS 500PORTB=(PORTB & %00000111) + (4 <<5)   '%100DelayMS 500PORTB=(PORTB & %00000111) + (5 <<5)   '%101DelayMS 500PORTB=(PORTB & %00000111) + (6 <<5)   '%110DelayMS 500PORTB=(PORTB & %00000111) + (7 <<5)   '%111DelayMS 500High PORTB.2                                               'inhbit highGoTo basla

Powered by EzPortal