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=16F628A
Xtal 4
Config   WDT_off ,PWRTE_on ,CP_OFF , MCLRE_off, xt_OSC

TRISA=%00000000
TRISB=%00000000

PORTA=0
PORTB=%00000100
CMCON=7

basla:
Toggle PORTB.0
DelayMS 500
Toggle PORTB.1
DelayMS 500
Low PORTB.2                                             'inhbit low

PORTB=(PORTB & %00000111) + (0 <<5)  ' %000
DelayMS 500
PORTB=(PORTB & %00000111) + (1 <<5)  ' %001
DelayMS 500
PORTB=(PORTB & %00000111) + (2 <<5)  ' %010
DelayMS 500
PORTB=(PORTB & %00000111) + (3 <<5)  ' %011
DelayMS 500
PORTB=(PORTB & %00000111) + (4 <<5)   '%100
DelayMS 500
PORTB=(PORTB & %00000111) + (5 <<5)   '%101
DelayMS 500
PORTB=(PORTB & %00000111) + (6 <<5)   '%110
DelayMS 500
PORTB=(PORTB & %00000111) + (7 <<5)   '%111
DelayMS 500
High PORTB.2                                               'inhbit high
GoTo basla

Powered by EzPortal