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 :
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 ;
|
||
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
Yığın göstergesi |
|
Taban göstergesi |
|
Kaynak sıra saklayıcısı |
|
Hedef sıra saklayıcısı |
|
Kod segmanı |
|
Veri segmanı |
|
Yığın segmanı |
|
Ekstra segman |
|
Komut göstergesi |
|
Bayraklar |
|
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 :
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* 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ı :
|
Zamanlayıcı 1 |
|
Zamanlayıcı 2 veya iskele kesmesi |
|
Kullanılmıyor |
|
Zamanlayıcı 3 veya zamanlayıcı 3 ve 5 |
|
RS232 alıcı kesmesi |
|
RS232 verici kesmesi |
|
Zamanlayıcı 4 veya zamanlayıcı 10 ve 4 |
|
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ı :
P2C1 P2C2 |
port2 kontrolü
(daha önce anlatılmıştı) |
CT3 |
Sayıcı/zamanlayıcı |
|
Sayıcı/zamanlayıcı 5 kontrolü |
|
Sayıcı/zamanlayıcı 2 ve 4 kaskat |
|
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 ;
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:
|
|
|
|
||
PA1 PA2 PA3 PA4 PA5 PA6 PA7 |
D1 D2 D3 D4 D5 D6 D7 |
G/Ç G/Ç G/Ç G/Ç G/Ç G/Ç G/Ç |
1 byte veri DAC’a yazılır ya da ADC’ den okunur D0=lsb D7=msb |
||
|
|
|
Enable girişi lojik “1” olduğu vakit son kez çevirme işlemi yapılır ve çıkış o değerde dondurulur. |
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
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: