Mikrofondan alınan sese Eko ekleyen ASM Kodu
Metehan tarafından proje kategorisi altına yazıldı, Etiketler: ASM, Digiac2000, eko, mikrofon, mikroişlemciMikroiş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
;………………………………………………………………….

Yazılar (RSS)
[...] « Mikrofondan alınan sese Eko ekleyen ASM Kodu 05 07 2008 [...]
şöyle bir bakayım da hata bulayım, 1 saniye…
tam beklediğim tarzdan bir hata;
OUR PORTCTRLB,AL
ADD AX,BL gibi birşey yapamaman lazım.
Türkçe’de DEĞPERİNİ diye bir kelime yok.
onun dışında proplem görmedim, biravo. bunu kouelohab’a koy ki seneye arayan bulsun.
düzelttim