Adım Adım PIC Öğreniyorum
Yazı dizimizin bu bölümünde konumuz ile ilgili komutları görmeye devam ediyoruz.
Bu yazımızda yine bazı komutları göreceğiz.
ANDLW : İstenen 1 olan bir biti 0 yapmak için kullanılır.Bu komut write register içeriğini istenen bir sabit veri ile AND işlemine tabi tutar ve sonucu write registere yazar.Bu işleme maskeleme adı verilir.
WRİTE REGİSTER İÇERİĞİ ANDLW SABİT = WRİTE REGİSTERE YAZ
AND MANTIĞI
BIT | BIT | SONUC |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
And mantığı seri devre mantığıdır .Burada 0 ile AND lemede bit değeri 0 olur.
MOVLW | B ' 11111111' | WRİTE REGİSTERDE YAZILI DEĞER İSE |
ANDLW | B ' 00000000 ' | 0İLEMASKELERSEKWRİTE REG İÇERİĞİ 0 OLUR |
MOVWF | PORTB | BUNU PORTB YE ATARSAK LEDLER SÖNER |
ANDWF : Bir file register içeriği ile write register içeriğini and ler sonucu F veya W ye yazar.
FİLE REGİSTER İÇERİĞİ ANDWF WRİTE REGİSTER İÇERİĞİ = W veya F YAZ
Trisa değerleri B'000 00011' olsun bu durumda porta nın ilk iki biti giriş olur.Bu değeri write registere
Yazacağımız bir B'000 000 00' değeri ile and lersek ve sonucu Tris registere atarsak girişler çıkış haline döner.
TRISA B'000 00011' ;TRISA İLK İKİ BİTİ GİRİŞ
MOVLW B'000 00000' ;WRİTE REG DEGERİ YAZ
ANDWF TRISA,W ;WRİTE REG İLE TRISA YI AND le ve WRITE REG YAZ
MOVWF TRISA ;WRITE REG SON DEGERİ TRISA YA YAZ
IORLW :Write register içeriğini istenen bir sabit veri ile OR lar sonucu W registere yazar.Bu komut 0 olan bitleri 1 yapmak için kullanılır.
WRITE REGISTER İÇERİĞİ IORLW SABIT = WRITE REGISTER YAZ
BIT | BIT | OR | BIT
WRITE SABIT SONUÇ | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | 0 | 0 | |||||||||
0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | |
1 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | |
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Or mantığı paralel devre mantığıdır.
MOVLW B'01010101'
IORLW B'10101010'
MOVWF PORTB ;PORT B NİN TÜM ÇIKIŞLARI HIGH OLUR
IORWF : Bir file register içeriği ile write register içeriğini or lar ve sonucu F veya W içine yazar.
FİLE REGİSTER IORWF WRİTE REGİSTER = W veya F yaz
XORLW : Write register içeriğini bir sabit ile işleme tabi tutar ve sonucu write register içine yazar. Bu işleme 'Bit terslemek adı verilir'.
BIT | BIT | XOR | BIT
WRITE XOR SONUC | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | 0 | 0 | |||||||||
0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | |
1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
XORWF : File register ile Write register içeriğini XOR lar ve sonucu F veya W 'a yazar
ÖZETLE :
WRITE REG | SABİT/FILE REGİSTER | AND | IOR | XOR |
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1-) Bir register bitleri içindeki 1 olan bitleri 0 yapmak için AND
2-) Bir register bitleri içindeki 0 olan bitleri 1 yapmak için IOR
3-) Bir register bitleri içindeki bitleri ters çevirmek için XOR
kullanılır.
BAYT KARŞILAŞTIRMAK :
Byte eşitliği :
Write register içinde bir byte lık bir bilginin istenenen bir byte lık bir bilgi ile aynı olup olmadığını anlamak için XORLW ve bir file registerdeki bilginin write registerdeki bilgi ile aynı olup olmadığını anlamak için XORWF kullanılır.Veriler aynı ise işlem sonucunda Z flag 1 olur.
Örneğin sayac1 içindeki verinin B'11111111' olup olmadığını anlamak için
MOVLW B'11111111'
TEST
XORWF SAYAC1,F
BTFSS STATUS,Z
GOTO TEST
MOVF SAYAC1
Byte içeriği 0 mı ? Write register içindeki bir byte lık bir bilginin 0 olup olmadığını anlamak için 0 sabit verisi ile IORLW veya file registerdeki bilginin 0 olup olmadığını anlamak için W registere 0 atanır ve iki bilgi IORWF lanır.Sonuc 0 sa Z flag 1 olur.
Dosyalar:
Dene13.asm
Dene13.hex