DIGIAC 2000 Deney Seti

Deney kitinde üç kart vardır. Bunların dışında program yazmayı sağlayacak ve deney kartı ile haberleşmeyi sağlayacak bir bilgisayar (PC) vardır. Bilgisayar üzerinde ayrıca asembler dilinde kod yazabilmek ve bu kodu makine diline dönüştürüp, çalışabilir object kod üretebilen bir editör (Merlin) çalışacaktır. Bu editöre PC nin masaüstünden kolayca erişebileceksiniz. Ayrıca bu editörün, deney kitininde bağlantıları yapılmış durumdadır.

Deney kitinde üç adet kart vardır; DT35 uygulama kartı, PAT 80286 işlemci kartı ve bu kartın kontrolünde kullanılan bir tuş takımı ve göstergeden oluşan karttır.

PAT 80286 İŞLEMCİ KARTI :

PAT monitör programı işlemler için sistemi başlatmada, tuş takımını okumada ve göstergeyi sürmede kullanılan pek çok yeteneği olan bir yazılımdır. Hem terminal modunda, hem de tuş takımı modunda çalışabilir. Tuş takımı modunda, kullanıcı sisteme 24 adet tuş içeren bir karttan erişebilmektedir. Terminal modda ise, kullanıcı PAT’e RS232 portu üzerinden uygun bir terminalden veya bir terminal simülasyon yazılımından terminal klavyesiyle erişebilmektedir. Bu iki modda da birbirine hiçbir saklayıcı veya bellek gözü etkilenmeden geçiş yapmak mümkün olmaktadır.

Terminal modda çalışılırken “ PAT: “ şeklinde bir promptta çalışılır. Bu prompttu gördükten sonra yazacağınız her satır PAT’e bir komut olarak gönderilecektir.

80286 işlemcisi 24 adres hattına sahiptir. Bunlardan 20 tanesi PAT tarafından kullanılmaktadır. Böylece PAT 1MB’lık bir belleği adresleyebilir. 80286 16 bitlik bir işlemcidir. Dolayısıyla 20 bitlik bir adres üretebilmesi için birden fazla saklayıcının birleştirilmesi gerekmektedir. Bu birleştirme işlemide, ilk saklayıcının 16(10H) ile çarpılmasıyla sağlanır. Mesala belirtmek istediğimiz adres bellekte F000 segmanında yer alsın. Ayrıca belleğin bu segmanı içinde 8000 nolu gözde yer alsın. Bu durumda bu adresi 80286 da şöyle ifade edebiliriz. Önce segment_no’yu 10H ile çarpacağız;

F000H * 10H = F0000 olarak bulunur.

Şimdi bu segment değeri içinde offset kadar ilerleyeceğiz ;

F0000 + 8000 = F8000 adresi aranılan adrestir.

Burda ilk saklayıcıya segman saklayıcısı, diğer saklayıcıda offset saklayıcısı denilir.

Şimdi de sistemin bellek haritasına bir göz atalım ;

00000H-007FFH arasındaki RAM kısmı PAT monitör programı ve sistem kesme vektörleri için ayrılmıştır. Kullanıcı için ayrılan RAM 00800H – 0FFFFH arasındadır.

Kart üzerinde bir reset düğmesi yer alır. Bu düğmeyle yapacağınız resetlerde saklayıcı ve bellek içerikleri silinmeyecektir. Dolayısıyla program hatalarında, tıkanmalarında bu tür bir reset tercih edilmelidir. Kartın bağlı olduğu kutudaki power düğmesinden yapacağınız reset ise tüm bellek ve saklayıcı içeriklerini temizleyecektir.

Tuş Takımının Kullanımı :

Sistemi ilk açtığınızda veya her resetten sonra tuş takımının üstündeki göstergede önce ready ardından da M tuşuna basarak bir adres girmek istersek varsayım olarak adr 0100 gösterilir. Adr address manasındadır ve 0100 de offset numarasıdır. Burda şu unutulmamalıdır ki bu offsetin segment numarası 0800 dir. Bu offset değerini ya tuş takımından yeni değerler girerek ya da + ve – tuşlarını kullanarak değiştirmek mümkündür.

