PIC 16F877A DA YANAN LEDİN SAĞA SOLA HARAKET ETMESİ-RLF RRF KULLANIMI
17 Haziran 2010 – 00:55Pic 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

