Hazırlayan : Selim DİLMAÇ “8051 & ADuC8xx EĞİTİM NOTLARI” isimli bu çalışma, endüstri standardı 8051 ailesi mikrokontrolörler ve onların gelişmiş bir alt-grubu olan ADuC8xx MicroConverter lar için, adı üstünde bir eğitim notu olarak hazırlanmıştır. İki ana bölümden oluşan notların ilk kısmında endüstri standartı 8051 mikrokontrolör (MCU) ailesinin mimari özellikleri, entegre üzerinde yer alan kaynaklar (on-chip resources), komut seti ve yazılım geliştirme yöntemleri anlatılmaktadır.
İkinci bölümde ise bu aile ile mimari, dolayısıyla yazılım / komut seti uyumlu (code compatible) bir türev işlemci grubu olan ADuC8xx mikrokontrolör’lerin başlıca özellikleri sunulmuştur. Ayrıca esas hedef olan pratik uygulamalarda kullanılmak üzere, bu grubun temel özelliklere
sahip üyesi ADuC814 kullanılarak hazırlanmış Mini Kit’ler yardımıyla, nasıl bir donanım – yazılım geliştirme çalışması yapılabileceği örnekler üzerinde açıklanmıştır.
Eğitim Notlarının Kimler Yararlanabilir:
Üniversitelerin Elektrik-Elektronik veya Bilgisayar bölümlerinde “Mikroişlemciler” veya “Mikrokontrolör Uygulamaları” gibi adlar altında verilmekte olan derslere paralel olarak kullanılabilecek olan notlar; teknik lise ve meslek liselerinden gelen, Türkçe içerikli, pratik uygulama ağırlıklı teknik eğitim dokümanı ihtiyacına belli bir oranda katkıda bulunacaktır. Bunların dışında adı geçen mühendislik dalları öğrencilerinin yanı sıra, hangi alanda çalışıyor olursa olsun, konuya ilgi duyan, temel elektronik bilgilerine sahip olup mikrokontrolör devre tasarımı yapıp, donanım ve yazılım geliştirmek isteyen kişiler tarafından da yararlanılabilecek yapıda hazırlanmıştır.
Çeşitli elektronik malzemelerin çalışma prensiplerinin, sayı sistemlerinin (özellikle 2 ve 16 tabanında) bilindiği kabul edilmektedir. Lojik devre yapılarının bilinmesi ve bir miktar programlayıcılık deneyimine sahip olunması şüphesiz yararlı olacaktır.
Eğitim Notunun Hazırlanma Nedenleri:
Böyle bir kaynak dokümanı hayata geçirmeye yönelten iki ana neden mevcuttur. İlki, 1988’den bu yana çeşitli ortamlarda tasarım mühendisi, proje yöneticisi, arge müdürü vb. pozisyonlarda görev yaparken benimle birlikte çalışan çok sayıda genç meslektaşıma teorik ve pratik bilgi birikim ve deneyimlerimi aktardım, halen de aktarmaya devam ediyorum. Ancak, yüz yüze diyalog ve bizzat anında danışma imkanı, muhtemelen bu arkadaşlar için en verimli öğrenme ortamını oluşturmuş olsa da, doğal olarak her biri hayatta kendi yoluna devam ediyor. Yeni gelenlere en başından başlayarak anlatma ve uygulatma zorunluluğu ise benim yanımda kalıyor. İşte gerek her defasında yeniden başlamanın verimsizliği ve gerekse bu şekilde ulaşabileceğim meslektaşlarımın sayısının kısıtlılığı, beni bu dokümanı hazırlamaya
yönlendirmiş durumda.
İkinci ve belki de esas neden ise, ülke genelinde geçerli olan, mikrokontrolör eğitiminde yaşanan öğretim araçları eksikliği gerçeği. Profesyonel amaçlarla mikrokontrolörler üzerinde çalışan kişi ve kuruluşlar çeşitli donanım ve yazılımlardan oluşan geliştirme araçlarına ciddi meblağlar tutan ödemeler yapabilir. Ancak çok kısıtlı bütçeleri olan üniversitelerin, hele öğrencilerin şahsi olarak böyle imkana sahip olamadığı açıktır. En iyimser durumlarda üniversite bünyesindeki mikrokontrolör laboratuarında, haftada birkaç saat süreyle, bir geliştirme kitinin başında üç-dört öğrenci, biri fiilen çalışıp diğerleri izleyerek pratik uygulama yapmaktalar.
Sonuç olarak, mikrokontrolör tabanlı bir devre tasarımı içeren bitirme tezi, dönem projesi vb. yapanlar hariç okuldan mezun olan genç meslektaşlarımızın %98’i sadece genel teorik bilgilere sahip olarak iş hayatına adım atıyorlar. En az altı ay, belki bir yıl boyunca bu eksikliklerini gidermek için çalışırken doğal olarak çok verimsiz bir dönem geçiriyorlar. Oysaki henüz okul hayatında iken teorik öğrenimin yanında pratik uygulamalar da yaparak deneyim kazansalar, mezuniyet sonrası çok daha üretken olabilir, hem kendileri, hem çalıştıkları kuruluş ve hem de bütün ülke için yararlı olmuş olur.
Bunun yolu, mikroişlemci – mikrokontrolör öğrenimi gördükleri zaman boyunca paralel bir şekilde gerçek bir devre, bir geliştirme aracı üzerinde uygulama deneyimi edinmekten geçiyor. Bu ise yakın zamana kadar en azından bir Mikrokontrolör yada Eprom Programlayıcı, yada bir evaluation board sahibi olmayı, bir başka deyişle en azından 200 – 300 USD ödemeyi gerektiriyordu. Üstelik buna yazılım geliştirme araçlarının bedeli dahil değil. Oysa şimdi artık sadece 25-30 USD mertebesinde hatta belki de tamamen ücretsiz olarak tüm öğrencilerin birer eğitim kiti edinme imkanı mevcut.
“Her MPU – MCU (Mikroişlemci – Mikrokontrolör) Öğrencisine Bir Mini Geliştirme Kiti” Projesi Duyanların hemen tamamının hayret ve takdirini kazanan bu uygulama temelde bir “Eğitime Katkı” yada “Üniversite Destek” projesinin ürünü. Bu projeye doğrudan veya dolaylı katkıları olan herkes, inanıyorum ki aslında Türkiye’nin gelişimine katkıda bulunmuş durumda. Bu projeyi organize etme imkanı bulmuş olmak ise benim için mutluluk verici bir olay. İş hayatında faaliyet gösteren çoğu kişinin ortak görüşü, ticarette hayır işi yoktur, uzun vadeli yatırım vardır. Bir başka deyişle eğitime katkı aslında belki de ancak yıllar sonra meyvelerini toplayabileceğiniz bir tohum ekme faaliyetidir. Varsın olsun, yüzlerce genç insan deneyim
edinecek, genel olarak ülkemiz kazanacak olduğuna göre, bu tür projelerin ticari kuruluşlar tarafından finanse edilmelerinde bence hiçbir sakınca yok, bilakis teşvik edilmesi ve yaygınlaştırılmasında yarar var.
İşte bu şekilde 2004 yılı ilkbahar – yaz aylarında ANALOG DEVICES ve onun Türkiye yetkili temsilcisi olan ELEKTRO firmalarının işbirliği ile “Her MPU – MCU Öğrencisine Bir Mini Kit” projesi düzenlenmiş, İTÜ ve YTÜ den başlayarak giderek yaygınlaştırılan bir şekilde üniversiteler genelinde mini – geliştirme kitleri dağıtılmıştır. İlk etapta 500 adet kit ile başlatılan bu projenin takip eden yıllarda artan sayılarda devam etmesi öngörülmüştür.
Mini Kitler, bir evaluation board gibi olmaktan ziyade, bir donanım geliştirme aracında bulunması gereken minimum özelliklere sahip yapıda, dolayısıyla minimum maliyetle hazırlanmıştır. Proje eğitim amaçlı olduğundan, endüstri standardı 8051 mikrokontrolör ailesinin çekirdek mimari yapısına sahip olan MicroConverter’lar ve bu ailenin en temel özelliklere sahip modeli ADuC814 MCU olarak seçilmiştir. Gerek basılı doküman olarak, gerek İnternet ortamında çok geniş kaynakların bulunduğu, dünya genelinde 50’nin (evet elli’nin üzerinde) yarıiletken üreticisi firma tarafından kullanılmış ortak platform olan 8051 ailesi, doğal olarak bir numaralı alternatifi teşkil etmiştir. Ancak kökü yaklaşık 25 yıl öncesine dayanan bu aile,
ADuC8xx kodlu türev ürünlerin üzerinde yer alan on-chip download – debug özelliği sayesinde ideal bir uygulamalı eğitim aracı niteliği kazanmıştır. Bu özellik sayesinde basit bir üç telli kablo ve RS232 / TTL dönüşüm devresi aracılığıyla, hiçbir programlayıcı, emülatör vb ek donanım gerekmeksizin MCU entegresinin kendisi üzerinde program geliştirilebilmekte, hataları ayıklanıp düzgün bir şekilde çalıştığı kontrol edilebilmektedir.
Mikroişlemcilere Giriş
Mikroişlemciler ve Mikrodenetleyiciler
Hafıza ve Hafıza Çeşitleri
Neden 8051
8051 Ailesinin Tarihsel Gelişimi
8051 Uyumlu Ürün Üreten Firmalar ve Ürünlerinin Özellikleri
8051 Mimarisi
8051’ in 40 Pin Konfigürasyonu
Hafıza Organizasyonu
Program Hafızası (Program Memory)
Veri Hafızası (Data Memory)
Yazılım Altyapısı
Adresleme Modları
Direct Adresleme
Indirect Adresleme
Register Adresleme
Register-Özel Komutlar
İvedi Sabitler
Indexed Adresleme
Komut Grupları
Aritmetik Komutlar
Lojik Komutlar
Data Transfer Komutları
Internal RAM, External RAM, Lookup Tables
Boolean Komutlar
Relative Offset
Jump Komutları
CPU Timing
Makine Çevrimleri
8051 Donanım Özellikleri (Hardware Description)
Özel Fonksiyon Registerleri (Special Function Registers / SFRs)
Akümülatör ( ACC )
B Registeri ( B )
Program Durum Sözcüğü ( Program Status Word / PSW )
Yığın İşaretçesi ( Stack Pointer / SP )
Veri İşaretçisi ( Data Pointer / DPTR )
Pcon Power Control Register (Güç Kontrol Registeri)
Tcon (Zamanlayıcı Kontrolü Registeri)
Tmod (Zamanlayıcı Modu Registeri)
TL0/TH0 (Timer0 Düşük ve Yüksek)
TL1/TH1 (Timer1 Düşük ve Yüksek)
P0 (Port0, Bit Adreslenebilir)
P1 (Port1, Bit Adreslenebilir)
P2 (Port2, Bit Adreslenebilir)
P3 (Port3, Bit Adreslenebilir)
Scon (Seri Kontrol Registeri)
Sbuf (Seri Kontrol)
IE (Kesme İzin Registeri)
IP (Kesme Öncelik Registeri)
Port Yapıları ve Kullanımları
Genel amaçlı giriş/çıkış portları, özel fonksiyonlu portlar, adres ve veri yolunu süren portlar
Zamanlayıcı / Sayıcılar ( Timer / Counters )
Standart Seri Haberleşme Arabirimi ( UART )
Kesmeler ( Interrupts)
Çalışma Modları (Düşük Güç Tüketimi Modları)
Normal Mode
Idle Mode
Power-Down Mode
8051 Assembly Dilinde Programlama
Assembler’a Giriş
Assembler Nedir, diğer programlama dillerine benzerlikleri, farklılıkları. BASIC, PASCAL ve C
ile karşılaştırmalar
ASM51 Assembler Genel Yapısı. *.SRC Source Code, *.OBJ, *.LST ve *.HEX Dosyaları.
Makine Kodu, Program Counter, Instruction Fetch Cycle, Opcode, Operands, Mnemonic
Etiket, Ana Program, Alt-Program, (Label, Main Program, Sub-routine)
Temel ASM51 Direktifleri (Directives)
Kaynak Dosya Organizasyonu (Source File Organization)
Açıklama Direktifleri
Adres Düzenleme Direktifleri
Değişken Tanımlama Direktifleri
Program Hafızasında Veri Alanı Tanımlama
8051 Komut Seti Kullanım Örnekleri
Data Transfer Komutları ile hafıza içi veri aktarımı örnekleri
Immediate Addressing Mode ( MOV 7FH,#05 )
Direct Addressing Mode ( MOV A,70H )
Register Addressing Mode ( MOV R7,A )
Register Specific Addressing Mode ( MOV 90H,#55H )
Register Indirect Addressing Mode ( MOV @R0,#1 )
Register Indexed Addressing Mode ( MOV A,@A+DPTR )
Stack Oriented Addressing Mode ( PUSH ACC )
Exchange Komutları ( XCH A,B )
Bit Oriented Data Transfer ( MOV P1.0,C )
Data Processing Komutları ile hafıza içi veri aktarımı örnekleri
Aritmetik İşlemleri
Toplama – Çıkarma İşlemleri
Çarpma – Bölme İşlemleri
Arttırma – Eksiltme İşlemleri
Desimal Ayarlama
Lojik İşlemleri
AND, OR, XOR İşlemleri
Tümleme – Temizleme İşlemleri (Complement, Clear)
Öteleme İşlemleri (Rotate – Shift)
SWAP (yüksek ve düşük anlamlı 4 bitlik kısımların yer değiştirmesi)
Bit-Oriented Lojik İşlemler
Program Akışı Kontrol Komutları Kullanımı
Koşulsuz Dallanmalar
Koşullu Dallanmalar
Alt-Program Çağırmalar
8051 Komut Seti Kullanımına Dair Temel Programlama Örnekleri
Matematiksel İşlemler
Üç Byte’lık İki Değişkenin Toplamını Hesaplayan Program
N Adet Bir Byte’lık Değişkenin Toplamını Hesaplayan Program
İki Byte’lık Değişkenler Üzerinde Çıkartma İşlemi Programı
İki Byte’lık İki Değişkenin Çarpımını Hesaplayan Program
Bir Byte’lık Bir Değişkenin İçeriğini Digitlere (Hane Değerlerine) Ayıran Program
16 Adet Bir Byte’lık Değişkenin Aritmetik Ortalamasını Hesaplayan Program
N Byte’lık Sayının İşaret Değişimi
DPTR Registerinin Azaltılması
Blok Aktarma Programları
Internal RAM da yer alan N Byte’lık Veri Bloğunu Internal RAM da Başka Bir Adrese
Aktaran Program
INT_TO_XRAM; XRAM_TO_INT Programları
External RAM da yer alan N Byte’lık Veri Bloğunu External RAM da Başka Bir
Adrese Aktaran Program
İki Adet DPTR Kullanarak XRAM da Blok Aktarma Programı
Arama Programları
Bir Tablodaki En Küçük Sayıyı Bulma; “MINIMUM_BUL”
Bir Tablodaki En Büyük Sayıyı Bulma; “MAKSIMUM_BUL”
Bir Tablodaki Çift Sayıların Adedini Bulma; “CIFT_BUL”
Bir Tablodaki Tek Sayıların Adedini Bulma; “TEK_BUL”
Veri Formatı Dönüştürme Programları
Binary / BCD Dönüştürme Programları; BIN_TO_BCD; BCD_TO_BIN
Binary / ASCII Dönüşümleri
8051 Programlayıcının Kılavuzu ve Komut Seti
Hafıza Organizasyonu
Program Hafızası
Veri Hafızası
Doğrudan ve Dolaylı Adreslenebilir Bölge (Dahili RAM)
MicroConverter Programlama Modeli
Özel Fonksiyon Registerleri (Special Function Registers / SFRs)
Bütün SFR lar, Sembolleri, İsimleri, Adresleri
Power-On Reset Sonrası SFR Değerleri
SFR Memory Map
Program Status Word ( PSW )
Güç Kontrol ( Power Control / PCON )
Kesmeler ( Interrupts / IE, IP )
Zamanlayıcılar ( Timers / TCON, TMOD, T2CON )
Seri Port ( SCON, SBUF )
Komut Seti
Komut Seti Tablosu ve Sembollerin Anlamı
Komutların Açıklamaları
ADI (Analog Devices Inc.) MicroConverter
MicroConverter (MCV )Tanıtımı
Analog Devices MicroConverter (ADUC8xx )Ailesine Giriş
ADUC8xx MCU ların Genel Özellikleri
Standart 8051 Ailesi ile Benzerlikleri / Farklılıkları
ADUC8xx Seçim Tablosu
MicroConverter Alt Grupları
İlk Ürünler (ADUC812, ADUC816, ADUC824)
Mini MicroConverter ADUC814
Yüksek Hafızalı Modeller (ADUC831, ADUC832, ADUC836, ADUC834)
Yüksek Hızlı Modeller (ADUC841, ADUC842, ADUC843; ADUC845, ADUC847, ADUC848)
Gelişmiş MicroConverter lar (ADUC7xxx)
ARM Core 16/32 Bitlik CPU Yapısı
Donanım Özellikleri
Analog / Mixed Signal Birimler
Digital Birimler
ADUC7xxx Seçim Tablosu
Mini MicroConverter ADUC814
ADUC814’ün Genel Özellikleri
CPU Core
Pin Konfigürasyonu
Hafıza (Harici Hafıza Arayüzü)
Hafıza Organizasyonu
ADuC814 SFR’ leri
On-Chip Donanım Kaynakları
I/O Portları
Timer/Counters (3 Kanal, 16 Bit)
T2CON Registerı
Timer/Counter2 Çalışma Modları(16-bit Autoreload/16-bit Capture Mod)
Serial Port (Full duplex UART)
Kesmeler
IEIP2 Registeri
Kesme Önceliği
Donanım Dizayn Teknikleri
Clock Osilatörü
Güç Tüketimi
Güç Tasarruf Modları
Power On Reset
Kart Serim Önerileri
Dikkat Edilecek Diğer Konular
ADUC814’ün İlave Yeni Özellikleri
8052 core da bulunmayan ilave birimlerin özellikleri ve kullanımları
On-chip Program Download / Debug Arayüzü (Harici Donanım Yok)
Tek Pin Emülasyon Modu
ADC, Analog/Dijital Dönüştürücü (SAR, 6 Kanal, 12Bit, 247 Ksps)
ADC Birimi Genel Yapısı
ADC Transfer Fonksiyonu
ADC veri çıkış biçimi
ADC Bloğu ile ilgili SFR’ler
ADC dönüştürücüsünün sürülmesi
Referans Gerilimi Bağlantısı
ADC’ nin Ayarlanması
ADC çevriminin başlatılması
ADC Yüksek Hızlı Veri Yakalama Modu (HSDC)
ADC’ de Kalibrasyon
OFFSET ve Kazanç Kalibrasyonu
ADC OFFSET ve Kazanç Kalibrasyon Katsayıları
ADC’ nin Kalibre Edilmesi
Kalibrasyanun Kodla Başlatılması
DAC, Digital / Analog Converter (Vout, 2 Kanal, 12 Bit, 15 usn Settling Time)
DACCON SFRsi
Dijital Analog Dönüştürücü Kullanımı
PLL birimi ile hız ayarı (16.78 MHz max)
Kalıcı Flash/EE Hafıza
Flash/EE Program Hafıza Güvenilirliği
FLASH/EE Program Hafızası Kullanımı
FLASH/EE Program Hafıza Güvenliği
FLASH/EE Veri Hafızası Güvenliği
ECON-FLASH/EE Hafıza Kontrol SFR’ si
Flash/EE Hafıza Zamanlaması
Bir Byte Programlama
SPI
MISO (Master In, Slave Out Data I/O Pin), Pin#23
MOSI (Master Out, Slave In Pin) (Pin#24)
SCLOCK (Serial Clock I/O Pin), Pin#25
SS (Slave Select Input Pin), Pin#22
SPICON registeri
SPI Arayüzünün Kullanımı
SPI Arayüzü Master Modu
SPI Arayüzü Slave Modu
Timer Interval Counter ( TIC )ve Konrol Registeri(TIMECON)
WatchDog Timer Kontrol Registeri
Güç Kaynağı Monitörü ve Kontrol Registeri(PSMCON)
ADuC814 Ayar Registeri (CFG814)
SPI
Harici Clock
CFG814 Register İçeriği
Sıcaklık Sensörü (Temperature Sensör)
ADUC814 MiniKit
ADUC814MK MiniKit Donanım Özellikleri
Adapter Board
RS232 Interface Cable
Companion CD
ADUC814MK MiniKit Üzerinde Yazılım Geliştirme (Yardımcı Yazılımlar)
ASM51 Assembler
WSD Windows Serial Downloader
ASPIRE Integrated Development Environment
Debugger
WASP Windows Analysis Software Package
ADUC814MK İle İlk Projeler
Bir Port Pinine Bağlı Olan LED’in “Delay” alt-programı kullanılarak yakılıp söndürülmesi.
INT0 dış kesmesi kullanılarak flaşör LED periodunun yükseltilmesi
DELAY_ONMILI_SANIYE ve DELAY_BIR_SANIYE alt-programlarının hazırlanması.
Delay Alt Rutinini Kullanarak Geçen Süreye Göre “YUZ_MSN” ve “SANIYE” isimli değişken
içeriklerinin arttırılması.
Bir Port Pinine bağlı olan TUŞ’a basıldığının anlaşılması ve LED kontrolü
Tek hane 7-segment LED Display sürülmesi.
6 adet 7-segment ile ekrana “12.34.56. “ sayısının yazılması.
Timer alt rutini içerisinde değiştirilen SANIYE isimli değişkenin içeriğinin 7-segment LED
Display de görüntülenmesi (7447 BCD2SEVEN-Seg dönüştürücü ile)
Intelligent Display ile dakika saniye sayıcı uygulaması.
ADC OKUMA: 0 – 2.5V aralığında değer alan analog bir işaretin ADC ile okunarak 7- Segment LED Display Grubu (Intelligent Display) üzerinde görüntülenmesi
SICAKLIK OKUMA: Bir sıcaklık sensöründen gelen analog gerilim değerlerinin okunarak 7- Segment LED Display Grubu (Intelligent Display) üzerinde görüntülenmesi
LCD SÜRME: İki satır 16 karakter kapasiteli bir likit kristal göstergenin sürülmesi
TUŞ OKUMA: Port pinlerine bağlı olan 4 adet tuş girişinin gürültülerden arındırılarak (debouncing) okunması
KARE DALGA ÜRETME: Bir port pininde değişk darbe /boşluk (duty cycle) ‘a sahip kare dalga üretilmesi.
PWM ÇIKIŞI ÜRETME: Tuşlar kullanılarak üretilmekte olan PWM çıkışının darbe/boşluk (duty cyle) değerinin değiştirilmesi.
EEPROM KULLANIMI: Tuşlar yardımıyla ayarlanmış bir set değerinin EEPROM hafızaya kaydedilmesi ve tekrar okunması.
SICAKLIK KONTROL: Oda sıcaklığının kontrolü uygulaması. (On/Off sıcaklık kontrolü)
İŞARET ÜRETECİ: DAC çıkışını kullanarak kestere dişi dalga , üçgen dalga, sinüs dalga gibi analog işaretlerin üretilmesi.
ADC ‘den okuanan bilginin seri porttan gönderilmesi. Mini printer uygulaması.
GPS Recevier konum kordinat bilgisinin okunması ve display ‘de görüntülenmesi.
RF haberleşme arabirimleri modülleri aracılığıyla kablosuz veri iletişiminin sağlanması. (433MHz)
EVAL-ADUC814EB Evaluation Board
ADUC814EB Eval Board Getting Started Guide Kurulum
METALINK 8051 Cross Assembler
WSD: Windows Serial Downloader
ASPIRE IDE: Integrated Development Environment (Debugger ve Simulator)
WASP: Windows Analog Software Program
Dokümantasyon ve kaynak kod (source code) örnekleri
Emeği geçen hazırlayan kişilere teşekkürler
Kaynak: ayberkbagci.tripod.com
Şifre-Pass: 320volt.com
Yayım tarihi: 2008/07/05 Etiketler: 8051, adc, ADUC814EB, ADuC8XX, assembler, eğitim, Flash, kod, lcd devreleri, led uygulamaları, MCU, rs232, SPI