Segment numarasını değiştirmek için S tuşuna basarak yine offsette olduğu gibi değiştirebiliriz. Bir adres belirledikten sonra, bu adresin içeriğini değiştirmek istenildiğinde M tuşuna basılmalıdır. Sonra adresin ofset değeri ve adresteki veri gösterilecektir. Bu şekilde bir kod parçası girdikten sonra bunu çalıştırmak içinse G tuşuna basıp kodun başlangıç adresi girilmelidir. Daha sonra tekrar G tuşuna basıldığında ise artık kod çalışacaktır.
 
 

P tuşu ise port içeriklerini görmede ve değiştirmede kullanılır. P tuşuna basıldığında prt default_port_adresişeklinde bir görüntü belirir göstergede. Varsayım port adresi 0080H dir. Siz bu adres yerine başka adres girerek ve daha sonra tekrar P tuşuna basarak istediğiniz portun içeriğini öğrenebilir veya değiştirebilirsiniz.

B tuşu ise program debug işlemlerinde kullanılır. B tuşuna bastığınızda yazdığınız adreste breakpoint konulur. Eğer breakpoint ‘i kaldırmak isterseniz K tuşunu kullanabilirsiniz.
 
 

80286 da Giriş / Çıkış İşlemleri :

80286 işlemcisi yalıtılmış bir I/O sisteme sahiptir. Dolayısıyla I/O için farklı komutlara sahiptir. 80286 da IN ve OUT komutları giriş ve çıkış için kullanılmaktadır. I/O sırasında adres yolunda 16 bitlik adresler dolaşır. Dolayısıyla sizde I/O işlemleri için 16 bitlik adreslerden yararlanacaksınız. Yani belleğe erişir gibi 24 bitlik adresler değil.Çünkü I/O yalıtılmış ve tüm I/O cihazları veri yolunun düşük 16bitlik kısmına bağlanmışlardır.

Veriler mikrobilgisayara portlar aracılığıyla girer ve çıkar. PAT’ta 2 tane 8256 MUART (Mutifunctional Universal Asynchronous Receiver Transmitter) bulunmaktadır, bunlardan biri kullanıcı için biride sistem için ayrılmıştır. Kullanıcı arabirimi 2 tane 8 bitlik porta sahiptir. Ayrıca sayıcı/zamanlayıcı saklayıcı sistemine ve seri iletişim yapabilme kapasitesine sahiptir.

Programlarınızda kullanabileceğiniz bazı port numaraları aşağıda sunulmuştur ;
 
8259 Kesme Kontrol Devresi
Read Saklayıcısı
Write Saklayıcısı
I/O adresi
Komut
Komut
0040H
Komut
Komut
0042H

 
 
Sistem MUART ‘ı 8256
Read Saklayıcısı
Write Saklayıcısı
I/O adresi
Mode
Mode
0066
Port1 Kontrol
Port1 Kontrol
0068
Port1
Port1
0070
Port2 
Port2 
0072
Timer1
Timer1
0074
Timer2 
Timer2 
0076

 
 
 
 
Kullanıcı MUART ‘ı 8256
Read Saklayıcısı
Write Saklayıcısı
I/O adresi
Mode
Mode
0086
Port1 Kontrol
Port1 Kontrol
0088
Port1
Port1
0090
Port10
Port2 
0092
Timer1
Timer1
0094
Timer10
Timer2 
0096

 

Terminal modda I/O portların içeriklerini görmek veya değiştirmek için CP komutu kullanılır. Tuş takımında ise P ile yapılabilir bunlar.

Port1(portb)’ in her bir biti ayrı ayrı giriş/çıkış olarak yönlendirilebilir. Port2(porta)’nin ise alçak anlamlı 4 biti ve yüksek anlamlı 4 biti bir bütün olarak giriş/çıkış olarak yönlendirilebilir.Port1 adresi 90H Port2 adresi ise 92H ‘dir. İki özel giriş/çıkış komutu vardır:

IN : Giriş portunun içeriğini akümülatöre yükler. Örn: IN AL,90H

OUT : Akümülatör içeriğini çıkış portuna yükler. Örn: OUT 90H,AL

Yönlendirmelerde port1 için port1 control register’a giriş olacak bit için 0 ve çıkış olacak bit için 1 şeklinde kodlanmış veri yazılır. Port1 control register adresi 88H’dir.

Mesela; Port1’in 7,5,4,0 bitleri çıkış 6,3,2,1 bitleri giriş olarak yönlendirmek için

