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

17 Haziran 2010 – 00:55

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

http://deryagunduz.blogspot.com

deryagunduz47@gmail.com

Bookmark and Share

Post a Comment

Subscribe without commenting