DERS - 6
Pic 16F84'ün RAM belleginin iki bank'tan ibaret oldugunu söylemistik. Bunlar Bank 0 ve Bank 1'dir, degisik piclerde baska banklar da mevcuttur. Bir banktaki registerleri kullanmak için o bank'a geçmek gerekmektedir. Bank degistirmeislemleri STATUS registeri vasitasiyla yapilir.
STATUS REGISTER
Status register 8 bittir. Bu register'in 5. bitinin degistirilmesi ile 16F84 de bank degistirme islemi gerçeklestirilir.16F84'de Bank bitleri Status registerin 5. ve 6. Bitidir, 6. bit 0 kalmalidir.Yalniz 5. bit'in degistirilmesi bank degistirmek için yeterlidir. Tüm reset hallerinde 5. ve 6. bit 00 olur ve Pic bank 0'da bulunur.
6. bit 0 5.bit 0 ise Bank 0
6. bit 0 5.bit 1 ise Bank 1 olur
Status register bitlerini degistirmek için kullanilan komut BSF ve BCF komutlaridir.
BSF STATUS,RP0
BSF STATUS,5
BSF H'03',RP0
BSF H'03',5
Komutlari ile 5.bit 1 yapilir ve bank 1'e geçilir.1 yapilan 5. biti 0 yapmak için ise BCF komutunu kullaniriz.
BCF STATUS,RP0
BCF STATUS,5
BCF H'03',RP0
BCF H'03',5
"STATUS , RP0" "'H03', RP0" ifadelerinde ki STATUS register adresi ve RP0 INC. Dosyasinda tanimlidir.INC dostasi kullanilmaz ise bunlar EQU komutu ile tanimlanmalidir. RP0 yerine, bit degeri olan 5 kullanildiginda bunu ayrica tanimlamak gerekmez.
PORTLARIN GIRIS / ÇIKIS YAPILMASI
Portlarin giris veya çikis olarak yönlendirilmesi için TRIS registeri kullanilir. PORTA TRISA ile PORTB TRISB registeri ile yönlendirilir.TRIS registeri 8 bittir. Her bir bit bir I/O kapisina karsiliktir. PORTB nin 8 I/O kapisi vardir,fakat PORTA da 5 I/O kapisi mevcuttur bu nedenle PORTA için TRIS registerinin ilk 5 bit'i kullanilir, diger bitler 0 olarak kalir.
PORT A ve PORTB kapilari ya tüm olarak veya tek tek bit olarak giris, çikis yapilabilir.
TRIS register bitleri :
1 ise kapi GIRIS
0 ise kapi ÇIKIS olarak yönlenir
PORTA çikislarini kontrol eden TRISA register bitleri,asagidaki gibi ise çikislar su anlama gelir:
BIT | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DEGER | - | - | - | 1 | 0 | 1 | 0 | 1 |
SONUÇ | - | - | - | G | Ç | G | Ç | G |
PORTB çikislarini kontrol eden TRISB register bitleri, asagidaki gibi ise çikislar su anlama gelir.
BIT | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DEGER | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
SONUÇ | Ç | G | Ç | G | Ç | G | Ç | G |
PORTA ve PORTB çikislarinin hepsini birden çikis yapmak için kullanilan komut
"CLRF" komutudur.
CLRF TRISA tüm PortA kapilarini 0 yapar sonuçta tüm kapilar çikis olur.
CLRF TRISB tüm PortB kapilarini 0 yapar sonuçta tüm kapilar çikis olur.
PORT A veya PORTB çikislarinin tümünü farkli giris veya çikis olarak yönlendirmek istersek karsilik gelen TRISA ve TRISB register bitlerinin tümüne farkli 0 veya 1 degeri vermemiz gerekir. Böylece o bitlere denk gelen kapilar giris veya çikis olarak yönlenirler. Bunun için kullanilan komutlar söyledir:
MOVLW B'11010101' ; write registere degerleri yaz
MOVWF TRISB ; write register degerlerini trisb ye yaz
BSF
BCF
Gibi komutlar da kuillanilabilir. Bu komutlarla istenen bitleri tek tek 0 veya 1 yapabiliriz.
BSF (bit set file) TRISA veya TRISB nin ilgili bitini 1 yaparak karsilik olan A veya B port kapisini giris yapar.
BCF (bit clear file) TRISA veya TRISB nin ilgili bitini 0 yaparak karsilik olan A veya B port kapilarini çikis yapar.
BSF TRISA, 0 ; trisa'nin ilk biti 1 olur ve porta ilk bit giris olur.
BCF TRISB, 1 ; trisb'nin 2 biti 0 olur ve portb nin ikinci biti çikis olur.