Adım Adım PIC Öğreniyorum 11
Bu yazımızda daha evvel gördüğümüz komutlarla ilgili olarak yazılmış basit programlar ve onların hex file'larını bulacaksınız.
Bu yazımızda daha evvel gördüğümüz komutlarla ilgili olarak yazılmış basit programlar ve onların hex file'ları verilecektir.
Burada kullanılan RLF komutu yerine RRF komutunu koyarak tekrar deneyiniz.
;ADIM ADIM PIC ÖĞRENİYORUM
;yanıp sönen led programı TA2FR
;PortB ledlerini sıra ile yakan program
;sıra ile yanan ledler
;RLF KOMUTU KULLANILMIŞTIR
;BURADA INC.DOSYASI KULLANILMADAN REGİSTER TANIMLARI YAPILMIŞTIR.
list p=16c84
status equ h'03'
trisb equ h'86'
portb equ h'06'
sayac1 equ h'0c'
sayac2 equ h'0d'
sayac3 equ h'0e'
bas
clrf portb
bcf status,0
bsf status,5
clrf trisb
bcf status,5
movlw b'00000001'
movwf portb ;port b nin ilk bitini yak
tekrar
call gecikme ;gecikme döngüsüne gir
rlf portb,f ;port b yi sola kaydır
btfss status,0 ;carry flag 1 ise atla
goto tekrar ;carry flag 1 değilse tekrara git
goto bas
gecikme
movlw d'5'
movwf sayac1
don1
movlw d'250'
movwf sayac2
don2
movlw d'250'
movwf sayac3
don3
decfsz sayac3,f
goto don3
decfsz sayac2,f
goto don2
decfsz sayac1,f
goto don1
return
end
;ADIM ADIM PIC
;Deneme program
;COMF KOMUTU
;port b ye bağlı 8 ledin yanıp sönmesi (comf komutu ile)
list p=16c84
status equ h'03'
trisb equ h'86'
portb equ h'06'
sayac1 equ h'0c'
sayac2 equ h'0d'
bas
clrf portb ;Port b çıkışları low (sönük)
bsf status,5 ;Bank 1'e gec
clrf trisb ;Port B yi çıkış pozisyonuna getir
bcf status,5 ;Bank 0 'a gel
movlw b'11111111' ;write registere bu değeri ata
movwf portb ;portb ye değeri uygula
call gecikme ;gecikme döngüsüne git
comf portb,f ;portb de bitleri sırayla 0 ve 1 yap
call gecikme
goto bas
gecikme
movlw d'255'
movwf sayac1
don1
movlw d'255'
movwf sayac2
don2
decfsz sayac2,f
goto don2
decfsz sayac1,f
goto don1
return
end
;ADIM ADIM PIC
;Deneme program
;SWAPF KOMUTU
;port b ye bağlı 8 ledin sağ sol 4 ledin yer değiştirmesi
list p=16c84
status equ h'03'
trisb equ h'86'
portb equ h'06'
sayac1 equ h'0c'
sayac2 equ h'0d'
bas
clrf portb ;Port b cıkışları low (sönük)
bsf status,5 ;Bank 1'e gec
clrf trisb ;Port B yi çıkış pozisyonuna getir
bcf status,5 ;Bank 0 'a gel
movlw b'00001111' ;write registere bu de§eri ata
movwf portb ;portb ye de§eri uygula
call gecikme ;gecikme döngüsüne git
swapf portb,f ;portb de sağ sol bitleri değiştir
call gecikme
goto bas
gecikme
movlw d'255'
movwf sayac1
don1
movlw d'255'
movwf sayac2
don2
decfsz sayac2,f
goto don2
decfsz sayac1,f
goto don1
return
end
;döngü ile ilgili bir program denemesi
;karaşimşek
;PortB ye bağlı ledler sağa sola yanar
list p=16f84
include "16f84a.inc"
CLRF PORTB
BCF STATUS,0
BSF STATUS,5
CLRF TRISB
BCF STATUS,5
MOVLW B'00000001'
MOVWF PORTB ;port b nin ilk bitini yak
SOL
CALL GECIKME ;gecikme döngüsüne gir
RLF PORTB,F ;port b yi sola kaydır
BTFSS PORTB,7 ;7. bit 1 ise atla
GOTO SOL
SAG
CALL GECIKME
RRF PORTB,F ;port b ye atanan değerleri sağa kaydır
BTFSS PORTB,0 ;0 . bit 1 ise bir komut atla
GOTO SAG ;0. bit 1 değilse sağ etikete git
GOTO SOL
GECIKME
MOVLW D'25'
MOVWF SAYAC1
DON1
MOVLW D'25'
MOVWF SAYAC2
DON2
MOVLW D'250'
MOVWF SAYAC3
DON3
DECFSZ SAYAC3,F
GOTO DON3
DECFSZ SAYAC2,F
GOTO DON2
DECFSZ SAYAC1,F
GOTO DON1
RETURN
END
;ADIM ADIM PIC
;Deneme program
;SEVEN SEGMENT
;TA2FR
list p=16c84
INCLUDE "16F84.INC"
CLRF PORTB ;Port b cıkışları low (sönük)
BSF STATUS,5 ;Bank 1'e gec
CLRF TRISB ;Port B yi çıkış pozisyonuna getir
BCF STATUS,5 ;Bank 0 'a gel
BSF PORTB,0 ;RB0 daki led 'i yak
BASLA
MOVLW H'00'
MOVWF SAYAC4
DONGU MOVF SAYAC4,W
ANDLW B'00001111'
CALL _7SEG
MOVWF PORTB
INCF SAYAC4,F
CALL GECIKME
GOTO DONGU
_7SEG
ADDWF PCL,F
RETLW H'3F'
RETLW H'06'
RETLW H'5B'
RETLW H'4F'
RETLW H'66'
RETLW H'6D'
RETLW H'7D'
RETLW H'07'
RETLW H'7F'
RETLW H'6F'
RETLW H'77'
RETLW H'7C'
RETLW H'39'
RETLW H'5E'
RETLW H'79'
RETLW H'71'
GECIKME
MOVLW H'06'
MOVWF SAYAC1
DONGU1
MOVLW H'FF'
MOVWF SAYAC2
DONGU2
MOVLW H'FF'
MOVWF SAYAC3
DONGU3
DECFSZ SAYAC3,F
GOTO DONGU3
DECFSZ SAYAC2,F
GOTO DONGU2
DECFSZ SAYAC1,F
GOTO DONGU1
RETURN
END
Son program ile ilgili komutları ileriki yazılarımızda anlatacağız.