MOV AL,B1H OUT 88H,AL

program parçası yazılmalıdır.

Port2’nin yönlendirilmesi için mod saklayıcısının düşük anlamlı 3 biti kullanılır. 4lü olacak şekilde ikiye ayrıldığı için bu portun koşullanması için 3 bit yeterlidir.
 
P2C2
P2C1
P2C0
YAB*
DAB**
0
0
0
giriş
giriş
0
0
1
giriş
çıkış
0
1
0
çıkış
giriş
0
1
1
çıkış
çıkış

* Yüksek anlamlı bit

** Düşük anlamlı bit

Mod saklayıcısının adresi 86H’dir.

Mesela; Port2’yi YAB giriş ve DAB çıkış olacak şekilde yönlendirmek için:

MOV AL,01H

OUT 86H,AL yazılmalıdır.

80286 İşlemcisinin Saklayıcı Kümesi :

80286 da yer alan saklayıcılar 16 bit liktir. Bunlardan AX, BX,CX ve DX ‘e 8 bit erişim söz konusudur. Bu yüzden bu saklayıcılar iki kısımdan oluşmuş şekilde gösterilmektedirler.

AX=
AH (8 bit)
AL (8 bit)
BX=
BH (8 bit)
BL (8 bit)
CX=
CH (8 bit)
CL (8 bit)
DX=
DH (8 bit)
DL (8 bit)
SP
Yığın göstergesi
BP
Taban göstergesi
SI
Kaynak sıra saklayıcısı
DI
Hedef sıra saklayıcısı

   
CS
Kod segmanı
DS
Veri segmanı
SS
Yığın segmanı
ES
Ekstra segman
 
IP
Komut göstergesi
F
Bayraklar
MSW
Makine durum sözcüğü

 

Bahsi geçen F saklayıcısı mikroişlemciler dersinde görülen klasik işlemci tipindeki durum-denetim saklayıcısının içerdiği bayrakları içeren bir saklayıcıdır.

IP saklayıcısı komutun offsetini tutar. CS ise segment numarasını. Dolayısıyla CS-IP saklayıcı çifti 80286 için program sayacı yapısını oluşturmuş olurlar. Tabiiki yine bu saklayıcıdaki bilgiler bir adres olarak yorumlanacakları için bu iki saklayıcıdaki toplam bilginin 20 bitlik bir adres olduğu unutulmamalıdır.
 
 

Terminal modda veya yuş takımı modunda bir saklayıcının içeriğini görmek veya değiştirmek için R komutu veya tuşu kullanılmalıdır.

Bunların dışında I/O için kullanılan kullanıcı MUART’ında da 5 tane 8-bitlik zamanlayıcı saklayıcısı yer alır. DC morot kontrol deneyinde bu zamanlayıcılardan birini olay sayma işinde kullanmanız gerekecektir. Bunun için bu tür bir saklayıcının ne tür bilgiler içerdiği aşağıda sunulmuştur ;


 
 
 
 

80286 İşlemcisinde Kesme :

80286 kesmeler için 1K’lık RAM ayırmıştır. Bu sebeple iç içe bir çok kesmeye izin verecek donanıma sahiptir. Kesmeler bir dış donanımdan gelebileceği gibi program akışlarında INT komutu kullanılması ile veya bazı hata durumlarında (sıfıra bölme, mevcut olmayan işlem kodu) oluşabilir. Bu durumlara ‘exception’ denir.

Maskelenebilen ve maskelenemeyen kesmeler vardır. 1. tip kesmelere izin STI (set interrupt enable flag) ile verilir. CLI (clear interrupt enable flag) ise engeller. Maskelenemeyen kesmeler üzerinde bu tip işlemler yapılamaz. Kesme hizmet programlarından dönmek için RETURN komutu kullanılır. Kesme hizmet programına bağlanırken Komut İşaretçisi, Bayraklar, ve CX saklayıcısı yığına itilir. RETURN komutu yürütüldüğünde ise bu değerler çekilir. NMI (non maskable interrupt) en öncelikli kesmedir. Bağlanılacak kesme hizmet programı başlangıç adresi

0000:0008 - 0000:000F adres aralığına önce offset sonra segman gelecek şekilde yazılmalıdır. Mesala KHP adresi 0080:0200 ise ;

offset:

0000:0008 = 00

0000:0009 = 02

segment:

0000:000A = 80

0000:000B = 00

gibi yazılması gerekir.
 
 
 
 

Kesme vektörleri :
 
Kesme
Vektör No
Kesme Vektörü
K*
E**
Öncelik
IR0
20H
0080H
E
H
En yüksek
IR1
21H
0084H
E
L
 
IR2
22H
0088H
E
L
 
IR3
23H
008CH
E
H
 
IR4
24H
0090H
E
H
 
IR5
25H
0094H
H
Kullanıcı  muart
 
IR6
26H
0098H
H
Sistem  muart
 
IR7
27H
009AH
E
H
En düşük

* Kullanıcıya açık mı ? E:Evet, H:Hayır

** Low mu yoksa High iken mi etkin? L:Low; H:High, muart: muart kullanılıyor.

Her kesme hizmet programı sonunda yeniden kesme alınabilmesi için kesmenin bitiğini belirtmek için ‘kesme kontrolörü’ ne 20H yazılmalıdır.

Kesme izin ve reset saklayıcıları :
 
L0
Zamanlayıcı 1
L1
Zamanlayıcı 2 veya iskele kesmesi
L2
Kullanılmıyor
L3
Zamanlayıcı 3 veya zamanlayıcı 3 ve 5
L4
RS232 alıcı kesmesi
L5
RS232 verici kesmesi
L6
Zamanlayıcı 4 veya zamanlayıcı 10 ve 4
L7
Zamanlayıcı 5 veya iskele 2 el sıkışma

 

Değerlerinin lojik ‘1’ olması ilşkili kesmelere izin verildiğini gösterir. Adres saklayıcısının okunması tüm kesmeleri kaldırır.
 
 

Mod Saklayıcısı :
 
P2C0

P2C1

P2C2

port2 kontrolü

(daha önce anlatılmıştı)

CT2

CT3

Sayıcı/zamanlayıcı
TSC
Sayıcı/zamanlayıcı 5 kontrolü
T24
Sayıcı/zamanlayıcı 2 ve 4 kaskat
T35
Sayıcı/zamanlayıcı 3 ve 5 kaskat

RESET tüm kesmelerden önceliklidir. Sistemi başlangıç koşullarına getirir. Vektörü : F000H=FFF0H ‘dir. Buradaki ilk komut disassemble edildiğinde JMP 0000 olduğu görülür. Buradan da PAT’ın monitör programı istenmektedir.

Cold reset PAT kartına gerilim verilmesiyle yapılır. Bu durumda RAM sıfırlanır. Monitör programı yeniden başlatma (RESTART) Reset tuşuna 2 kez arka arkaya basılması ile tüm değişkenler başlangıç değerlerini alırlar.RAM etkilenmez. Warm Reset düğmesine bir kez basılmasıyla oluşur. Hiç bir değişken ya da program etkilenmez.
 
 
 
 

DT35 UYGULAMA KARTI

DT35, mikrobilgisayarın kontrol edebileceği aygıt ve araçları içeren bir modüldür. Yazılan programların çeşitli çevre birimler üzerindeki kontrolünü göstermek amacıyla tasarlanmıştır.

İçeriğinde ;

  1. 8-bit Dijital-Analog çevirici (DAC)
  2. 8-bit Analog-Dijital çevirici (ADC)
  3. DAC tarafından sürülen, geri beslemeli bir motor
  4. ADC tarafından okunabilen bir potansiyometre
  5. DAC tarafından kontrol edilen bir optik verici ile ADC tarafından okunan bir optik alıcı
  6. TTL uyumlu bir giriş/çıkış portundan kontrol edilen bir ses verici
  7. TTL uyumlu iki giriş/çıkış portundan kontrol edilen bir ultrasonik verici ve alıcı
  8. İki adet 8 bit port (Port-A ve Port-B) ve içeriklerini görüntülemek için bu portlar tarafından sürülen 16 led
Port A: Dijital-Analog çeviciye 8-bit veri yazmada, Analog-Dijital çeviriciden 8-bit veri okumada kullanılır.

Port B: DAC, ADC dönüşümlerini kontrol etmede, motorun geribeslemesini okumada, ses vericiyi sürmede ve ultrasonik alıcı-vericinin uzaklık ayarını kontrol etmede kullanılır.
 
 

