16f877 programlama

Başlatan bitebyte, 17 Aralık 2010, 20:19:37

bitebyte

ACİLL::!
interrupt on change(B portuna) matrix butonlarından(4x4 keypad) herhangi birisine basıldığında 7 S.D'de "F" gösteren devre tasarlayın diye bi soru verdi hocamız günlerdir uğraşıyoruz ama bi türlü yapamadık anlayan biri varsa yardımcı olsun lütfen..! programı yazılacak :)

malpaslan1979

Alıntı yapılan: bitebyte - 17 Aralık 2010, 20:19:37
ACİLL::!
interrupt on change(B portuna) matrix butonlarından(4x4 keypad) herhangi birisine basıldığında 7 S.D'de "F" gösteren devre tasarlayın diye bi soru verdi hocamız günlerdir uğraşıyoruz ama bi türlü yapamadık anlayan biri varsa yardımcı olsun lütfen..! programı yazılacak :)

Şema yok. Sana ait iki satır kod yok. Şema çizecem sana kod yazacam notu sen alacan. Peki bu öğrenme faaliyeti sana ne kazandıracak? Kardeşim bu senin dersinse sen birşeyler ortaya koymalısın. Bir adet smiley yaparak ödev yaptırmanın sana ne faydası olacak. Sen bu konuda ders alıyorsun biz neden yapalım. Yok birşeyler yapıyorsan ve yanlış oluyorsa yanlış dahi olsa yapabildiklerini koy bakalım!!!!

Şemanı da ekle...

sigmoid

gençe hemen kızma, günlerdir uğraşıyoruz, ama bir türlü yapamadık demiş. Arada buraya takılsın yeni bir şeyler kapar. Yalnız bu yeni nesilde de googleda ara ilk bulduğunu okumandan yazıcıdan çıktı al, hoca ya ver anlayışı çok. Ben öğretmen olacak, o ödevleri elle yazmalarını isteyeceğim.

@bitebyte
şu ana kadar yapmış olduğunuz çalışmayı buraya ekle. birde bu konuyu iki farklı yerde açmışsın, farkındasındır. Birde forumnda ararsan sorunun cevabını elbet bulursun.

bitebyte

#3

neural

#4
Harici kesmeyi kullanmak istiyorsun ama harici kesmeyi açmamışsın. Ayrıca programda yığın taşması oluşuyor. END yazmakla programın sonunu derleyiciye bildiriyorsun ama program çalışırken END komutu bir işe yaramıyor. Bunun yerine

      LIST   P=16F877
      INCLUDE "C:\Program Files\Microchip\MPASM Suite\P16F877.INC"   

      ORG      0x00
      GOTO    BASLA
      ORG      0X04
      GOTO   INT
BASLA
      BCF   ADCON0,0
      BSF   STATUS,RP0
      BSF   OPTION_REG,7
      BSF   OPTION_REG,INTEDG
      MOVLW   0x06
      MOVWF  ADCON1
      MOVLW   H'0F'              ;Port B.0,1,2,3 giriş   B.4,5,6,7 ÇIKIŞ
      MOVWF   TRISB
      CLRF   TRISC

      BCF   STATUS,RP0

     
      BCF    INTCON,RBIF
      BSF    INTCON,RBIE
      BSF    INTCON,PEIE
      BSF    INTCON,GIE
     
son
      GOTO  son                            ; Program burada sonsuz döngüye girer kesme bekler.

   
INT
      MOVF   PORTB,W                  ; RBIF bayrağının temizlenmesi için bu gerekli
      BCF      INTCON,RBIF            ; Bayrağı temizle
      MOVLW   H'8E'              ;1 0 0 0 1 1 1 0    PORT C de F YAZMAK ICIN
      MOVWF   PORTC
      RETFIE   

      END


şeklinde bekletmeniz gerekiyor. Bu komuta gelmeden önce kullananacağınız kesmeyi aktif yapmalısınız. Kesme oluştuğunda gerekli işlemleri yapıp tekrar kesme oluşabilmesi için ilgili kesme bayrağını temizlemeniz gerekiyor.

malpaslan1979

#5
aşağıdaki kod kardeşimize ait özelden mesaj attı!

                                LIST   P=16F877
                                INCLUDE "P=16F877"
                                INCLUDE "C:\Program Files\Microchip\MPASM Suite\P16F877.INC"   
PORTB         EQU   H'06'
TRISB          EQU   H'86'
PORTC        EQU   H'07'
TRISC          EQU   H'87'
      ORG   H'00'
      GOTO    BASLA
      ORG    0X0004
      GOTO   INT
BASLA
      BCF           ADCON0,0
      BANKSEL   TRİSB
      BSF           OPTION_REG,7
      BSF           OPTION_REG,INTEDG
      BSF           ADCON1,1
      BSF           ADCON1,2
      BCF           ADCON1,3
      BSF           STATUS,5
      MOVLW     H'0F'              ;Port B.0,1,2,3 giriş   B.4,5,6,7 ÇIKIŞ
      MOVWF     TRISB
      CLRF         TRISC
      MOVLW     H'8E'              ;1 0 0 0 1 1 1 0    PORT B de F YAZMAK ICIN
      MOVWF     TRISC
INT
      BCF   INTCON,1
      MOVLW   H'00'
      MOVWF   PORTC
      RETFIE   
      END

by-bad-boy

Alıntı yapılan: bitebyte - 18 Aralık 2010, 14:07:07
(Resim gizlendi görmek için tıklayın.)

bu devreye göre b protuna bağlı butonlardan herhangi birine bastığımda bir kesme göndererek displayda  F Göstericek Devrenin programı ile ilgili yardım banada lazım acaba yardımcı olabilecek biri varmı