BÖLÜM I GİRİŞ. 1- Merkezi İşlem Birimi(Central Processing Unit-CPU) 2- Hafıza (Memory) 3- Giriş/ Çıkış(I/O) Birimleri



Benzer belgeler
KOMUT TABLOSU İLE İLGİLİ AÇIKLAMALAR:

BÖLÜM 6 Seri Port Đşlemleri

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta

BÖLÜM Mikrodenetleyicisine Giriş

Mikrobilgisayar Mimarisi ve Programlama

8051 Ailesi MCS51 ailesinin orijinal bir üyesidir ve bu ailenin çekirdeğini oluşturur çekirdeğinin temel özellikkleri aşağıda verilmiştir:

Mikroişlemcili Sistemler ve Laboratuvarı 6.Hafta

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

Ayhan Yüksel. (Son güncelleme: Berat Doğan) Tıbbi Enstrumantasyon Tasarım & Uygulamaları ( )

Ad Soyad: Öğrenci No:

BÖLÜM in Bellek Organizasyonu

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

Mikroişlemcili Sistemler ve Laboratuvarı

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

BÖLÜM 7 XTAL2 XTAL1. Vss. Şekil Mikrodenetleyicisi osilatör bağlantı şekli. Bir Makine Çevrimi = 12 Osilatör Periyodu

HAFTA 1 KALICI OLMAYAN HAFIZA RAM SRAM DRAM DDRAM KALICI HAFIZA ROM PROM EPROM EEPROM FLASH HARDDISK

BM-311 Bilgisayar Mimarisi

8051 DONANIM ÖZELLİKLERİ

Mikroişlemcili Sistemler ve Laboratuvarı

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

BÖLÜM 4. Dahili veri hafıza transfer komutlarının genel yapısı, mov <hedef>, <kaynak> şeklindedir

8051 Mikrokontrolcü Ailesi

BÖLÜM 7 Kesmeler.

ADCCON1: MD1 EXT_REF CK1 CK0 AQ1 AQ0 T2C

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

Mikrobilgisayar Donanımı

8051 MİMARİSİ. Temel mimari yapısı Şekil 3.1 de görülmekte olan 8051 mikrodenetleyici ailesinin başlıca özellikleri aşağıda verilmiştir.

İŞLEMCİLER (CPU) İşlemciler bir cihazdaki tüm girdilerin tabii tutulduğu ve çıkış bilgilerinin üretildiği bölümdür.

BM-311 Bilgisayar Mimarisi

MC6800. Veri yolu D3 A11. Adres yolu A7 A6 NMI HALT DBE +5V 1 2. adres onaltılık onluk bit 07FF kullanıcının program alanı

BÖLÜM MİKROİŞLEMCİSİ

Mikroişlemciler-IMikrodenetleyiciler. Alper Bayrak Abant İzzet Baysal Üniversitesi Bolu

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

Von Neumann Mimarisi. Mikroişlemciler ve Mikrobilgisayarlar 1

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ

Paralel ve Seri İletişim. Asenkron/Senkron İletişim. Şekil 2: İletişim Modları

8086 nın Bacak Bağlantısı ve İşlevleri. 8086, 16-bit veri yoluna (data bus) 8088 ise 8- bit veri yoluna sahip16-bit mikroişlemcilerdir.

MEB YÖK MESLEK YÜKSEKOKULLARI PROGRAM GELİŞTİRME PROJESİ. 1. Tipik bir mikrobilgisayar sistemin yapısı ve çalışması hakkında bilgi sahibi olabilme

8086 Mikroişlemcisi Komut Seti

Mikrobilgisayarlar ve Assembler. Bahar Dönemi. Vedat Marttin

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

Bellekler. Mikroişlemciler ve Mikrobilgisayarlar

BİLGİSAYAR KONTROLLÜ KAMERALI ROBOT KOL PROJESİ

BM-311 Bilgisayar Mimarisi

Çalışma Açısından Bilgisayarlar

Mikroişlemcili Sistemler ve Laboratuvarı 5.HAFTA:BÖLÜM-1

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.

BİLGİSAYAR MİMARİSİ. Bilgisayar Bileşenleri Ve Programların Yürütülmesi. Özer Çelik Matematik-Bilgisayar Bölümü

Dr. Feza BUZLUCA İstanbul Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü

Mikroişlemcili Sistemler ve Laboratuvarı

B.Ç. / E.B. MİKROİŞLEMCİLER

İletişim Protokolleri (Communication Protocols)

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

Y. Müh. Ayhan Yüksel. (Son güncelleme: Zafer Đşcan) Tıbbi Enstrumantasyon Tasarım & Uygulamaları ( )

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB in İç Yapısı. MİB Altbirimleri. MİB in İç Yapısı

IFD8520 ADRESLENEBİLİR RS-485/RS-422 İZOLELİ ÇEVİRİCİ KULLANIM KILAVUZU

UYGULAMA-2 1. ÖZET 2. UYGULAMALAR. 2.1 PORT2 nin kullanımı

LCD (Liquid Crystal Display)

Kesmeler (Interrupts)

Bölüm 4 Aritmetik Devreler

Bölüm 5: ARITMETIK VE MANTIK IŞLEM YAPAN KOMUTLAR

MİKROBİLGİSAYAR LABORATUVARI DENEY RAPORU

Şekil. 64 Kelimelik Yığıtın Blok Şeması

XC8 ile PİC uygulamaları

BM-311 Bilgisayar Mimarisi

Komutların Yürütülmesi

Mikrobilgisayar Sistemleri ve Assembler

8. MİKROİŞLEMCİ MİMARİSİ

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

KASIRGA 4. GELİŞME RAPORU

İşletim Sistemlerine Giriş

Mikrodenetleyiciler İ ZMİ R 8051 Uygulamaları

Mikrobilgisayarlar. Mikroişlemciler ve. Mikrobilgisayarlar

BM-311 Bilgisayar Mimarisi

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUVARI KESMELİ GİRİŞ/ÇIKIŞ

WiFi RS232 Converter Sayfa 1 / 12. WiFi RS232 Converter. Teknik Döküman

8086 Mikroişlemcisi Komut Seti

PIC Mikrodenetleyicileri

CUMHURİYET MESLEKİ VE TEKNİK ANADOLU LİSESİ BİLİŞİM TEKNOLOJİLERİNİN TEMELLERİ DERSİ DERS NOTLARI BELLEKLER

İşletim Sistemleri (Operating Systems)

C-Serisi PLC İleri Seviye Eğitim

Adres Yolu (Address Bus) Bellek Birimi. Veri Yolu (Databus) Kontrol Yolu (Control bus) Şekil xxx. Mikrodenetleyici genel blok şeması

80C51 Mikrodenetleyicilerinde Timer-Counter Yapılarının FPGA Mimarileri Kullanılarak Geliştirilmesi. Özdemir ÇETİN 1. Bölümü, Adapazarı

Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR

Alt Programdan Ana Programa Dönüş Adresine Donanım Tarafından Hesaplanması

BEKLEMELĐ ÇALIŞMA VE ZAMAN SINIRLI ĐŞLER. 1. Genel Tanıtım. 2- WAIT işaretinin üretilmesi

Assembly Dili Nedir? Assembly dili biliyorum derken hangi işlemci ve hangi işletim sistemi için olduğunu da ifade etmek gerekir.

DERS 5 PIC 16F84 PROGRAMLAMA İÇERİK. PIC 16F84 bacak bağlantıları PIC 16F84 bellek yapısı Program belleği RAM bellek Değişken kullanımı Komutlar

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

Program Kontrol Komutları. Mikroişlemciler ve Mikrobilgisayarlar 1

LCD (Liquid Crystal Display )

Transkript:

