PIC16F877A ile Yön Tuslarıyla Kayan Sayılar
Sag ve sol yön tusları PortA bulunur.RA2 sag,RA1 sol yon tusudur.Öncelikle dikkat edilmesi gereken nokta PORTA analog giriş/cıkıs tir ve bunun ADCON1 registerina Binary olarak 00000110 degerini göndererek digital giris/cıkısa cevirebilirsiniz.Programımızın assembler kodu su sekildir :
list p =16F877A
include <p16f877A.inc>
deg1 EQU 028h
deg2 EQU 029h
org 0000
goto START
org 0010
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 TRISC ;w rer. içeriðini TRISC yükle ve
çikis yap
bcf STATUS,RP0 ;BANK0 geç
MOVLW b'00000110' ;w reg. '00000110' yükle
MOVWF PORTA ;w reg. içeriðini PORTA yükle
MOVLW 0x01 ;w reg.
'00000001' yükle
MOVWF PORTC ;w reg. içeriðini PORTC yükle
DON
BTFSS PORTA,2 ; PORTA 'nin RA2 girisi 0 mi
call SAGKAYDIR ; Evet SAGKAYDIR prosedurune dallan
call gecikme ;Hayir Gecikme prosedurune dallan
BTFSS
PORTA,1 ; 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
PORTC,1 ;PORTC nin
icerigi 1 saga kaydir.
call gecikme
return
SOLKAYDIR
RLF
PORTC,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
Yorumlar
Yorum Gönder