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

                end
Projemizin Proteus Seması.Butonlar Lojik 0 da aktif olmaktadır.


Yorumlar

Bu blogdaki popüler yayınlar

DevExpress TreeList Kullanımı

Devexpress GridControl SimpleButon Ekleme

DevExpress LookupEdit Veri Gösterimi