17 Haziran 2010 Perşembe

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

Hiç yorum yok:

 
Facebook

Bizi takip edin!

ESOGÜ Bilişim GünleriESOGÜ Bilişim Günleri