1 BÖLÜM I GİRİŞ Günümüzde mikroişlemci kelimesi pek çok insan için yabancı olmayıp herkese fraklı anlam ifade eder. Teknik olmayan pek çok kişi, mikroişlemcinin, bir kişisel bilgisayarda (PC) kullanılan, bilgisayarını gücünü belirleyen çok önemli bir elektronik tümdevre olduğunu bilir. PC lerden başlayıp,diz üstü PC ler, minibilgisayarlara kadar bütün bilgisayarlar, mikroişlemcinin görevini gerçekleştiren, daha genel bir ifadeyle,bir işlemciye sahiptir. Bilgisayarlardaki işlemciler, 1950 lerden günümüze çok değişik şekiller almıştır. Günümüzde tipik bir bilgisayar üç ana birimden oluşur : 1- Merkezi İşlem Birimi(Central Processing Unit-CPU) 2- Hafıza (Memory) 3- Giriş/ Çıkış(I/O) Birimleri CPU,bilgisayarın değişik birimleri arasındaki veri akışı ve veri işleme görevlerini yerine getirir. Veri işlemenin çoğu, CPU içindeki aritmetik lojik birimde gerçekleştirilir. CPU çeşitli komutları yürüterek, bilgisayar sisteminin çalışmasını yönetir. Bilgisayar hafızasında saklı olan komutlar, bilgisayarın yürüteceği programı oluşturur. Bir CPU daki kontrol alt birimi, sistemdeki veri akışını yönetir, hafızadan okunan komutu çözer ve komut tarafından belirlenen işlemi yerine getirir. İşlemler,veri transferi veya ALU daki işlemlerdir. ALU, toplama,çıkarma.çarpma,bölme gibi temel aritmetik işlemler ve lojik işlemleri yerine getirir. Lojik işlemler, AND, OR ve EX-OR gibi işlemlerdir. Dış dünyadan CPU ya veri transfer eden alt birim giriş cihazıdır. Giriş verisi, bir insan,diğer bir bilgisayar veya başka bir elektronik sistem gibi çok değişik kaynaklardan gelebilir. CPU tarafından işlenen veri, hemen çıkışa gönderilebilir veya daha sonra işlenmek üzere hafızada saklanır. CPU dan dış dünyaya veri transfer eden alt birim çıkış cihazıdır. Bu birim ile, göstergeler, yazıcılar,diğer bilgisayarlara veya elektronik sistemlere veri transfer eden cihazları belirtmektedir. 1971 yılında, bir bilgisayarın ALU ile kontrol birimlerinin bir silikon tümdevresi üzerine, INTEL firması tarafından konulması ile, mikroişlemciler dönemi başlamıştır. Basit bir teknik tanım ile, mikroişlemci, yarı iletken tek bir tümdevre üzerine yerleştirilmiş CPU' ya denir. Mikroişlemciler genel amaçlı cihazlar olup bir çok uygulama için uygundur. Bir mikroişlemci temel olarak CPU nun fonksiyonlarını yerine getirdiği için,pek çok kere, CPU ile mikroişlemci eş anlamda kullanılmaktadır. Bir bilgisayarın CPU su baskı devre kartında bulunuyorsa, bilgisayar, minibilgisayar diye adlandırılır. Bir mikroişlemci etrafına kurulu bilgisayar, mikrobilgisayar diye adlandırılır. Bir mikrobilgisayarın mikroişlemcisi, I/O ve hafıza cihazları,teknolojiye ve uygulamalara göre devamlın değişim göstermektedir. Teknolojinin gelişimi doğrultusunda, daha önce mikroişlemci tümdevresi üzerinde olmayıp dışarıda olan, pek çok giriş/ çıkış ve hafıza alt birimleri, CPU üzerine taşınmıştır.

2 Mikrokontrolör, bir tümdevre üzerinde üretilen bilgisayara denir. Bir mikrokontrolör tümdevresinde bulunan hafıza ve giriş/ çıkış alt sistemleri, bu işlemcilerin bir çok uygulama içinde, gömülü olarak doğrudan ve tek başına, mikroişlemcilere göre çok daha basit ve ucuz arabirim teknikleriyle, kontrol amaçlı olarak kullanılmalarını sağlar. Günümüzde mikroişlemciler ev mikrokontrolörler teknolojinin vazgeçilmez birimleri olup, sayısız alanlarda kullanılmaktadır. Bugün,mikroişlemci ve mikrokontrolör üreten pek çok firma bulunmaktadır. Bunların en önemlileri INTEL ve MOTOROLA firmalarıdır. Bir mikrokontrolör, özet olarak, kullanıldığı sistemin bir çok özeliğini aynı anda gözleme (monitoring),ihtiyaç anında gerçek zamanda cevap verme (real-time response) ve sistemi denetlemeden (control) sorumludur. Mikrokontrolörler, örneğin, otomobillerde motor kontrol, elektrik ve iç panel kontrol ; kameralarda, ışık ve odaklama kontrol gibi amaçlarla kullanılmaktadır. Bilgisayarlar, telefon ve modem gibi çeşitli haberleşme cihazları,cd teknolojisi, fotokopi ve faks cihazları, radyo, TV,teyp,oyuncaklar, özel amaçlı elektronik kartlar ve sayılamayacak kadar pek çok alanda, mikrokontrolörler yoğun olarak kullanılmaktadırlar. Bu kadar geniş uygulamalarda kullanılan mikrokontrolörler, tümdevre üzerinde yer alan çok değişik donanım özelikleri sunmaktadır. Bu özeliklerden bazıları şunlardır : Paralel ve Seri I/O portları,zamanlayıcı / sayıcılar, ADC, ve RAM, ROM, EPROM ve EEPROM gibi değişik kapasitelerde ve özeliklerde hafıza birimleri. Mikrokontrolörlerin yoğun olarak kullanıldığı elektronik ve kontrol uygulamalarının yapısı, mikrokontrolör, onun arkadaşı olan genel amaçlı mikroişlemciden ayırmaktadır. Bu uygulamalarda gerçek zaman (real time) işlemi ve çok görevlilik( multi-tasking ) özeliği bulunur. Gerçek zamanda işleme, kontrolörün, sinyalleri çalışma ortamından hazır olduklarında alıp ortamı bekletmeden işleyebilmesi demektir. Benzeri şekilde,kontrolör ihtiyaç anında çalışma ortamına,gereken kontrol sinyallerini göndermeli ve ortamı bekletmeyecek tarzda hızlı olmalıdır. Diğer bir deyişle mikrokontrolör, sistemin çalışmasında sınırlayıcı etmen olmamalıdır. Çok görevlilik, bir çok görevi aynı anda veya aynı anda gibi yapabilme kapasitesidir.

3 BÖLÜM II 8051 2.1 8051 MİKROKONTROLÖR AİLESİ 8051 Intel firması tarafından, 1980 lerin başında piyasaya sunulan, dünyanın en popüler 8-bit mikrokontrolörüdür. Bu mikrokontrolör için, başta Intel olmak üzere, pek çok üretici firma (Philips, Dallas, Siemens,Oki ve Matra/Harris gibi) geniş bir donanım ve yazılım desteği sunmuş ve bunun neticesi, 8051, 1980 lerden bugüne, bir endüstri standardı olmuştur. 8051 ailesi bazen MCS-51 ailesi olarak da belirtilir. MCS harfleri, geleneksel olarak, Intel firmasının üretmiş olduğu, bir sistemi veya CPU lar, hafızalar, saat üreteçleri, giriş/ çıkış birimleri ve benzeri birimler içeren, mikrobilgisayar ve uyumlu parçaları (components) belirtmede kullanılmıştır. Kitapta 8051 ve MCS-51 ifadeleri, eş anlamlı olarak aynı aileyi belirtmek için kullanılmıştır ve genelde,bir işlemciyi belirtmeyip ailenin ismi olarak kullanılmaktadır. Bununla beraber, 8051, MCS-51 ailesinin ilk üyelerinden olan, 8051, 8751 ve 8031 mikrokontrolörlerinden birinin de adıdır. Bugün için değişik mikrokontrolör aileleri arasında,8051 ailesi, gelişmiş ürünleriyle beraber yaklaşık % 40 gibi bir piyasa payına sahiptir. 8051 ailesinin temel özelikleri aşağıda maddeler halinde özetlenmektedir: Popüler : Kolay bir şekilde bulunmakta ve desteklenmektedir. 8051 geliştiricileri için bir çok Internet Web sayfası, kitaplar, teknik dökümanlar, yazılım ve donanım gereçleri bulunmaktadır. Uygun, Hızlı ve güçlü : 8051 çekirdek mimarisi hedef kontrol uygulamalar için çok uygun olup hızlı ve güçlüdür. Geniş yelpaze ve uyumluluk : Çok değişik 8051 ürünleri olmasına karşın, ikili kod düzeyinde bütün ürünler uyumludur (compatible). Diğer mikrokontrolör aileleri, 8051 in sunmuş olduklarını, farklı ve uyumsuz işlemcilerle (genellikle tek üretici firma kaynaklı olarak ) ancak sağlayabilmektedir. Bu uyumluluk, kolaylık ve esneklik, program geliştirme araçlarında, eğitiminde ve yazılım desteğinde de bulunmaktadır. Çok kaynaklılık : Günümüzde çok değişik 8051 işlemcisi üreten 12 üreticinin üzerinde firma bulunmakta ve sayısız yazılım ve bilgi kaynakları bulunmaktadır. Sürekli iyileştirme: 1980 lerden bugüne silikon ve tasarım olarak sürekli geliştirilen 8051 ler hızını ve gücünü arttırmıştır. Günümüzde 16-bit modellerinin de bulunduğu 8051 ler değişik kapasite, boyutlarda ve fiyatlarda kolay bir şekilde temin edilebilmektedir.

4 Şekil-2-1 8051 Mikrokontrolör Blok Diyagramı 8051 ailesi 8-bit single-chip mikrokontrolör 'ler sanayi uygulamaları için geliştirilmiş üzerinde hem giriş hem de çıkış için kullanılabilen 4 adet I/O port'u bulunan ayrıca bu portları Data ve Adres hatları olarak kullanabilen bir yapıya sahiptir. 8051'de Program Bellek olarak 8KB ROM, 8751'de ise 8KB EPROM vardır. Program Bellek 16-bit adresleyebildiğinden, Program Belleğimiz 64 KB olabilir.16-bitlik Data Bellek' in adreslenebilmesi CPU' da bulunan DPTR register' i sayesinde mümkündür. Program Bellek yalnız okunabilir,yazılamaz. Bu ailede 64KB'dan büyük Program Bellek alanına sahip olan işlemciler de vardır. 8051'de programın ilk 4KB'lık kısmı chip üzerinde bulunan ROM' da tutulabilir. ROM' suz versiyonlarda Program Bellek haricidir ve örneğin EPROM olabilir. Bu versiyonlarda harici Program Bellek ucu PSEN (Program Store Enable) 'dir. Şekil-2-2 ALE Kullanımı İle Harici Program Kodunun Okunma Zamanlaması

5 Data Bellek (RAM),Program Bellekten ayrı bir adres alanını işgal eder. 8051'de 128 Byte' lık Data Bellek chip' in üzerindedir. Bunlarda en fazla 64KB harici RAM,harici Data Bellek alanında adreslenebilir. ROM'suz versiyonlarda 128 Byte' lık Data Bellek (RAM) chip üzerindedir. CPU' nun RD ve WR bacaklarından çıkan okuma ve yazma sinyalleri ile ihtiyaç duyulan Data Bellek' e erişilebilinir. Şekil-2-3 Ortak Adres ve Data Yolunun Program Kodu Okunması Sırasındaki Zamanlaması Şekil-2-4 Okuma İşlemi Zamanlaması RD ve PSEN sinyalleri lojiksel olarak AND' lenirse bu çıkış ucu harici Program/Data Bellek için okuma sinyali oluşturulabilir. 8051 Blok Diyagramı şekil-2-4.'de verilmiştir. Reset' ten sonra CPU programını icra etmeye 0000H adresinden başlar. Program Bellek' in bazı bölgeleri İnterrupt' lar için ayrılmıştır. Gelen interrupt CPU' nun bu adres alanına atlamasına ve buradan servis programının icrasına başlamasına neden olur. Örneğin harici INT0 interrupt' ı 0003H bölümüne ayrılmıştır. Eğer harici INT0 kullanıma girerse, program servis rutini 0003H bölümüne atlayarak interrupt' a cevap

6 vermeye çalışır. Eğer harici INT0 kullanımda değilse servis rutini genel Program Bellek' i okumaya ve icra etmeye devam eder. İnterrupt servis bölümleri 8 Byte' lık aralarla yerleştirilmişlerdir. Örneğin; Interrupt-0 : Timer -0: Interrupt-1: Timer-1: RI+TI: Vektör Adres 0003H 000BH 0013H 001BH 0023H 'dir. Program Bellek'in (ROM), harici ROM veya dahili ROM' dan hangisinin seçileceği chip üzerindeki EA (External Access) bacağının durumuna bağlıdır. Eğer EA bacağı +5V potansiyeline çekilirse program direk olarak dahili ROM'un 0000H ile 0FFFH adreslerinden çağrılır. Eğer program 1000H ile FFFFH adreslerinden çağırılıyorsa harici ROM kullanıldığı anlaşılır. EA bacağı toprak potansiyelinde ise tüm program harici ROM(EPROM) 'dan direk olarak çağrılır. ROM' suz versiyonlarda(8031-80c31) program' ın harici Program Bellek alanından çağrılması için EA bacağı toprak potansiyeline çekilmelidir Harici program icrası için donanım konfigürasyonu şekil-2-5' de gösterilmiştir. Şekil-2-5. CPU-EPROM ve Latch ile Harici Program Kodunun Okunması İçin Gerekli Donanım Burada P0 ve P2 (16-bit I/O hattı) external Program Bellek' ten programı getirmek için bum fonksiyonlarını yerine getirmek görevini üstlenmişlerdir. P0 (PORT-0) adres ve data hattının çoğullanmasından oluşmuştur. Böylece CPU' nun bacak sayısı azaltılabilmiştir. Bu çoğullama işleminden adres ve data hatlarını birbirinden ayırma işlemi CPU' dan çıkan ALE (ADDRESS LATCH ENABLE) bacağı sayesinde olmaktadır.

7 Dahili Data Bellek alanı 3 bellek bloğuna bölünmüştür ve bunlar 128 Byte' n altı,üstü ve SFR (Special Function Register) olarak bilinir. Dahili Data Bellek adresleri her zaman 1Byte'lıktır. Bu yüzden bu adres alanı yalnızca 256 Byte' ı ima eder. Kuramsal olarak Data Bellek alanı 384 Byte olarak farz edilir. Bu bellek'in 7FH'dan üstüne, direk adresleme ve indirek adresleme yöntemleri ile iki farklı bellek alanına erişilir. Kuramsal olarak kabul edilen bu bellek alanından fiziksel olarak 256 Byte' ından faydalanılır. 80H ile FFH adresleri arasındaki bellek alanı SFR, 00H ile 7FH adresleri arasındaki bellek alanı ise Dahili Kullanılabilir RAM olarak adlandırılır. Dahili RAM' n 128 Byte' lık alt kısmına direk ve indirek adresleme ile ulaşılabilir. Dahili RAM 4 Register Bankı (yığını) (Bank0'dan Bank3'e) ve bu bankların her biri 8 registerden oluşan kullanışlı bir bellek alanıdır. Bu bankların seçimi SFR içindeki PSW (Program Status Word)'deki RS0 vers1 (Register Selection bits) bitlerinin durumuna göre belirlenir. SFR kısmına ise sadece direk adresleme ile ulaşılabilir. Dahili RAM' ın 128 Byte' lık üst kısmında, komut takımı komutları ile, 128 Byte direk olarak adreslenebilir. SFR ; port adresleri, timer, status ve kontrol bitlerini, akümülatör, stack pointer vs gibi kaydedicileri (register) içerir. Buradaki register' lara yukarıda da değinildiği gibi yalnız direk adresleme ile erişilebilir. SFR' nin içindeki 60 adres alanı hem byte hem de bit bit adreslenebilir. Bitleri adreslenebilen SFR alanlarının adreslerinin sonu 0H ya da 8H değerindedir. Tüm bunların yanı sıra 8051 MCU' da; 2 adet 16 bitlik timer/event (zaman/olay) sayıcı Full dublex seri giriş/çıkış ara yüzü Boolean işlemler yapabilme Entegre üzerinde dahili osilatör İki öncelikli bölüm ile 5 interrupt kaynağı yapısı Çarpma,bölme,çıkarma ve karşılaştırma emirleri 3.5MHz-15MHz arası saat frekansı 128 Byte stack genişliği özellikleri de vardır. 8051 CPU' nun bacak bağlantı yapısı şekil-2-6' da verilmiştir. Burada bulunan 4 port' un da ortak özellikleri çıkışlarının latch' lanmış, iki yönlü dahili pull-up' lıdır. Yani bir sonraki bilgi gelene kadar önceki bilgiyi portta tutar.

8 Şekil- 2-6 8051 Mikrokontrolör Bacak Bağlantıları RST bacağı yüksekte iken ve osilatör çalışıyorken iki makine periyodu için CPU resetlenir. Sistem çalışıyorken RST pini 0V potansiyelinde ve reset anında +5V potansiyelinde olması gerekmektedir. Eğer sürekli olarak +5V seviyesinde ise CPU sürekli resetleniyor ve herhangi bir program icra edemiyor demektir. RxD ve TxD pinleri seri iletişim için data alma ve data gönderme işlevini yerine getirir. Şekil 2.6. 8051 Bacak Yapısı INT0 veint1 pinleri harici interrupt giriş uçlarıdır. T0 ve T1 pinleri zamanlayıcı harici giriş uçlarıdır.

9 Şekil-2-7 Portların Giriş/Çıkış Durum Özellikleri Şekil-2-8 İki yönlü Çıkış Yapısı

10 Şekil-2-9 Open-Drain Çıkış Yapısı Şekil-2-10. Push-Pull Çıkış Yapısı XTALL1 vextall2 pinleri ise CPU' nun dahili osilatörüne bağlı bacaklardır. Hem harici uygun frekanslı kristal bağlayarak hem de harici osilatör kullanarak CPU çalıştırılabilir. Şekil-2-11 Saat İşaretinin Üretilmesi İçin Kristal veya Harici Saat Kullanımı

11 Sistemin resetlenmesini sağlamak için şekil-2-12'deki devre (Power-ON Reset) kullanılabilir. Devreye bağlanan R ve C'nin değeri değiştirilerek reset süresi değiştirilebilir. Kurduğum devrede R=8.2K ve C=10nF'dır. Şekil-2-12. Power-ON Reset Devresi 2.1. 8051 Komut Kümesi 8051 komut kümesi üçe ayrılır. Bunlar ; veri transfer komutları, veri işleme komutları ev program akışı kontrol komutlarıdır. Gösterim İşlem Adresleme modları Dir Ind Reg Imm MOV A,<src> A = <src> * * * * MOV <dest>, A <dest> =A * * * MOV <dest>,<src> <dest>=<src> * * * * MOV DPTR, #data16 DPTR =16-bit ivedi sabit * PUSH <src> INC SP : MOV @SP, <src> * POP <dest> MOV<dest>, @SP : DEC SP * XCH A, <byte> ACC <byte> * * * XCHD A,@Ri ACC @Ri (Düşük 4-bit) * Tablo-2-1 :Dahili Veri Hafıza Alanına Veri Transfer Komutları Adres genişliği Gösterim İşlem 8- bit MOVX A, @Ri Harici RAM @Ri yi oku 8- bit MOVX @Ri, A Harici RAM @Ri yi yaz 16- bit MOVX A, @DPTR Harici RAM @DPTR yi oku 16- bit MOVX @DPTR,A Harici RAM @DPTR a yaz Tablo-2-2 :Harici Veri Hafıza Alanına Erişen Veri Transfer Komutları

12 Gösterim MOVC A, @A+DPTR MOVC A, @A+ PC İşlem Prog. Hafıza @(A+DPTR)Hücresini Oku Prog. Hafıza @ (A+PC ) Hücresini Oku Tablo-2-3 : Tablo Okuma Komutları Gösterim İşlem Adresleme modları Dir Ind Reg Imm ADD A, <byte> A =A +<byte> * * * * ADDC A,<byte> A =A +<byte> +C * * * * SUBB A,<byte> A =A -<byte>- C * * * * INC A A =A +1 Sak. Özel (sadece ACC) INC <byte> <byte> =<byte>+1 * * * INC DPTR DPTR =DPTR +1 Sak. Özel (sadece DPTR) DEC A A=A-1 Sak. Özel (sadece ACC) DEC <byte>=<byte> -1 * * * MUL AB B:A =BxA Sak. Özel (sadece ACC ve B) DIV AB A =Int (A/B) Sak. Özel (sadece ACC ve B) B= Mod (A/B) Sak. Özel (sadece ACC) DIV A Ondalık Ayar Tablo-2-4: Aritmetik Komutlar Gösterim İşlem Adresleme modları Dir Ind Reg Imm ANL A,<byte> A = A AND<byte> * * * * ANL <byte>,a <byte> = <byte> AND A * ANL <byte>, #data <byte> = <byte> AND #data * ORL A, <byte> A=A OR <byte> * * * * ORL <byte>, A <byte> = <byte> OR A * ORL <byte>, #data <byte> = <byte> OR #data * XRL A, <byte> A= A XOR <byte> * * * * XRL <byte>, A <byte> = <byte> XOR A * XRL <byte>, #data <byte> = <byte> XOR #data * CLR A A =00H Sak. Özel (ACC) CPL A A=NOT A Sak. Özel (ACC) RL A ACC yi bir bit sola döndür. Sak. Özel (ACC) RLC A Sola CY üzerinden. Sak. Özel (ACC) RR A ACC yi bir-bit sağa döndür: Sak. Özel (ACC) RRC A Sağa CY üzerinden döndür. Sak. Özel (ACC) SWAP A ACC deki iki 4 bit i değiştir. Sak. Özel (ACC) Tablo-2-5 :Byte Tabanlı Lojik Komutlar

13 ANL C, bit ANL C, /bit ORL C, bit ORL C, /bit CLR C CLR bit CPL bit SETB C SETB bit Gösterim İşlem C bayrağını adreslenen bit ile AND le C bayrağını adreslenen bit in tersi ile AND le C bayrağını adreslenen bir ile OR la C bayrağını temizle Adreslenen bit i temizle C bayrağını tersle Adreslenen bit i tersle C bayrağını 1 le Adreslenen bit i 1 le Tablo-2-6 : Bit Tabanlı Lojik Komutlar Gösterim SJMP <rel data> Açıklama (Short Jump Kısa dallanma )operand 2-nin tümleyeni tek bir byte olup değeri PC ye eklenir. Bir sonraki komut, 127 byte ileri veya 128 byte gerideki bir komut olacaktır. AJMP <Address 11> (Absolute Jump- Mutlak Dallanma) Operand 11- bit bir adres olup Program Hafızanın o anki 2 Kbyte lık alanı içine karşı gelir. LJMP<Address 16> LJMP @ A + DPTR (Long Jump Uzun Dallanma) Operand 16- bit bir adres olup Program Hafızanın 64 Kbyte lik alanı içinde bir yere karşı gelir. (Long Jump Uzun Dallanma) Yürütülecek bir sonraki komutun adresi,acc ile DPTR ın toplamıdır. Tablo-2-7 : Durumdan Bağımsız Dallanma Komutları Gösterim ACALL<address 11> (Absolute Call) LCALL<address 16> (Long Call) RET (Return) RETI (Return from Interrupt) Açıklama PC yığın hafızaya atılır,11-bit adres PC ye yerleştirilir.11-bit adres ile,program Hafızada 2K byte lık bir alan içinde dallanma gerçekleşir. PC yığın hafızaya atılır,16-bit adres PC ye yerleştirilir.16-bit adres ile,program Hafızada 64K byte lık bir alan içinde dallanma gerçekleşir. Yığından,PC olarak alınacak değer okunur. Yığından PC olarak alınacak değer okunur ve kesme donanımı sıfırlanır. Tablo-2-8 : CALL ev RET komutları

14 Gösterim JZ<rel add> (jump if ACC zero) JNZ<rel add> (jump if ACC Notzero) JC<rel add> (jump if carry is set) JNC<rel add> (Jump if Carry not set) JB<bit>, < rel add> (jump if Bit set) JNB <bit>, < rel add> (jump if Bit not set) JBC <bit>, < rel add> (jump if Bit set and Clear bit) CJNE A, direct, <rel add> (Compare and Jump if not equal) CJNE A, # data, <rel add> (Compare and Jump if not equal) CJNE Rn, # data,< rel data> (Compare and Jump if not equal) CJNE @Ri,# data, < rel add > (Compare and Jump if not equal) DJNZ Rn, <rel add> (Decrement and Jump if not Zero) DJNZ direct,< rel add> (Decrement and Jump if not Zero) Açıklama Eğer ACC sıfır ise, 2 nin tümleyeni olan byte operand PC ye eklenir. Eğer ACC sıfır değil ise, 2 nin tümleyeni olan byte operand PC ye eklenir. Eğer elde bayrağı 1 ise, 2 nin tümleyeni olan byte operand PC ye eklenir. Eğer elde bayrağı 1değil ise, 2 nin tümleyeni olan byte operand PC ye eklenir. Eğer ilk operand (adreslenen bit) 1 ise, 2 nin tümleyeni olan ikinci byte operand PC ye eklenir. Eğer ilk operand (adreslenen bit) 1 değil ise, 2 nin tümleyeni olan ikinci byte operand PC ye eklenir. Eğer ilk operand (adreslenen bit) 1 ise, 2 nin tümleyeni olan ikinci byte operand PC ye eklenir. Komuttan sonra bit temizlenir. Birinci operand ACC ; ikinci bir dahili saklayıcı ; ve üçüncü, göreceli adres. Eğer ACC nin içeriği saklayıcıdan farklı ise, 2 nin tümleyeni olan üçüncü byte operand PC ye eklenir. Birinci operand ACC ; ikinci, bir sabit ; ve üçüncü, göreceli adres. Eğer ACC nin içeriği sabitden farklı ise, 2 nin tümleyeni olan üçüncü byte operand PC ye eklenir. Birinci operand Rn ;ikinci operand,bir sabit; ve üçüncü göreceli adres. Eğer Rn nin içeriği sabitten farklı ise 2 nin tümleyeni olan üçüncü byte operand PC ye eklenir. Birinci operand Ri ile işaretli byte; ikinci,bir sabit ; ve üçüncü göreceli adres. Eğer @Ri nin içeriği sabitten farklı ise 2 nin tümleyeni olan üçüncü byte operand PC ye eklenir. Birinci operand Rn ;ikinic,göreceli adres. Eğer azaltılan Rn içeriği sıfırdan farklı ise, 2 nin tümleyeni olan üçüncü byte operand PC ye eklenir. Birinci operand bir dahili saklayıcı; ikinci göreceli adres. Eğer azaltılan saklayıcının içeriği sıfırdan farklı ise, 2 nin tümleyeni olan üçüncü byte operand PC ye eklenir. Tablo2-9 : Duruma Bağımlı Dallanma Komutları

15 Gösterim ACALL<address 11> (Absolute Call) LCALL<address 16> (Long Call) RET (Return) RETI (Return from Interrupt) Açıklama PC yığın hafızaya atılır,11-bit adres PC ye yerleştirilir.11-bit adres ile,program Hafızada 2K byte lık bir alan içinde dallanma gerçekleşir. PC yığın hafızaya atılır,16-bit adres PC ye yerleştirilir.16-bit adres ile,program Hafızada 64K byte lık bir alan içinde dallanma gerçekleşir. Yığından,PC olarak alınacak değer okunur. Yığından PC olarak alınacak değer okunur ve kesme donanımı sıfırlanır. Tablo2-10 : CALL ve RET komutları 2.1.1. Adresleme Modlarındaki Gösterim : Adresleme modlarında kullanılan gösterim aşağıda verilmektedir : Rn ACC PC : Aktif saklayıcı kümesindeki 8 saklayıcıdan biri. : Akümülatör : Program Counter direct : Dahili RAM bölgesinden, bit-adreslenebilir hafıza ve SFR lar dahil alana erişen 8- bit adres. @Ri : Saklayıcı-dolaylı adresleme modunu gösterir. Aktif saklayıcı kümesinden sadece R0 ve R1 bu modda kullanılabilir. Ri dahili RAM bölgesinden, bit-adreslenebilir hafıza ve SFR lar dahil, 8-bit bir adres içerir. # data : İvedi adreslemede kullanılan 8-bit bir sabit,yani komutun içindeki veri. addr16 : 64 K program Hafıza içinde herhangi bir yere işaret eden iki byte adres. addr11 : Program Hafızada 2K lık blok içinde, herhangi bir yere işaret eden 11-bit adres. rel bit reg dir ind imm :Göreceli dallanmada kullanılan,ikinin tümleyeni ofset adres. Bu adres ile program akışı, PC yi takip eden öndeki 128 byte ve sonraki 127 byte lık bir alan içinde, dallanabilir. : Bit adreslenebilir RAM veya SFR ın 8-bit adresi. : Saklayıcı adresleme modu. : Doğrudan (direct ) adresleme. : Saklayıcı-dolaylı( register-indirect) adresleme modu. : İvedi (immediate) adresleme modu.

