-

PIC 16F877A DA YANAN LEDİN SAĞA SOLA HARAKET ETMESİ-RLF RRF KULLANIMI

Pic 16f877a da ledin yanması demek  kullanılan  potrun ilgili  bitinin “1″ olması demektir.Yanan bir  ledin sağa sola hareket etmesini sağlayan özel komutlar  vardır:

rlf :   Açılımı “rotate left file”,içeriği sola kaydırmaya yarar.Örneğin portun içinde b’01000000′  ise  rlf komutu bir kere uygulandığında b’10000000′   şeklinde olur.

rrf:   Açılımı “rotate right  file”,içeriği sağa kaydırmaya yarar.Örneğin portun içinde b’01000000′  ise  rrf komutu bir kere uygulandığında b’00100000′   şeklinde olur. 


           portun içeriğini sağa  sonra sola kaydıran örnek kodu inceleyelim:
Bu kodda    PORTB nin içine en başta b’00000001′  sayısı  yerleştiriliyor,içerik 7. bit 1 olana kadar her defasında  bir bit sola kaydırılıyor, çünkü 7. bit  1 olduğunda sola kayacak yer klamıyor,bu kontrolden sonra  sağa kaymalar başlayacaktır.Bu aşamada da içerik0. bit 1 olana kadar  her defasında bir bit olmak üzere sağa kaydırılıyor ,0. bit  1 olduğunda yine sola kayma olacaktır.
SAYAC1 EQU h’0C’   ;gecikme sayacları için adresler belirtiliyor

SAYAC2 EQU h’0D’

CLRF PORTB      ;potrbnin içi en başta temizleniyor
BSF STATUS,5             ;bank1 tris registerlarının ayarlanması için seçildi

CLRF TRISB             ;portb çıkış portu yapıldı

BCF STATUS,5                  ;port içeriği ile ilgili işlem yapılması için tekrar bank0 a geçildi
MOVLW h’01’
MOVWF PORTB            ;portb nin içine b’00000001′  sayısı atıldı
SOL:

CALL GECIKME;en başta bi bekleme anı oluyor

RLF PORTB,F               ;içerik 1 birim sola kaydı

BTFSS PORTB,7            ;portbnnin 7. biti kontrol ediliyor,
1 ise sağa kaydırma başlayacak 1 değilse tekrar  sola kayma olacaktır

GOTO SOL

SAG:

CALL GECIKME                    ;bekleme yapılıyor

RRF PORTB,F                     ;içerik 1 birim sağa kaydırılıyor

BTFSS PORTB,0                  ;portbnin 0. biti kontrol ediliyor 1 ise sola kaymaya geçilecek,0 ise sağa ;kaymaya devam

GOTO SAG

GOTO SOL

GECIKME:

MOVLW h’FF’

MOVWF SAYAC1           ;gecikme için sayac1 in içine h’FF’  sayısı atılıyor

DONGU1:

MOVLW h’FF’

MOVWF SAYAC2                 ;gecikme için sayac1 in içine h’FF’  sayısı atılıyor

DONGU2:

DECFSZ SAYAC2,F

GOTO DONGU2           ;sayac2 nin içindeki sayı 0 olana  kadar her defasında 1 azalt,0 olunca saya1 i      ;                                       ;azaltmaya git

DECFSZ SAYAC1,F        ;sayac1in içi 0 olana kadar her defasında 1 azalt,0 olduğunda return yap

GOTO DONGU1

RETURN            ;en son callın yapıldığı adrese  gider

END        ;programo bitir

   

DERYA GÜNDÜZ

Category: Assembly

Your email address will not be published. Required fields are marked *

*