Mikroişlemciler 2 final sınavı sorularından biridir kendisi

  • Digiac 2000 deney seti ile mikrofondan alınan sese eko ekleyen program kodunu yazınız.

Bana kalırsa zor bir soru da deildi;

neyse Programa gecelim

PORTCTRLA EQU 86H
PORTCTRLB EQU 88H
PORTA      EQU 92H
PORTB       EQU 90H

MOV DL, 27D0H
MOV DI,DL ; BAŞLANGIÇ OLARAK 2000 ÖRNEK ÖNCEKİ DEĞERİ KULLANACAĞIM

BASLA:    CALL VERIAL
CALL EKOEKLE
CALL AKTAR

MOV AH,0EH
INT 28 ;TUS TAKIMINI KONTROL ET

CMP AL,FFH
JZ BASLA ; Bİ TUŞA BASILMADIYSA DEVAM ET

CMP AL,2BH
JZ ARTIR ; + TUŞUNA BASILDIYSA ARTIR’A DALLAN

CMP AL,2DH
JZ AZALT ; - TUŞUNA BASILDIYSA AZALT’A DALLAN

JMP BASLA

;……………………………………………………………………

VERIAL:

MOV AL,00H
OUT PORTCTRLA,AL
MOV AL,0BH
OUT PORTCTRLB,AL ; İLGİLİ PORTLAR GEREKTİĞİ GİBİ KOŞULLANDI

MOV AL,0BH
OUT PORTA,AL      ; WR=1 RD=1 EN=1

MOV AL,09H
OUT PORTB,AL      ; WR=0 RD=1 EN=1

MOV AL,0BH
OUT PORTB,AL     ; WR=1 RD=1 EN=1

BEKLE:  IN AL,PORTA
TEST AL,04H
JZ BEKLE     ;BUSY UCUNU BEKLİYORUZ

MOV AL,03H
OUT PORTB,AL      ; WR=1 RD=0 EN=1

IN AL,PORTA        ;VERİ OKUNDU

RET
;…………………………………………………………………..

EKOEKLE:

MOV DI,2000H
MOV BL,[DI]    ; 2000H ADRESİNDEKİ VERİ BL YE YEDEKLENDİ(EKO OLARAK KULLANILACAK)
KAYDIR:    MOV CL,[DI+1]
MOV [DI],CL ;2001 ADRSİNDEKİ VERİYİ 2000 ADRESİNE YAZDIM
INC DI       ; BU İŞİ KAYDIRARAK YUKARIYA ,DL YE KADAR GÖTÜRDÜM
CMP DI,DL
JB KAYDIR

MOV [DI],AL ;SON ÖRNEK DI027D0 ADRESİNE YAZILDI

SHR BL
SHR BL ; 2000 ÖNCEKİ ÖRNEK 4′E BÖLÜNDÜ

MOV AH,00H
ADD AX,BX
CMP AX,00FFH    ;EKO EKLENDİKTEN SONRA TOPLAM GENLİK FFH DEĞERİNİ AŞARSA MAX KONUMDA TUTULMALI
JA SINIRLA
DON:    RET

;……………………………………………………………………

AKTAR:
MOV CL,AL

MOV AL,03H
OUT PORTCTRLA,AL ;DAC I KULLANMAK İÇİN PORTA ÇIKIŞ

MOV AL,01H
OUT PORTCTRLB,AL ;PORTB’NİN 0. BİTİ CIKIS

MOV AL,00H
OUT PORTB,AL     ;EN=0 DAC AKTİF

MOV AL,CL
OUT PORTA,AL

RET
;…………………………………………………………………..

SINIRLA:
MOV AH,00H
MOV AL,FFH
JMP DON

;…………………………………………………………………..

ARTIR:
ADD DL,01F4H     ;500 ÖRNEK YAKLAŞ
CMP DL,3388H     ;MAX 5000 ÖRNEK GERİ GİDEBİLEYİM DİYE SINIRLAMA
JA SINIR
DON2    JMP BASLA

;………………………………………………………………….

AZALT:
SUB DL, 01F4H
CMP DL,2000H
JB SINIR2
DON3:     JP BASLA

;…………………………………………………………………

SINIR:
MOV DL,2388H
JMP DON2

SINIR2:
MOV DL,2000H
JMP DON3
;………………………………………………………………….

  • Bu Yazıyı sizden başka bugün 0 , toplamda 35 kişi okudu.
  • 5 Cevap Var “Mikrofondan alınan sese Eko ekleyen ASM Kodu”
    1. [...] « Mikrofondan alınan sese Eko ekleyen ASM Kodu 05 07 2008 [...]

    2. şöyle bir bakayım da hata bulayım, 1 saniye…

    3. tam beklediğim tarzdan bir hata;
      OUR PORTCTRLB,AL

    4. ADD AX,BL gibi birşey yapamaman lazım.
      Türkçe’de DEĞPERİNİ diye bir kelime yok. :mrgreen:

      onun dışında proplem görmedim, biravo. bunu kouelohab’a koy ki seneye arayan bulsun.

    5. düzelttim

    Yorum yaz