Powered By Blogger

10 Temmuz 2018 Salı

Kayan Led

INCLUDE "P16F877A.INC"   ; pic16f877a kütüphanesini çağırıyor
SAYAC  EQU 0X21          ;gecikme için sayac a adres tanımlıyor
SAYAC1  EQU 0X22         ;gecikme için sayac1 e adres tanımlıyor
SAYAC2 EQU 0X23          ;gecikme için sayac2 e adres tanımlıyor

ORG 0X00                 ;0.adresten başlaması için yazlına kod
GOTO ANA_KOD             ;BELİRTİLEN NOKTAYA GERİ DON
ORG 0X04                 ;KESME İÇİN KULANDIĞIMIZ ADRESTEN BAŞLA
GOTO KESME               ;BELİRTİLEN NOKTAYA GERİ DON

ANA_KOD                  ;DONGU İÇİN ETİKET
CLRF PORTB ;PORTB'yi temizle
BANKSEL TRISB ;BANK1'e geçiş yap
MOVLW B'00000001' ;W registırna 1. biti giriş yapacağımızı soyle
MOVWF TRISB ;RB0 girşi değerlerin i aktar
MOVLW B'00000001' ;W  b'00000001' yukle
MOVWF OPTION_REG ;W'yi OPTION saklamak için yukle
BANKSEL PORTB ; BANK 0 GEÇ
BCF INTCON, 1 ; INTF BAYRAKLARINI SİL  KESME SİNYALINI HAZIRLA
BSF INTCON, 7 ; TUM KESMELERE İZİN VER
BSF INTCON, 4 ; RB0/INT KESMESİNE İZİN VER
BANKSEL TRISD            ;trsıb nın oldugu banka geçmek için kulanılan kod
CLRF TRISD               ;trsıb nın içini sıfırladı çıkış olarak kulnacağımızı bellirti
BANKSEL PORTD            ;portb nın oldugu banka geçti
CLRF PORTD               ;portb nın içini sıfırladı
MOVLW 0X01               ; w register ın içine 1 degerini atadı
MOVWF SAYAC              ; w register in içindeki degeri sataca atadı

ANA                      ; DONGU İÇİN ETİKET
CALL GECIK               ;bekleme yapılıyor
RLF PORTD,F              ;içerik 1 birim sola kaydırılıyor
BTFSS PORTD,7            ;portbnin 0. biti kontrol ediliyor 1 ise sola kaymaya geçilecek
GOTO ANA                 ; BELİRTİLEN NOKTAYA GERİ DON

KESME                    ;DONGU İÇİN ETİKET
BCF INTCON,INTE ;SONRAKİ KESMLERE İZİN VER
RRF PORTD,F              ;içerik 1 birim sğaa kaydırılıyor
BTFSS PORTD,0            ;PORTB'nin 7. biti kontrol ediliyor 1 ise sağa kaymaya geçilecek
BCF INTCON,INTF ;KESME BAYRAKLARINI SIFIRLA
BSF INTCON,INTE ;YENİ KESMELERE İZİN VER
RETFIE ;KESME PROGRAMINDAN DALLAN

GECIK                    ;DONGU İÇİN ETİKET
MOVLW 0XFF               ; w registerın içini 256 yaptı
MOVWF SAYAC1             ;w registerın içindeki degeri sayc1 e atadı
DON1                     ;DONGU İÇİN ETİKET
MOVLW 0XFF               ;w registerın içini 256 yaptı
MOVWF SAYAC2             ;w registerın içindeki degeri sayc2 e atadı
DON2                     ;DONGU İÇİN ETİKET
DECFSZ SAYAC2,F          ;sayac2 içini 1 azaltır sonuç 0 ise 1 satır atlar
GOTO DON2                ; BELİRTİLEN NOKTAYA GERİ DON
DECFSZ SAYAC1,F          ;sayac1 içini 1 azaltır 0 ise 1 satır atlar
GOTO DON1          ;BELİRTİLEN NOKTAYA GERİ DON
RETURN                   ; program başatan başlar ve bekler
END                               


2 yorum: