P16F877A ile Kara Simsek Uygulaması
list p =16F877A
include <p16f877A.inc>
deg1 EQU 028h
deg2 EQU 029h
org 0000
goto START
org 0010
retfie
START
bsf STATUS,RP0 ;BANK1 geç
MOVLW 0X06 ;w reg. 00000110 yükle
MOVWF ADCON1 ;w reg. içeri?ini ADCON1 yükle ve A digital giris
MOVLW b'00000000' ;w reg. '00000000' yükle
MOVWF TRISD ;w rer. içeri?ini TRISC yükle ve çikis yap
bcf STATUS,RP0 ;BANK0 geç
MOVLW b'00001001' ;w reg. '00000110' yükle
MOVWF PORTA ;w reg. içeri?ini PORTA yükle
MOVLW 0x01 ;w reg. '00000001' yükle
MOVWF PORTD ;w reg. içeri?ini PORTC yükle
DON
BTFSS PORTA,3 ; PORTA 'nin RA2 girisi 0 mi
call SAGKAYDIR ; Evet SAGKAYDIR prosedurune dallan
call gecikme ;Hayir Gecikme prosedurune dallan
BTFSS PORTA,0 ; PORTA 'nin RA1 girisi 0 mi
call SOLKAYDIR ;Evet SOLKAYDIR prosedurune dallan
call gecikme ;HAYIR gecikme prosedurune dallan
goto DON ;PORTA 'nin giris için secilen uclari 1 ise Don
;prosedüründe islem yap.boylece kalinan yerden devami saglar.
SAGKAYDIR
RRF PORTD,1 ;PORTC nin icerigi 1 saga kaydir.
call gecikme
return
SOLKAYDIR
RLF PORTD,1 ;Port C nin içerigini 1 sola kaydir.
call gecikme
return
gecikme
movlw H'FF'
movwf deg1
etiket1
movlw H'FF'
movwf deg2
etiket2
decfsz deg2,F ;Gecikme için olusturdugum kod blogu
goto etiket2 ;256*256 +4 geriye sayarak bekletiyorum
decfsz deg1,F ;Ledlerin gözle görülür biçimde yanmasini sagliyor
goto etiket1
return
end
Yorumlar
Yorum Gönder