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