16 2.2.1. 8051 Interrupt Yapısı ROM' suz ve EPROM' lu versiyonlarda CPU' lar 5 interrupt kaynağına sahiptir. Bunlar; 2 harici interrupt, 2 timer interrupt ve seri port interrupt' ıdır. İnterrupt yetkileri: Interrupt kaynakları SFR içindeki IE registerinin bitleri set/reset (1/0) yapılarak yetkili veya yetkisiz kılınabilir. msb EA - - ES ET1 EX1 ET0 EX0 lsb INTERRUPT ENABLE (IE) REGISTER EA : Tüm interrupt' ları yetkisizleştirebilir. Eğer EA=0 ise interrupt' lar yetkisizdir ve EA=1 ise diğer interrupt bitleri set/reset' lenerek interrupt' lar yetkili/yetkisiz yapılabilir. ES : Seri port interrupt yetki biti ET1 : Timer1 taşma interrupt yetki biti EX1 : INT1 bacağından gelen interrupt yetki biti ET0 : Timer0 taşma interrupt yetki biti EX0 : INT0 bacağından gelen interrupt yetki biti Interrupt Öncelikleri: Interrupt öncelikleri SFR içindeki IP registerinin programlanması ile belirlenebilir. msb - - - PS PT1 PX1 PT0 PX0 lsb INTERRUPT PRIORITY (IP) REGISTER PS : Seri port interrupt' ı öncelik kontrol biti. 0 ise düşük,1 ise yüksek öncelikli. PT1 : Timer1 Int. öncelik kontrol biti PX1 : INT1 bacağı Int. öncelik kontrol biti PT0 : Timer0 Int. öncelik kontrol biti PX0 : INT0 bacağı Int. öncelik kontrol biti Eğer farklı önceliklere sahip iki interrupt isteği eşzamanlı alındığında istek yüksek öncelikliye servis verilecektir. Eğer öncelikleri yazılımla tanımamışsak CPU kendi belirlediği interrupt öncelik sırasına göre hizmet verir. Buna göre en yüksek öncelikliden en düşük öncelikliye göre sıralanmış interrupt kaynakları şöyledir; IE0 TF0 IE1 TF1 RI ya da TI. İnterrupt yetki bayrakları setlenmiş interrupt alındığında LCALL emiri ile belirtilen adrese atlanılır ve gerekli servis programı çalıştırılır. LCALL emirinden önce programın

17 kesildiği yeri belirten PC (Program Counter)'nin içeriği otomatik olarak stack' e itilir ve işlem bitirildikten sonra tekrar otomatik olarak yüklenir. Eğer istenilen register' ların stack bellek' e itilmesi isteniyorsa bu işlem programcı tarafından yapılmalıdır. Örneğin ; PUSH IE MOV IE,#MASK CALL LABEL ------------------------- POP IE RET LABEL: RETI gibi... 2.2.2. Zamanlayıcı ve Sayıcı Yapısı (Timer / Counters) 8051 iki 16 bitlik Timers/Counters registeri içerir. Bunlar Timer0 ve Timer1'dir.Her ikisi de zamanlayıcı ya da olay sayıcı olarak konfigüre edilebilir. Timer (Zamanlayıcı) işlevinde, register her makine saykılın da bir arttırılır. Bir makine saykılı ise 12 osilatör periyoduna eşittir. Böylece sayma hızı (count rate) 1/12 osilatör frekansına eşitlenir. Counter (Olay sayıcı) işlevinde ise register harici giriş bacağı yerini tutan T0 vet1'deki her 1'den 0'a geçişte bir arttırılır. Timer0 ve Timer1 dört işlem moduna sahiptir. Zamanlayıcı ya da 'Olay sayıcı' işlevlerinin seçimi SFR' deki TMOD register' inin içindeki C/T kontrol biti ile sağlanır. Her iki zamanlayıcı TMOD içindeki M1-M0 bit çiftlerinin sayesinde dört işlem moduna sahip olur GATE C/T M1 M0 GATE C/T M1 M0 msb lsb TIMER-1 TIMER-0 TIMER/COUNTER MODE CONTROL (TMOD) REGISTER GATE: Kapı Kontrol Setlendiği zaman sadece INTX bacağı yüksek ve TRX kontrol biti 1 ise yetkili olur. Sıfırlandığı zaman, TRX kontrol biti 1 olduğunda Timer/Counter yetkilidir. C/T: Zamanlayıcı veya Sayıcı seçici Zamanlama işlevinde resetlenir Sayma işlevinde setlenir.

18 M1 M0 İşlem Modu 0 0 (Mode 0) MCS-48 ile aynı zamanlayıcı özelliğinde TLX 5 bitlik ön ölçeklendirici gibi servis verir. 0 1 (Mode 1) 16 bit zamanlayıcı. TLX ve THX kaskat bağlıdır. Ön ölçeklendirici yoktur. 1 0 (Mode 2) 8 bitlik otomatik yeniden yüklemeli Timer/Counter. 1 1 (Mode 3) TL0, standart Timer0 kontrol bitlerinin kontrol ettiği bir Timer/ Counter. TH0, Timer1 kontrol bitlerinin kontrol ettiği 8 bitlik bir zamanlayıcıdır. 1 1 Timer1 Timer/Counter durdurulmuştur. Mode-0 : Mode 0 'da 8051 timer aynen 8048 Timer' ın yerine konulabilir yani aynı özellikler gösterir. 8 bitlik sayıcı ve 5 bitlik ön ölçeklendirici. Bu modda zamanlama registeri 13 bit'e ayarlanabilir. 1'den 0'a geçişler sayılır ve Timer interrupt bayrağı olan TF1 setlenir. TR1=1 ve GATE=0 ya da INT1=1 gerçeklenirse sayılmış giriş yetkilidir. TR1 kontrol biti SFR' deki TCON 'da bulunur. GATE ise TMOD 'da bulunur. Mode-1: Mode 0 ile aynıdır,tek farkı Timer registerinin 16 bit olmasıdır. Mode-2: Timer register 8 bitlik Counter (TL1) ile otomatik yeniden yüklemeli olarak konfigüre edilebilir. TL1 'in yeniden yükleme değeri TH1'de saklanır. Yazılım ile presetlenebilir. TH1'in yeniden yükleme değeri değiştirilemez. Mode-3: Timer1 sayılacak değeri tutar. Etkin olabilmesi için TR1=0 'a setlenmelidir. Mode 3'de Timer0'ın TL0 ve TH0 iki ayrı sayıcı olarak atanır. Mode 3 bazı uygulamalar için gereken ekstra 8 bitlik Counter üzerindeki zamanlayıcı sağlar. Mode 3'de Timer 0 ile 8051 üç adet Timers/Counters' a sahip gibi görünür. Mode 3'de Timer/Counter, Seri port için Baud Rate üreteci gibi kullanılabilir ve interrupt istekleri oluşturmakta faydalana bilinir. TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 msb lsb TIMER/COUNTER CONTROL (TCON) REGISTER TF1/TF0: Timer 1/0 taşma bayrağı. Timer/Counter' da taşma olduğunda donanımla setlenir ve interrupt işlendiğinde resetlenir. TR1/TR0: Timer 1/0 koşma kontrol biti. Yazılım ile set/reset'lenir. IE1/IE0: Interrupt 1/0 üstünlük bayrağı. Harici interrupt üstünlüğü belirtildiğinde setlenir ve interrupt işleminde resetlenir. IT1/IT0: Interrupt 1/0 tipi kontrol biti. Yazılım ile set/reset'lenir.

19 2.2.3. Güç Kontrolu (Power Control) 8051'de güç harcamasını minimuma indirebilmek için iki yazılım seçim modu vardır. Bunlar; Idle ve Power Down Modlarıdır. CPU Idle modda iken dahili RAM, zamanlayıcı, seri port ve interrupt sistem fonsiyonlarının işlemesine izin verir. Power Down modunda iken sadece dahili RAM değerleri korunur ve diğer bütün fonksiyonlar işlevsizdir. Bu özel modlar yazılım yolu ile aktif hale geçerler. Aktif hale geçirmek için gerekli register SFR' deki PCON registeridir SMOD - - - GF1 GF0 PD IDL msb lsb PCON(POWER CONTROL REGİSTER) SMOD : Çift veri iletim hızı (baud) oranı biti. Eğer setlenirse veri iletim hızı iki katına çıkar. Bu halde iken seri port varolan diğer modları kullanır. GF1 : Genel amaçlı bayrak biti. GF0 : Genel amaçlı bayrak biti. PD : Power Down biti. Bu bit setlenirse Power Down moduna girilir. IDL : Idle mode biti. Setlenirse Idle moduna girilir. Bazen aynı anda hem PD hem de IDL bitleri setlenmeye çalışılabilir. Bu durumda üstünlük PD' ye verilmiş olduğundan Power Down moduna girilir. PCON Registerinin reset değeri (0***0000)'dır. 2.2.3.1. IDLE Modu CPU, Idle modunda iken, Stack Pointer(SP), Program Counter (PC), Program Status Word(PSW), Akümülatör, Dahili RAM ve bütün diğer registerlerin değerleri korunur. Idle modu, donanım ile geçerli bazı interruptlar sayesinde PCON.0'ın resetlenmesi ile sona erdirilebilir. Bu modu sona erdirmenin diğer bir yolu ise donanım reseti vermektir. Önce osilatör koşturulur ve donanım resetinin aktif olabilmesi için yalnızca 2 makine saykılı (24 Osc. Periyodu) ile karşılaşılınca reset işlemi tamamlanacaktır. 2.2.3.2. POWER DOWN Modu PCON.1 bitinin setlenmesi ile aktif olur. Power Down' da osilatör durdurulur. Çipin üzerindeki RAM' ın ve SFR' nin içeriği bu modda korunur. Bu moddan çıkmanın tek yolu donanım reseti vermektir ama donanım reseti vermek SFR yeniden tanımlanmasına rağmen dahili RAM' ın içeriği değiştirilemez. Power Down modu ile devrede en küçük güç harcaması gerçekleşir ve Vcc gerilimi yaklaşık 2V seviyesini kadar indirilebilir. Ama Power Down moduna girilene kadar Vcc geriliminin

20 düşürülmemesi gerekir. Power Down moduna girildikten en az 10msn sonra Vcc erilimi 2V'a çekilebilir. 2.2.4. 8051 Mikrokontrolörlerde İletişim Data bir noktadan diğer bir noktaya iletilirken ya seri ya da paralel formatta düzenlenir. Her ikisinin de birbirine göre avantaj ve dezavantajlı olduğu yönler bulunmaktadır. Paralel data transferi genelde belirli sürede çok miktarda data transferinin gerektiği yerlerde kullanılır.(pc ile Printer arasındaki gibi). Seri data iletim metotlarında yüksek data transfer hızlarına erişilebilir fakat paralel data transferine göre en önemli üstünlüğü datanın iletilebilmesi için gerekli iletken sayısının paralele göre daha az olmasıdır. 2.2.4.1. Paralel Haberleşme Paralel data transferinde,bir bilgisayarın mikroişlemcisi ile çevre birimler arasındaki data bus üzerindeki bilgilerin iletimi gibi datalar bu metodda paralel olarak iletilir. Paralel ve seri data transferinde bir karakterin iletimi 8 bit ile yapılıyorsa, paralel data iletimi seri iletime göre daha hızlı olacağı hiç şüphesizdir. Çünkü seri data iletiminde bir karakter iletmek için 8t süre harcanıyorsa (start,stop ve parity bitleri hariç) paralel data iletiminde t kadar bir sürede işlem gerçeklenmiş olacaktır(buna diğer üç bitin eklenmediğine dikkat!). Paralel data iletiminde polling ve handshaking gibi kontrol işlemleri için de ayrı kabloların kullanılması maliyeti iyiden iyiye arttırmaktadır. Ayrıca uzak mesafelere iletimde sinyal zayıflamasını kompanze etmek için Repeater cihazının kullanılması ekonomikliği ortadan kaldırmaktadır. Böylece paralel data iletimi, bilgisayar sistemlerinin çevre birimlerle haberleşmesinde ve mesafenin kısa olması durumunda tercih edilebilir. 2.2.4.2. Seri Haberleşme Uzak mesafelere dataların paralel iletimi için kablo ve diğer masrafların çok olmasından dolayı bu durumda daha çok seri data iletimi tercih edilir. Tek bir iletim kanalı üzerinden belirli bir zamanda bir bit iletilmesi seri data transferi olarak adlandırılabilir. Seri iletişim kendi arasında ikiye ayrılır. Şimdi de bunlar hakkında kısa ve öz bilgiler verelim; 2.1.4.2.1. Seri-Senkron Haberleşme Senkron seri data iletiminde önemli bir konu iletim kanalının iki ucundaki alıcı ve verici düzeneklerin birbiriyle her zaman senkronize çalışması gerekmesidir. Senkronizasyon işlemi ikinci bir iletim hattı üzerinden ortak bir clock (saat) sinyalinin hem alıcıya hem de vericiye gönderilmesi ile elde edilebilir. İletim kanalının her iki ucunda zamanlamayı sağlamak, senkronizasyonu elde etmek için her zaman bir ana saat sinyali kullanılır. Senkron seri data iletimi veri bloklarının hazır olduğu durumlarda

21 kullanılır. Örneğin ; Harddisk' teki bilgilerin karşı tarafa gönderilmesinde. Senkron iletişim asenkron iletişime göre daha karmaşıktır. Bunun ana nedeni alıcı ünitede Byte Eşzamanlısının yapılmasının gerekmesindendir. 2.2.4.2.2. Seri Asenkron Haberleşme Asenkron seri data iletimi, veri iletişiminde kullanılan en basit ve en kolay yöntemdir. Verimliliği düşük olduğu için düşük hızlardaki veri iletiminde daha çok kullanılır. Transmitter' den gönderilen her bir karakter 8 bit ile temsil edilir ve iletim sırasında veri karakterlerinin başına start biti (lojik - 0) ve sonuna parity (hata denetimi amacıyla) ile stop bitleri eklenir. Her bir data dizisinin ilk biti start bitidir, lojik-1'den lojik-0'a geçişle belirtilir ve bu start biti bir bit süresince lojik-0'da kalır. Ardından data bitleri gelir ve data biti sayısı 5..8 bit arası seçilebilir. Hemen ardından hata denetimi biti ve stop biti gelir. Stop biti 1,1.5 ve 2 bit sürelerinde seçilir ve bu süre boyunca lojik-1'de kalır. Hat boş iken aradaki hat sürekli lojik-1 seviyesinde tutulur. Bunun nedeni tabi ki hattaki gürültülerden etkilenmemek içindir. PC kullanıcıları data iletimi yapmak için bir RS-232 seri port' a ihtiyaç duyarlar. Bu konnektör için bacak numaraları ve sinyal adları aşağıdaki tabloda verilmiştir.

22 BACAK NO ORTAK İSİM RS232C İSMİ TANIM 1 AA Koruma toprağı 2 TxD BA Gönderilen data 3 RxD BB Alınan data 4 RTS CA Gönderme için istek 5 CTS CB Gönderme için serbest 6 DSR CC Veri kümesi hazır 7 GND AB Sinyal toprağı 8 CD CF Alınan hat sinyal algılayıcı 9 10 Veri kümesi testi için ayrılmış 11 Tanımlanmamış 12 SCF İkincil alınan hat sinyali algılayıcı 13 SCB İkincil gönderme serbest 14 SBA İkincil gönderme veri 15 DB İletim sinyal elemanı zayıflaması (DCE) 16 SBB İkincil alınan veri 17 DD Alıcı sinyal elemanı zayıflaması (DC) 18 Tanımlanmamış 19 SCA İkincil gönd.içn istek 20 DTR CD Veri terminali hazır 21 CG Sinyal kalitesi algılayıcı 22 CE Halka gösterge 23 CH/CI Veri sinyali hızı seçici(dte/ DCE) 24 DA İletken sinyal elemanı zayıflaması 25 Tanımlanmamış Tablo-2-11- RS-232 Bacak Bağlantıları Tablosu

23 2.2.4.3. Standart Seri Arabirim 8051'deki seri portumuz Full -Dublex' tir. Yani hem alıcı hem de verici eşzamanlı olarak gerçeklenebilir. Seri portun alıcı ve verici (receiver - transmitter ) registerlerı SFR 'de SBUF adı ile bulunmaktadır. Gönderilecek bilgiler SBUF' a yazılır, alınacak bilgiler ise SBUF' dan okunur. Seri portun dört işlem modu vardır; Mode-0 : Seri data giriş ve çıkışı RxD üzerindendir. TxD çıkışı saat için kullanılır. Bu uç kaydırmalı-kaydedicileri (Shift -Register) uyarmak için kullanılabilir. 8 bit alınır/gönderilir. Mutlaka TTL veya CMOS kaydırmalı-kaydedicilerle senkronize I/O biçiminde kullanılmalıdır. Bu modun Baud Rate değeri 1/12 osilatör frekansına eşittir. Sistem seri ise bu modda hız, eğer osilatör 12MHz ise baud rate 1Mbit/sn gibi UART'nin çok üstünde bir değer olabilmektedir. Ayrıca paralel sistemlerde Shift - Register' den önce sadece iki hatta (RxD ve TxD) ihtiyaç duyması avantajdır. Mode-1 : 10 bit RxD ucundan ya da 10 bit TxD ucundan alınır/gönderilir. Bir adet başlama (start) biti,8 data biti ve birde durdurma (stop) biti bulunur. Alıcı durumda, durdurma biti SCON' daki RB8 bitinin içeriğine gider. Baud Rate değeri değişkendir. Mode-2 : 11 bit RxD ucundan ya da 11 bit TxD ucundan alınır/gönderilir. Bir start biti, 8 data biti, bir adet programlanabilir 9. data biti ve bir stop biti bu modda bulunur. Gönderici durumda 9. data biti SCON registerindeki TB8 bitinin içeriğine gider. Ya da örneğin, PSW 'nin içindeki P (parity bit),tb8 'in üzerine taşınabilir. Alıcı durumda 9.data biti SCON üzerindeki RB8 değerine gider (eğer stop bitine önem verilmezse).baud Rate değeri osilatör frekansının 1/32 veya 1/64 'ü olarak programlanabilir. Mode-3 : 11 bit RxD üzerinden veya 11 bit TxD üzerinden alınır/gönderilir. Bir start biti, 8 data biti, bir programlanabilir 9. data biti ve bir adet stop biti bulunur. Gerçekte Mode-3 ile Mode-2 arasındaki fark, Mode-3'ün istisnai Baud Rate değerlerine ayarlanabilmesidir. Yani Baud Rate değeri değişkendir. Tüm bu dört modda iletişim bazı komutların SBUF gibi tanımlama registerlerini kullanması ile sağlanır. SCON registerinin içeriği yalnız mod seçmek için gerekli bitleri içermeyip,alıcı ve verici için 9.biti (TB8 ve RB8) ve seri port interrupt bitleri olan RI ve TI 'yı da içerir. SM0 SM1 SM2 REN TB8 RB8 TI RI msb lsb SERİ PORT KONTROL (SCON) REGİSTER

24 SM0 SM1 mode Baud Rate 0 0 0 Fosc/12 0 1 1 Değişken 1 0 2 Fosc/32 yada Fosc/64 1 1 3 Değişken SM0, SM1, SM2 : Seri port modu kontrol biti. Yazılımla set / resetlenir. REN : Alma yetkili kontrol biti. Seri data alma yetkili/yetkisiz yapmak için yazılımla set / resetlenir. TB8 : 9. data bitinin (mode-2 ve 3'e göre) gönderilip gönderilmeyeceğini belirlemek için kullanılan yazılım ile set/resetlenebilen bitdir. RB8 : 9. data bitinin alınıp alınmayacağını belirlemek için kullanılan yazılım ile set/resetlenebilen bitdir. TI : Gönderme interrupt bayrağı. Byte gönderildiğinde donanım tarafından setlenir. İşlem tamamlandığında yazılım ile resetlenmelidir. RI : Alma interrupt bayrağı. Byte alındığında donanım tarafından setlenir. İşlem tamamlandıktan sonra yazılım ile resetlenmelidir. 2.2.4.4. Çokişlemcili Haberleşme (Multiprocessor Communications) Çokişlemcili Haberleşmede Mode-2 ve Mode-3 çok özel durumlara sahiptir. Bu modlarda 9.data biti kullanılabilir. Data alınırken 9.bit RB8'e yazılır ve arkasından stop biti gelir. Stop biti alındığında port programlanabilir böylece seri port interrupt' ı yalnız RB8=1 iken aktif olur. Bu özellik SCON üzerindeki SM2 bitinin setlenmesi ile geçerlidir. Bu özelliğin Çokişlemcili Haberleşme sistemlerinde kullanımı şu şekilde olabilir; Birincil(Master) işlemci bir ya da birkaç İkincil(Slave) işlemciye data bloklarını göndermek isterken,ilk olarak hedef slave işlemciyi tanımlayan adres byte' larını yollar. Burada adres byte' ı ile data byte' larının farkını 9.bit belirler. 9.bit 1 ise adres byte' ı, 0 ise data byte' ıdır. SM2=1 yapmak ile, data byte' ı ile slave işlemci interruptlanmayacaktır. Adres byte' ında tüm slave işlemciler interruptlanacaktır. Bu yüzden slave işlemciler eğer belirtilen adresin kendi başlangıç adresleri (kendilerine ayrılan adres ise) olup olmadığını aldıkları adres byte' ını inceleyerek anlayabilirler. Adreslenmiş olan slave işlemci kendi SM2 bitini temizleyecek ve gelecek olan data byte' larını almak için kendilerini hazırlayacaklardır. Yani slave işlemciler başlama adresi verildikten sonra bunun kendi adresleri olup olmadığını test edeceklerdir ve daha sonra gelecek dataları alarak işleyeceklerdir. SM2 (SCON.5) biti Mode-0 'da kullanım dışıdır ve Mode-1 'de stop bitinin sağlamlığını(doğruluğunu) test etmek için kullanılır. Mode-1 'de SM2=1 ise alınan interruptlar stop biti alınıncaya kadar aktif olmayacaktır.

25 2.2.4.4.1. BAUD RATE Değerleri Mode-0 'da baud rate değeri (osilatör frekansı/12) 'dir. Mode-2 'de PCON registerindeki SMOD biti 1 ise baud rate 1/32 ve SMOD 0 ise 1/64 osilatör frekansına eşittir. Mode-1 ve Mode-3 'de baud rate timer-1'in taşma zamanı (overflow rate) ile karakterize edilebilir. Timer-1 'in Baud Rate Generatörü Olarak Kullanılması: Timer-1 'in baud rate generatörü olarak kullanılırken, baud rate değeri SMOD bitinin ve Timer-1 taşma değerine göre karakterize edilmiştir. Bu uygulamada Timer-1 interrupt' ı geçersiz kılınacaktır. Mode-1,3 BR= (2 (SMOD) /32)*(Timer-1 taşma zamanı) BR : Baud Rate Timer-1 bazı durumlarda otomatik yeniden yüklemeli (Auto Reload Mode) modda konfigüre edilebilir. Bu durumda baud rate değeri ise; Mode-1,3 BR=(2* (SMOD) /32)*(O_Freq /(12*[256-(TH1)])) ile verilebilir.aşağıdaki tabloda Timer-1 ile çok kullanılan bazı baud rate değerlerinin elde edilmesi için gereken değerler verilmiştir. Baud Rate Mode-0 Max :1.67MHz Mode-2 Max : 625 khz Mode-1,3 Max : 104.2 khz OSC_freq SMOD C/T Mode Reload (MHz) c=1,t=0 value 20 X X X X 20.00 1 X X X 20.00 1 0 2 FFh 19.2k 11.059 1 0 2 FDh 9.6k 11.059 0 0 2 FDh 4.8k 11.059 0 0 2 FAh 2.4k 11.059 0 0 2 F4h 1.2k 11.059 0 0 2 E8h 137.5 11.986 0 0 2 1Dh 110 6.00 0 0 2 72h 110 12.00 0 0 1 FEEBh { Timer-1 için }

26 Özetlenecek olursa seri port timer-1'in taşması tarafından saatlenecektir. Timer-1'in girişinde osilatör frekansı 12'ye bölünür ya da harici saat uygulanır. Mode-0'da 12MHz'lik bir kristal ile 1Mbit/sn ve Mode-2'de ise gene 12Mhz'lik kristal ile 187.5kHz'lik baud rate değerlerine erişilebilir. Mode-1,3'de ise baud rate timer-1'e bağlıdır ve timer yeniden yükleme değeri ile istenen frekansa eşitlenebilir. Şimdi bu yeniden yükleme değerinin nasıl hesaplandığına dair bir örneğe bakalım. UART işlem hızının 300 bps ve osilatör frekansının 12Mhz olduğu durumdaki yeniden yükleme değerini hesaplayalım; (ARV:Auto Reload Value) ARV=(Clock rate)/(12*32*bit rate) ; 104.16 Eğer T1 üzerinden harici saat kullanılıyorsa; ARV=(Clock rate)/(32*bit rate) ; olur. Yaklaşık tamsayı olarak 104 kabul edilir ve Timer için aktüel değer 256-104=152=98h ' dir. Eğer TH1 98h değeri ile yüklenirse doğru hız olan 300 bps alınır. Buna göre bizim kullanacağımız sistemde 9600 bps için ve kristalinde 12MHZ olduğu kabulu ile hesap yapılacak olursa; ARV=12M/(12*32*9600)=3.25 olur. Yaklaşık olarak 3 kabul edilir ve 256-3=253d=0FCh bulunur. 2.2.5. PC Seri I/O Arayüz Cihazının Kontrolü ve Programlama Çalışmaları PC' lerde seri ara yüz I/O cihazı olarak 8250 entegresi kullanılmaktadır. PC' lerde genel olarak iki seri ve bir paralel portları vardır. Bu sayı genel kullanım için yeterlidir. Amaca göre istenildiğinde arttırılabilir. Sistemde bulunan seri port,taban vektör ve adresleri tabloda verilmiştir. COM1 00000:00400H 03F8H COM2 00000:00402H 02F8H COM3 00000:00404H 0378H COM4 00000:00406H 0278H Bu portların kullanımı için bazı registerlerin bulunması ve bunların gerekli değerlere setlenmeleri gereklidir. Bu registerler ;

27 1. Data Register 2. Interrupt Enable Register 3. Interrupt Identification Register 4. Data Format Register 5. Serial Control Register 6. Serial Status Register 7. Modem Status Register' dir. 1.Data Register: Data register göndermek ve almak için 1 byte tutar. İçindeki bitler alınacak veya gönderilecek bitleri tutar. Data Bit7 msb Data Bit6 Data Bit5 Data Bit4 Data Bit3 lsb Data Bit2 Data Bit1 Data Bit0 2.Interrupt Enable Register: Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Bit0:Veri geldiğinde interrupt üret. Bit1:Veri gönderme işlemi tamamlandığında interrupt üret. Bit2:Hat durum değişikliğinde interrupt üret. Bit3:Modem hattı değişikliğinde interrupt üret. Bit4-7:Kullanılmaz. 3.Interrupt Identification Register: Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Bit0:Interrupt bekliyor. Bit1-2: 00:Modem hattında değişiklik oldu. 01:Gönderme tamamlandı. 10:Veri geldi. 11:Hattın durumunda değişiklik oldu. Bit3-7:Kullanılmaz. 4.Data Format Register: Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

28 Bit0-1:Veri uzunluğu: 00 5bit 01 6bit 10 7bit 11 8bit Bit2:Durdurma biti sayısı: 0 1bit 1 2bit Bit3:Parity var/yok: 0 OFF 1 ON Bit4:Parity tek/çift: 0 Tek 1 Çift Bit5 : Stick parity Bit6 : Set Break Bit7 : Bölücüye erişim biti: 0 Diğer kütükler 1 Bölücü 5.Serial Control Register: Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Bit0: Terminal iletişime hazır. Bit1: Gönderme isteği. Bit2: Out1 Bit3: Out2 Bit4: Geri beslemeli teste geç. Bit5-7:Kullanılmaz. 6.Serial Status Register : Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Bit0: Veri hazır. Bit1: Veri ezilmesi var. Bit2: Parity biti hatası var. Bit3: Zamanlama hatası. Bit4: Alıcı işlemi yarıda kesti. Bit5: Gönderme tamamlandı. Bit6: Kaydırma tamamlandı. Bit7 : Kullanılmaz.

29 7.Modem Status Register: Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Bit0: CTS değişti. Bit1: DSR değişti Bit2: RI kesildi. Bit3: RLSD kesildi. Bit4: CTS' nine sıfıra tümleyeni. Bit5: DSR' nine sıfıra tümleyeni. Bit6: RI' nın sıfıra tümleyeni. Bit7: RLSD' nin sıfıra tümleyeni. 2.2.5.1. Program Communicatıons' un Açıklanması Procedure BaudRate Aktif: Data Format registerinin en anlamlı biti 1 yapılırsa, data register ile interrupt enable registeri baud rate değerinin belirlenmesinde kullanılabilir. Procedure' de data format registeri (2FB)' nin 8. Biti setlenmektedir. Procedure DataAktif : Data Format registerinin en anlamlı biti resetlenmektedir. Data ve Interrupt Enable registerleri asıl işlevlerinde kullanılmaya başlanır. Procedure DataHız Tanımı: BaudRate Aktif yapıldıktan sonra 2F8 ve 2F9 adreslerine verilen word baudrate değeri olarak yazılır. Procedure DataHız Tanımı: Baud rate değeri okunuyor. Procedure PortuSetle: Seçilen haberleşme portuna gerekli tanımlamalar yazıldı. Function InterruptDurumu: Interrupt ID registeri okunarak verinin geldiğini veya gönderildiğini belirler. Function PortuOku: Porttan gelen verinin okunmasını sağlar. Procedure PortaYaz : Porta bir byte' lık veriyi koyar. Gönderilecek karakter data registerine konulur. Function ByteToString: Byte olarak verilen veriyi string' e dönüştürür. Function StringToByte: String olarak verilen veriyi byte' a dönüştürür. Procedure SeriCom: PC' de 8051 işlemcisi için assembler program yazıp derlendikten sonra HEX uzantılı bir dosya oluşmaktadır. Bu HEX uzantılı dosya assembly emirlerin kodlarını ve adreslerini içermektedir. Dosyanın bir satırının formatı ;

30 dataların_uzunluğu+adres+kayıt_tipi+datalar+kontrol_byte'ı, şeklindedir. Bu procedure ile ismi verilen HEX uzantılı dosyadan okunmakta ve seri porttan gönderilmektedir. Program Communications; uses dos,crt; {*************************************************************} const {baud rate tanımlamaları} br_9600 =$000C; {parity biti tanımlamaları} pr_none =$00; pr_odd =$08; pr_even =$18; {data uzunluk tanımlamaları} dl_6 =$01; dl_7 =$02; dl_8 =$03; {stop biti tanımlamaları} sb_1 =$00; sb_2 =$04; {seri port tanımlamaları} com1 =0; com2 =1; {8250 entegresi içerisindeki register tanımlamaları} data =0; interrupt_enable =1; interrupt_identification =2; data_format =3; seri_control =4; seri_status =5; modem_status =6; yetkilendir =128; {register için port adresleri} regs:array[0..1,0..6] of word=(($3f8,$3f9,$3fa,$3fb,$3fc,$3fd,$3fe), ($2f8,$2f9,$2fa,$2fb,$2fc,$2fd,$2fe));

31 {interrupt_identification tanımlamaları} veri_geldi =4; veri_gonderme_tamamlandi =2; {Hexadecimal Rakamların Tanımlanması} Hexal:Array[1..16] of String[1]=('0','1','2','3','4','5','6','7', '8','9','A','B','C','D','E','F'); var sayih,sayil:byte; {ByteToString Function'u için} hsayih,hsayil:string[1]; {StringToByte Function'u için} ch:char; {*************************************************************} {data_format registerinin en anlamlı biti 1 yapılıyor} procedure BaudRateAktif(pn:byte); var temp:byte; begin temp:=port[regs[pn,data_format]] or yetkilendir; port[regs[pn,data_format]]:=temp; end; {*************************************************************} {data_format registerinin en anlamlı biti 0 yapılyor} procedure DataAktif(pn:byte); var temp:byte; begin temp:=port[regs[pn,data_format]] and (not yetkilendir); port[regs[pn,data_format]]:=temp; end; {*************************************************************} {baud_rate değeri ilgili registere yerleştiriliyor} procedure DataHizAyari(pn:byte;speed:word); begin baudrateaktif(pn); port[regs[pn,data]]:=lo(speed); port[regs[pn,data+1]]:=hi(speed); end; {*************************************************************} {byte tipinde olan register word olarak tanımlanıyor} function DataHiziTanimi(pn:byte):word; begin baudrateaktif(pn);

32 datahizitanimi:=portw[regs[pn,data]]; end; {*************************************************************} {seçilen haberleşme portunun tanımlaması yapılıyor} procedure PortuSetle(pn:byte;speed:word;parity,datalen,stopbits:byte); var kontrolreg:byte; begin datahizayari(pn,speed); kontrolreg:=parity or stopbits or datalen; port[regs[pn,data_format]]:=kontrolreg; end; {*************************************************************} {veri geldiğinde ilgili registeri setler} function InterruptDurumu(pn:byte):byte; var b:byte; begin b:=port[regs[pn,interrupt_identification]]; interruptdurumu:=b and (veri_gonderme_tamamlandi+veri_geldi); end; {*************************************************************} {port veri koruması için setleniyor veya okunuyor} function PortuOku(pn:byte):byte; begin dataaktif(pn); portuoku:=port[regs[pn,data]]; end; {*************************************************************} {data registerine bir byte yazar} procedure PortaYaz(pn:byte;ch:byte); begin dataaktif(pn); port[regs[pn,data]]:=ch; end; {*************************************************************} Function ByteToString(Sayi:Byte):String; Var HexSayi:String[2]; ie:byte; Begin SayiH:=Trunc(Sayi/16); SayiL:=Trunc(Sayi-SayiH*16); For ie:=0 to 15 do

33 if SayiH=ie then HexSayi:=Hexal[ie+1]; For ie:=0 to 15 do if SayiL=ie then HexSayi:=HexSayi+Hexal[ie+1]; ByteToString:=HexSayi; End; {*************************************************************} Function StringToByte(HexSayi1:String):Byte; Var Sayi1:Byte; ie:byte; Begin HSayiH:=(Copy(HexSayi1,1,1)); HSayiL:=(Copy(HexSayi1,2,1)); For ie:=0 to 15 do if HSayiH=Hexal[ie+1] then Sayi1:=ie*16; For ie:=0 to 15 do if HSayiL=Hexal[ie+1] then Sayi1:=Sayi1+ie; StringToByte:=Sayi1; End; {*************************************************************} Procedure SeriCom; Label Oku; Var DosyaAdi:String[50]; Run:String; Test:Boolean; PortOkunan:Byte; Dosya:Text; Uzunluk,KayitTipi,RamAdrH,RamAdrL,RamData:String[2]; UzunlukByte,RamAdrHByte,RamAdrLByte,RamDataByte:Byte; i,j:integer; Begin clrscr; TextBackGround(7);TextColor(0); GotoXY(18,12);Write('-'); for i:=19 to 66 do Begin GotoXY(i,12); Write('-'); End; GotoXY(67,12);Write('-'); GotoXY(18,20);Write('-'); for i:=19 to 66 do Begin GotoXY(i,20); Write('-'); End; GotoXY(67,20);Write('-');