Giriş-Çıkış Portlarının Kullanımı:

Giriş-çıkış portlarını gözlemleme için ledlerin durumuna bakılır. Eğer bir led, lojik “1” konumundaysa yanar, lojik “0”konumunda ise sönüktür.

Portların hatlarının kullanıldığı yerler:
 
 
 
Port
Kullanımı
Yön
Açıklama
PA0

PA1

PA2

PA3

PA4

PA5

PA6

PA7

D0

D1

D2

D3

D4

D5

D6

D7

G/Ç

G/Ç

G/Ç

G/Ç

G/Ç

G/Ç

G/Ç

G/Ç


 
 

1 byte veri DAC’a yazılır ya da ADC’ den okunur

D0=lsb D7=msb

PB0
EN’
Ç
DAC’ın enable girişi lojik “0” da olduğu müddetçe DAC yoldan (D0-D7) gelen bilgiyi analoga çevirir. 

Enable girişi lojik “1” olduğu vakit son kez çevirme işlemi yapılır ve çıkış o değerde dondurulur.

PB1
WR’
Ç
Bu girişin lojik 1 den 0 a geçişinde analog –dijital dönüşümü başlar.
PB2
BSY’
G
Bu çıkış analog-dijital dönüşümü başladığı zaman lojik 0’ a iner ve yaklaşık 9m s sonra lojik 1’ e çıkar ve verinin yoldan okunabileceğini belirtir.
PB3
RD’
Ç
Bu giriş ADC’nin çıkışından verinin okunabilmesi için lojik 0’a indirilir. Aksi halde çıkış yüksek empedans konumunda bekler.
PB4
DSC
G
DC Motordaki optik kesici diski için çıkış. Bu diskin üzerindeki 2 delik vasıtasıyla 2 pozitif darbe oluşmaktadır. 
PB5
PZO
Ç
Piezo ses vericisi için kontrol girişi
PB6
UTX
Ç
Bu girişin lojik 1 olması ultrasonik vericiyi aktif eder.
PB7
URX
G
Ultrasonik alıcı tarafından 40 kHz’lik ses algılandığı zaman çıkışta 40 kHz’lik dalga oluşturur. Aksi halde çıkış lojik 1 dedir.


DT35 Kitinin Blok Diyagramı:
 
 

Dijital-Analog Çevirici (DAC):

8-bitlik DAC, bir anahtar vasıtasıyla motora yada optik vericiye bağlanır. Diyagramı;

Dijital Analog çeviricide girişten gelen 0-FF arası dijital işaret 0-2.55V arası analog işarete dönüştürülür.

DAC tan çıkış alabilmek için PB0 lojik 0 yapılarak EN sinyali oluşturulur, ondan sonra da veri A portuna yazılır. Çıkış anahtarın durumuna göre motora ya da optik vericiye gönderilir.

Analog-Dijital Çevirici (ADC):

8-bitlik ADC, bir anahtar vasıtasıyla optik alıcıya ya da potansiyometreye bağlanır. Diyagramı;


 
 
 
 

Analog Dijital çeviricide girişten gelen 0-2.55V arası analog işaret 0-FF arası dijital işarete dönüştürülür ve A portundan dışarı verilir.

DAC tan çıkış alabilmek için aşağıdaki işlemler yapılmalıdır:

  1. WR’ ve RD’ girişleri lojik 1 yapılır.
  2. Çevirme işlemine başlamak için WR girişine (1à0à 1) bit dizisi gönderilir. Burda dikkat edilmesi gereken nokta bu gönderim işleminin 200 ns’den küçük olması gerektiğidir.
  3. Çevirme işlemi bitene kadar beklenmelidir. Bunun için de BSY’ çıkışının lojik 1’e gelip gelmediği gözlenmelidir. Eğer çevirme işlemi için yazılan kod 9m s (bir çevirme işleminin maksimum süresi) den fazla süreceği biliniyorsa bu kontrole gerek kalmamaktadır.
  4. RD’ girişi lojik 0 yapılarak ADC’nin veri çıkışı aktif edilir.
  5. A portundan veri okunur.
  6. RD’ girişi lojik 1 yapılarak ADC’nin veri çıkışı pasifize edilir.
Bu sürecin zaman diyagramı aşağıdaki gibidir: