· EEM332

EEM332 Mikroişlemciler: Laboratuvar 7–9: SKC-86, ADC ve DAC

EEM332 – Mikroişlemciler · 09.05.2005 · 18.10.2026

Bu yazı, Başkent Üniversitesi EEM332 Mikroişlemciler ders arşivindeki ilgili notları ve uygulamaları bir araya getiriyor (2005–2015). SKC-86 deney setinde giriş-çıkış, ADC okuma, DAC ile testere dişi dalga ve deney raporları. Bir arkadaşın hazırladığı çalışmalar ve ders belgeleri birlikte aktarılmış; öğrenci adları, numaraları ve grup bilgileri çıkarılmıştır. Belgelerin PDF arşiv kopyaları ve varsa kaynak kodları yazının sonunda ZIP olarak indirilebilir.

eem332_lab07

EEM 332 - Mikroişlemciler Deney Numarası: 8 Deney Adı: SKC-86 Giriş ve Programlama

Ön Çalışma Laboratuvar saatinde ön çalışma toplanmayacaktır.

1) Web sitesinde verilen “SKC-86 Guide” adlı belgeyi okuyunuz.

2) Aşağıdaki programı inceleyiniz. Bu program önce SKC-86 setindeki LED’lerin tamamını

söndürür ve daha sonra kullanıcının ilgili butona basmasıyla, o butonla ilgili LED’i yakar.

;==========================================
;===== 8BIT Input/Output TEST PROGRAM =====
;=====         FOR SKC - 86           =====
;==========================================
CNT3                 EQU     3FD6H
APORT3               EQU     3FD0H
BPORT3               EQU     3FD2H
CPORT3               EQU     3FD4H
RAME                 EQU     0FFFFH
CODE          SEGMENT

ASSUME CS:CODE, DS:CODE

ORG    0
START:        MOV    SP,RAME
MOV    AL,90H
MOV    DX,CNT3
OUT    DX,AL
J1:           MOV    DX,APORT3
IN     AL,DX
NOT    AL
MOV    DX,BPORT3
OUT    DX,AL
JMP    J1

CODE ENDS

END START

Deneysel Çalışma

1) SKC-86’da CS=F000:0000 adresinde bulunan Örnek1 programını yükleyiniz. Bunun için

aşağıdaki adımları takip ediniz

“2/GO” tuşuna basın F000:0 girin “.” tuşuna basın

Programın yaptığı işi gözlemleyiniz.

2) Benzer şekilde CS=F000:0040 adresinde bulunan Örnek2 programını yükleyiniz.

3) Örnek3 programını aşağıdaki adımları uygulayarak yükleyiniz:

“OB” tuşuna basın 3F08 girin Sırasıyla “,” ve “0” ve “.” tuşlarına basın Sırasıyla “IB” ve “3F08” ve “,” tuşlarına basın

Ekranda gördüğünüz değerleri not ediniz. Potansiyometrenin konumunu değiştirerek yukarıdaki işlemleri tekrar ediniz. Değerleri not ediniz.

4) Turbo Debugger programını kullanarak ön çalışmada verilen programın makina dili

kodlarını elde ediniz. Tuş takımını kullanarak SKC-86’ya bu programı yükleyiniz.

Programın gerçekleştirdiği işlemi not ediniz.

5) Ön çalışmada verilen programda gerekli değişiklikleri yaparak yapılan işlemin tersinin

yapılmasını sağlayınız (ilk çalıştırıldığında bütün LED’ler yanar ve ilgili tuşlara basılmasıyla söner). Programın makina dili kodlarını elde ediniz ve deney setine yükleyiniz.

Programınızı ve yorumlarınızı ve önceki çalışmalarda gözlemlediklerinizi raporunuzda belirtiniz.

eem332_lab08

EEM 332 - Mikroişlemciler Deney Numarası: 8 Deney Adı: Analog-Dijital Çevrim

Ön Çalışma

1. Aşağıda verilen programı inceleyiniz ve nasıl çalıştığını anlamaya çalışınız.

Programın nasıl çalıştığı hakkında yorum yapınız.

2. Verilen programı çeviriniz ve makina dili kodlarını elde ediniz.

Deneysel Çalışma

1. Ön çalışmanın 2. maddesinde oluşturduğunuz makina dili kodlarını deney setine

yükleyiniz ve aşağıda verilen giriş metodları için tekrar ediniz. Sonuçları teyit ediniz ve programın çalışmasını detaylı olarak açıklayınız. a. Potansiyometre b. Isı sensörü c. Işık sensörü

2. Programın algoritmasını yazınız ve potansiyometre için çözünürlüğü (step size)

hesaplayınız.

eem332_lab08: sayfa 1, devre, tablo ve şekiller
eem332_lab08, sayfa 1.

eem332_lab09

EEM 332 - Mikroişlemciler Deney Numarası: 9 Deney Adı: Dijital-Analog Çevrim

Deneysel Çalışma

1. Aşağıda verilen testere dişi sinyal üreteci programını makina dili kodlarına

çeviriniz.

DAC      EQU   3FD8H
RAME     EQU   0FFFFH
CODE     SEGMENT

ASSUME CS:CODE, DS:CODE

ORG 0
START:   MOV   AL,00
MOV   DX,DAC
J1:            OUT   DX,AL
INC   AL
JMP   J1

CODE ENDS

END   START

Programı deney setine yükleyiniz ve çalıştırınız. Deney seti üzerinde JMP5 çıkışındaki DAC bacağından çıkış sinyalini gözlemleyiniz.

2. Aşağıda verilen programı sadeleştirip, makina dili kodlarını elde ediniz.

DAC        EQU     3FD8H
RAME       EQU     0FFFFH
CODE       SEGMENT

ASSUME CS:CODE,DS:CODE

ORG 0
START:     MOV     AL,00
MOV     DX,DAC
J1:                OUT   DX,AL
MOV     AL,128
MOV     CX,0FFFH
LOOP    $
OUT     DX,AL
MOV     AL,192
MOV     CX,0FFFH
LOOP    $
OUT     DX,AL
MOV     AL,238
MOV     CX,0FFFH
LOOP    $
OUT     DX,AL
MOV     AL,255
MOV     CX,0FFFH
LOOP    $
OUT     DX,AL
MOV     AL,238
MOV     CX,0FFFH
LOOP    $
OUT     DX,AL
MOV     AL,192
MOV     CX,0FFFH
LOOP    $
OUT     DX,AL
MOV     AL,128
MOV     CX,0FFFH
LOOP    $
OUT     DX,AL
MOV     AL,64
MOV     CX,0FFFH
LOOP    $
OUT     DX,AL
MOV     AL,17
MOV     CX,0FFFH
LOOP    $
OUT     DX,AL
MOV     AL,0
MOV     CX,0FFFH
LOOP    $
OUT     DX,AL
MOV     AL,17
MOV     CX,0FFFH
LOOP    $
OUT     DX,AL
MOV     AL,64
MOV     CX,0FFFH
LOOP    $
JMP     J1

CODE ENDS

END     START

Programı deney setine yükleyip çalıştırınız. Deney seti üzerinde JMP5 çıkışındaki DAC bacağından çıkış sinyalini gözlemleyiniz. Programın ne yaptığını açıklayınız. Sadeleştirilmiş kodları raporunuza ekleyiniz.

3. Üretilen sinyallerin frekansını değiştirmek için ne yapılabilir?

mikro deney 7 rapor

Başkent Üniversitesi Elektrik - Elektonik Mühendisliği Bölümü

EEM 332 – Mikroişlemciler Laboratuvarı

RAPOR

Deney No:# 7 Deney Adı: SKC-86 Giriş ve Programlama Deney Tarihi:05/05/2006

1-) İlk deneyde örnek olan bir programı çalıştırdık. Bunu; 2/go tuşuna basarak hangi adresteki programın çalıştırılacağını seçiyoruz. F000:0 yazarak adresi giriyoruz. . ya basınca program çalışmaya başlıyor.

Bunları yaptıktan sonra oluşan program çıktısı

Ledler sıra sıra yanıyor.Daha sonra bu işlem bittikten sonra ledler dörderli dörderli yanmaya başlıyor,ilk dört daha sonra ikinci dört yanıyor,daha sonra tekrar işlem en başa dönüyor.

2-) Yukarda ki işlemi F000:0040 adresindeki örnek program için yaptık bu seferde hangi ledi yakmak istiyorsak o led’in altında bulunan düğmelere basarsak o düğmeye bağlı bulunan led yanmaya başladı.

4-)

MOV SP,RAME                  CS:0000           BCFFFF
MOV AL,90H                   CS:0003           B090
MOV DX,CNT3                  CS:0005           BAD63F
OUT DX,AL                    CS:0008           EE
MOV DX,APORT3                CS:0009           BAD03F
IN AL,DX                     CS:000C           EC
NOT AL                       CS:000D           F6D0
MOV DX,BPORT3                CS:000F           BAD23F
OUT DX,AL                    CS:0012           EE
JMP J1                       CS:0013           EBF4

Yukardaki hex kodlarını sıra ile girdik. Bunu Önce 1 ‘e bastık, 8’e basıp codesegmenti 400’e ayarladık ve noktaya bastık. 0 a basıp offseti 0 olarak yazdık sonra hex kodlarını virgülle byte byte yazıp, bitirmek için noktaya bastık. 2 ye bastığımızda yine çalıştırılacak olan programın başlangıç ve bitiş adreslerini girdik ve çalıştırdık. Ledlerin ilk önce hepsi sönük durumdadır.Hangi ledi yakmak istiyorsak o ledin düğmesine basarsak o led yanmış olur.programın gerçekleştirdiği işlem budur.

5-) Üsteki programda not al komutunu sildik. Ve düğmelere basınca ledleri söndüren program oldu. Düğmelere basınca o düğmeyle ilgili led söndü.

CNT3                               EQU 3FD6H
APORT3                             EQU 3FD0H
BPORT3                             EQU 3FD2H
CPORT3                             EQU 3FD4H
RAME                               EQU 0FFFFH
CODE                             SEGMENT

ASSUME CS:CODE, DS:CODE

ORG 0
START:                           MOV SP,RAME
MOV AL,90H
MOV DX,CNT3
OUT DX,AL
J1:                              MOV DX,APORT3
IN AL,DX
MOV DX,BPORT3
OUT DX,AL
JMP J1

CODE ENDS

END START

Makine kodu

MOV SP,RAME                      CS:0000          BCFFFF
MOV AL,90H                       CS:0003          B090
MOV DX,CNT3                      CS:0005          BAD63F
OUT DX,AL                        CS:0008          EE
MOV DX,APORT3                    CS:0009          BAD03F
IN AL,DX                         CS:000C          EC
MOV DX,BPORT3                    CS:000D          BAD23F
OUT DX,AL                        CS:0010          EE
JMP J1                           CS:0011          EBF6

rapor8

Başkent Üniversitesi Elektrik - Elektonik Mühendisliği Bölümü

EEM 332 – Mikroişlemciler Laboratuvarı

Rapor

Deney No: #8 Deney Adı: Analog-Dijital Çevrim Deney Tarihi:05/05/06

1) PROGRAMIN ALGORİTMASI

Program adreslerden giren farklı ADC’lerin değerlerinin ledlere gönderilmesini sağlamaktadır. 8 adet led 8 bit’i temsil etmektedir. ADC0 adresi 3FC8 olduğundan potansiyometre ile ayarlanan voltajın ADC’den çıkışı alınıp ledleri yakmaktadır. Potansiyometre 0 ve 5 Volt arası voltajı ayarlamakta kullanılır. ADC’nin girişi potansiyometre ile 0 Volta ayarlandığında hiç led yanmamakta, 5 Volta çıkartıldığında bütün ledler yanmakta ve diğer voltaj değerlerinde ledler voltaj durumuna göre yanmaktadır. ADC2 adresi 3FCC olduğundan ısı sensöründen alınan analog sinyalin dijital sinyale çevrilmiş haline göre ledler yanar. Isı sensörünün ısı değeri arttıkça 8 bitin gösterdiği değer artar ve ledler buna göre yanar. ADC1 adresi 3FCA olduğundan ışık sensöründen alınan analog sinyalin dijital sinyale çevrilmiş haline göre ledler yanar. Işığın şiddetine göre ledlerin yanma durumu değişmektedir.

ADC0 EQU 3FC8H                       ; ADC’lerin adresleri belirlenir
ADC1 EQU 3FCAH
ADC2 EQU 3FCCH
ADC3 EQU 3FCEH
CNT3 EQU 3FD6H
BPORT3 EQU 3FD2H                     ;Ledlerin yanmasını sağlayan portun adresi
RAME EQU 0FFFFH
CODE SEGMENT

ASSUME CS:CODE, DS:CODE

ORG 300H
START:        MOV DX,CNT3
MOV AL,91H
OUT DX,AL
J1:           MOV AX,0
MOV DX,ADC1
OUT DX,AL              ;ADC1 adresi seçilir
MOV CX,300H            ;ADC1 adresinden gelen sinyalin kararlı hale gelmesi beklenir
LOOP $
MOV DX,ADC1
IN AL,DX               ;ADC1 adresinden gelen sinyal AL’ ye atılır
MOV DX,BPORT3
OUT DX,AL              ;BPORT3’den AL’ ye göre ledler yakılır
MOV CX,9FFFH
LOOP $
JMP J1                 ;J1’ e gidilir

CODE ENDS

END START

2) AKIŞ ŞEMASI

ön çalışma 8

Programın nasıl çalıştığı hakkındaki yorum

Bu program , verilen adreslerden giren farklı ADC ‘lerin değerlerini ledlerle bit olarak göstermektedir.BPORT3 ‘ten ledlere çıkış verilmektedir.ADC0 adresi 3FC8 olduğundan potansiyometre ile ayarlanan voltaj ADC’den çıkış alıp ledleri yakmakta,ADC1 adresi 3FCA olduğundan ışık sensöründen gelen analog sinyalin dijitale çevrilmiş halini alıp ledleri yakmakta,ADC2 adresi 3FCC olduğundan ısı sensöründen gelen analog sinyalin dijitale çevrilmiş halini alıp ledleri yakmaktadır.

2) VERİLEN PROGRAMIN MAKİNA KODU:

MOV DX,CNT3        CS:0300          BAD63F
MOV AL,91H         CS:0303          B091
OUT DX,AL          CS:0305          EE
MOV AX,0           CS:0306          B80000
MOV DX,ADC1        CS:0309          BACA3F
OUT DX,AL          CS:030C          EE
MOV DX,300H        CS:030D          B90003
LOOP $             CS:0310          E2FE
MOV DX,ADC1        CS:0312          BACA3F
IN AL,DX           CS:0315          EC
MOV DX,BPORT3      CS:0316          BAD23F
OUT DX,AL          CS:0319          EE
MOV CX,9FFFH       CS:031A          B9FF9F
LOOP $             CS:031D          E2FE
JMP J1             CS:031F          EBES
ön çalışma 8: sayfa 1, devre, tablo ve şekiller
ön çalışma 8, sayfa 1.

rap

Başkent Üniversitesi Elektrik - Elektonik Mühendisliği Bölümü

EEM 332 – Mikroişlemciler Laboratuvarı

Ön Çalışma/ Rapor

Deney No: # 9 Deney Adı: Dijital-Analog Çevrim Deney Tarihi: 12/05/2006

1-)

DAC            EQU       3FD8H
RAME           EQU       0FFFFH
CODE          SEGMENT

ASSUME CS:CODE, DS:CODE

ORG 0
START:        MOV AL,00
MOV DX,DAC
J1:           OUT DX,AL
INC AL
JMP J1

CODE ENDS

END START

Makine dili kodları ise

cs:0000 B000 mov al,00 cs:0002 BAD83F mov dx,3FD8 cs:0005 EE out dx,al cs:0006 FEC0 inc al cs:0008 EBFB jmp 0005

Programı deney setine yükleyip çalıştırdığımız zaman ve deney seti üzerinden JMP5 çıkışındaki DAC bacağından çıkış sinyalini gözlemlediğimizde programın testere ağzı gibi bir sinyal oluşturduğunu gördük. Programda AL’ye başlangıç olarak 0 atanmakta daha sonra bu değer arttırılmaktadır. Artan bu AL değerleri çıkışa verilmektedir. AL en son FF değerini alabilmekte, bu değerden sonra yine 0’a düşmektedir. Bu yüzden çıkış sinyali testere şeklinde görülmektedir.

2-) Verilen programın sadeleştirilmiş hali;

DATA       DB 128,192,238,255,238,192,128,64,17,00,17,64
START:
MOV       AL,00
MOV       SI,OFFSET DATA
MOV       DX,DAC
J2:       MOV       BL,00
MOV       BH,0CH
J1:       OUT       DX,AL
MOV       AL,[SI]
INC       SI
MOV       CX,0FFFH
LOOP $
CMP          BL,BH
JE J2
JMP J1

CODE ENDS

END           START

Makine dili kodları ise

cs:000C B000 mov al,00 cs:000E BE0000 mov si,0000 cs:0011 BAD83F mov dx,3FD8 cs:0014 B300 mov bl,00 cs:0016 B70C mov bh,0C cs:0018 EE out dx,al cs:0019 8A04 mov al,[si] cs:001B 46 inc si cs:001C B9FF0F mov cx,0FFF cs:001F E2FE loop 001F cs:0021 3ADF cmp bl,bh cs:0023 74EF je 0014 cs:0025 EBF1 jmp 0018

Programı deney setine yükleyip çalıştırdığımız zaman ve deney seti üzerinde JMP5 çıkışındaki DAC bacağından çıkış sinyalini gözlemlediğimizde programın çıkışta dijital sinüs sinyali oluşturduğunu gözlemledik. Deneyde verilen değerleri sırasıyla SI aracılığı ile AL’ye aktardık. SI’yi döngü içerisinde sürekli arttırdık. AL’nin içeriğini de DX ile çıktı olarak gördük. BH’a 12 değeri yani toplam girilen veri sayısı verilip BL ile karşılaştırma yaptırdığımız zaman girilen verinin bitip bitmediğini kontrol edildi. CX’e vermiş olduğumuz değerde sinyalin ne kadar süre kalacağını belirlemiş olduk. Yani çıkıştaki sinüs sinyali CX kadar (göstermiş olduğu frekans kadar) beklemeler yaparak dijital sinyal elde edilmiş oldu.

3-) Üretilen sinyalin frekansını değiştirmek için CX’e verilen değerler değiştirilerek üretilen frekansı değiştirmek mümkündür. CX’e vermiş olduğumuz değer sinyalin ne kadar süre kalacağını belirlediği için bu paremetreyi değiştirerek frekansı değiştirebiliriz. Yani çıkıştaki sinüs sinyali CX kadar (göstermiş olduğu frekans kadar) bekleme yapmaktadır.

lab81

ADC0  EQU 3FC8H
ADC1 EQU 3FCAH
ADC2 EQU 3FCCH
ADC3 EQU 3FCEH
CNT3 EQU 3FD6H
BPORT3 EQU 3FD2H

RAME EQU 0FFFFH
CODE SEGMENT 
ASSUME CS:CODE,DS:CODE

ORG 300H

START:  MOV DX,CNT3
	MOV AL,91H
	OUT DX,AL
J1:	MOV AX,0
	MOV DX,ADC1
	OUT DX,AL
	MOV CX,300H
	LOOP $
	MOV DX,ADC1
	IN AL,DX
	MOV DX,BPORT3
	OUT DX,AL
	MOV CX,9FFFH
	LOOP $
	JMP J1
CODE 	ENDS
	END START

Not: SKC-86 föyünün dosya adı deney 7 olmasına rağmen belgede “Deney Numarası: 8” yazmaktadır. Dosyadaki başlık korunmuştur.

eem332-lab-07-09.zip

ZIP arşivi · 911 KB · 09.05.2005

⬇ (911 KB)