8051 & ADuC8xx Eğitim Notları

8051pinsA. 8051 Ailesi MCU lar (Endüstri Standardı Mikrokontrolör Ailesi)

1. Mikroişlemcilere Giriş

1.1. Mikroişlemciler ve Mikrodenetleyiciler
1.2. Hafıza ve Hafıza Çeşitleri

2. Neden 8051

2.1. 8051 Ailesinin Tarihsel Gelişimi
2.2. 8051 Uyumlu Ürün Üreten Firmalar ve Ürünlerinin Özellikleri

3.8051 Mimarisi

3.1. 8051’ in 40 Pin Konfigürasyonu
3.2. Hafıza Organizasyonu
3.2.1. Program Hafızası (Program Memory)
3.2.2. Veri Hafızası (Data Memory)
3.3. Yazılım Altyapısı
3.3.1. Adresleme Modları
3.3.1.1. Direct Adresleme
3.3.1.2. Indirect Adresleme
3.3.1.3. Register Adresleme
3.3.1.4. Register-Özel Komutlar
3.3.1.5. İvedi Sabitler
3.3.1.6. Indexed Adresleme
3.3.2. Komut Grupları
3.3.2.1. Aritmetik Komutlar
3.3.2.2. Lojik Komutlar
3.3.2.3. Data Transfer Komutları Internal RAM, External RAM, Lookup Tables
3.3.2.4. Boolean Komutlar Relative Offset
3.3.2.5. Jump Komutları
3.3.3. CPU Timing
3.3.4. Makine Çevrimleri

4.8051 Donanım Özellikleri (Hardware Description)

4.1. Özel Fonksiyon Registerleri (Special Function Registers / SFRs)
4.1.1. Akümülatör ( ACC )
4.1.2. B Registeri ( B )
4.1.3. Program Durum Sözcüğü ( Program Status Word / PSW )
4.1.4. Yığın İşaretçesi ( Stack Pointer / SP )
4.1.5. Veri İşaretçisi ( Data Pointer / DPTR )
4.1.6. Pcon Power Control Register (Güç Kontrol Registeri)
4.1.7. Tcon (Zamanlayıcı Kontrolü Registeri)
4.1.8. Tmod (Zamanlayıcı Modu Registeri)
4.1.9. TL0/TH0 (Timer0 Düşük ve Yüksek)
4.1.10. TL1/TH1 (Timer1 Düşük ve Yüksek)
4.1.11. P0 (Port0, Bit Adreslenebilir)
4.1.12. P1 (Port1, Bit Adreslenebilir)
4.1.13. P2 (Port2, Bit Adreslenebilir)
4.1.14. P3 (Port3, Bit Adreslenebilir)
4.1.15.Scon (Seri Kontrol Registeri)
4.1.16.Sbuf (Seri Kontrol)
4.1.17.IE (Kesme İzin Registeri)
4.1.18.IP (Kesme Öncelik Registeri)
4.2. Port Yapıları ve Kullanımları Genel amaçlı giriş/çıkış portları, özel fonksiyonlu portlar, adres ve veri yolunu süren portlar
4.2.1. Port 0
4.2.2. Port 1
4.2.3. Port 2
4.2.4. Port 3
4.3.Zamanlayıcı / Sayıcılar ( Timer / Counters )
4.4.Standart Seri Haberleşme Arabirimi ( UART )
4.5.Kesmeler ( Interrupts)
4.6.Çalışma Modları (Düşük Güç Tüketimi Modları)
4.6.1. Normal Mode
4.6.2. Idle Mode
4.6.3. Power-Down Mode

5.8051 Assembly Dilinde Programlama

5.1. Assembler’a Giriş
5.1.1. Assembler Nedir, diğer programlama dillerine benzerlikleri, farklılıkları. BASIC, PASCAL ve C ile karşılaştırmalar
5.1.2. ASM51 Assembler Genel Yapısı. *.SRC Source Code, *.OBJ, *.LST ve *.HEX Dosyaları.
5.1.3. Makine Kodu, Program Counter, Instruction Fetch Cycle, Opcode, Operands, Mnemonic
5.1.4. Etiket, Ana Program, Alt-Program, (Label, Main Program, Sub-routine)
5.2. Temel ASM51 Direktifleri (Directives)
5.2.1. Kaynak Dosya Organizasyonu (Source File Organization)
5.2.1.1. $INCLUDE
5.2.1.2. $MOD
5.2.2. Açıklama Direktifleri
5.2.2.1. $TITLE, ….
5.2.3. Adres Düzenleme Direktifleri
5.2.3.1. ORG
5.2.3.2. CSEG, DSEG
5.2.3.3. END
5.2.4. Değişken Tanımlama Direktifleri
5.2.4.1. DATA
5.2.4.2. BIT
5.2.4.3. EQU
5.2.5. Program Hafızasında Veri Alanı Tanımlama
5.2.5.1. DB
5.2.5.2. DW
5.3. 8051 Komut Seti Kullanım Örnekleri
5.3.1. Data Transfer Komutları ile hafıza içi veri aktarımı örnekleri
5.3.1.1. Immediate Addressing Mode ( MOV 7FH,#05 )
5.3.1.2. Direct Addressing Mode ( MOV A,70H )
5.3.1.3. Register Addressing Mode ( MOV R7,A )
5.3.1.4. Register Specific Addressing Mode ( MOV 90H,#55H )
5.3.1.5. Register Indirect Addressing Mode ( MOV @R0,#1 )
5.3.1.6. Register Indexed Addressing Mode ( MOV A,@A+DPTR )
5.3.1.7. Stack Oriented Addressing Mode ( PUSH ACC )
5.3.1.8. Exchange Komutları ( XCH A,B )
5.3.1.9. Bit Oriented Data Transfer ( MOV P1.0,C )
5.3.2. Data Processing Komutları ile hafıza içi veri aktarımı örnekleri
5.3.2.1. Aritmetik İşlemleri
5.3.2.1.1. Toplama – Çıkarma İşlemleri
5.3.2.1.2. Çarpma – Bölme İşlemleri
5.3.2.1.3. Arttırma – Eksiltme İşlemleri
5.3.2.1.4. Desimal Ayarlama
5.3.2.2. Lojik İşlemleri
5.3.2.2.1. AND, OR, XOR İşlemleri
5.3.2.2.2. Tümleme – Temizleme İşlemleri (Complement, Clear)
5.3.2.2.3. Öteleme İşlemleri (Rotate – Shift)
5.3.2.2.4. SWAP (yüksek ve düşük anlamlı 4 bitlik kısımların yer değiştirmesi)
5.3.2.2.5. Bit-Oriented Lojik İşlemler
5.3.3. Program Akışı Kontrol Komutları Kullanımı
5.3.3.1. Koşulsuz Dallanmalar
5.3.3.2. Koşullu Dallanmalar
5.3.3.3. Alt-Program Çağırmalar
5.4. 8051 Komut Seti Kullanımına Dair Temel Programlama Örnekleri
5.4.1. Matematiksel İşlemler
5.4.1.1. Üç Byte’lık İki Değişkenin Toplamını Hesaplayan Program
5.4.1.2. N Adet Bir Byte’lık Değişkenin Toplamını Hesaplayan Program
5.4.1.3. İki Byte’lık Değişkenler Üzerinde Çıkartma İşlemi Programı
5.4.1.4. İki Byte’lık İki Değişkenin Çarpımını Hesaplayan Program
5.4.1.5. Bir Byte’lık Bir Değişkenin İçeriğini Digitlere (Hane Değerlerine) Ayıran Program
5.4.1.6. 16 Adet Bir Byte’lık Değişkenin Aritmetik Ortalamasını Hesaplayan Program
5.4.1.7. N Byte’lık Sayının İşaret Değişimi
5.4.1.8. DPTR Registerinin Azaltılması
5.4.2. Blok Aktarma Programları
5.4.2.1. Internal RAM da yer alan N Byte’lık Veri Bloğunu Internal RAM da Başka Bir Adrese Aktaran Program
5.4.2.2. INT_TO_XRAM; XRAM_TO_INT Programları
5.4.2.3. External RAM da yer alan N Byte’lık Veri Bloğunu External RAM da Başka Bir Adrese Aktaran Program
5.4.2.4. İki Adet DPTR Kullanarak XRAM da Blok Aktarma Programı
5.4.3. Arama Programları
5.4.3.1. Bir Tablodaki En Küçük Sayıyı Bulma; “MINIMUM_BUL”
5.4.3.2. Bir Tablodaki En Büyük Sayıyı Bulma; “MAKSIMUM_BUL”
5.4.3.3. Bir Tablodaki Çift Sayıların Adedini Bulma; “CIFT_BUL”
5.4.3.4. Bir Tablodaki Tek Sayıların Adedini Bulma; “TEK_BUL”
5.4.4. Veri Formatı Dönüştürme Programları
5.4.4.1. Binary / BCD Dönüştürme Programları; BIN_TO_BCD; BCD_TO_BIN
5.4.4.2. Binary / ASCII Dönüşümleri

6.8051 Programlayıcının Kılavuzu ve Komut Seti

6.1. Hafıza Organizasyonu
6.1.1.Program Hafızası
6.1.2.Veri Hafızası
6.1.3.Doğrudan ve Dolaylı Adreslenebilir Bölge (Dahili RAM)
6.1.4.MicroConverter Programlama Modeli
6.2. Özel Fonksiyon Registerleri (Special Function Registers / SFRs)
6.2.1.Bütün SFR lar, Sembolleri, İsimleri, Adresleri
6.2.2.Power-On Reset Sonrası SFR Değerleri
6.2.3.SFR Memory Map
6.2.4.Program Status Word ( PSW )
6.2.5.Güç Kontrol ( Power Control / PCON )
6.2.6.Kesmeler ( Interrupts / IE, IP )
6.2.7.Zamanlayıcılar ( Timers / TCON, TMOD, T2CON )
6.2.8.Seri Port ( SCON, SBUF )
6.3. Komut Seti
6.3.1. Komut Seti Tablosu ve Sembollerin Anlamı
6.3.2. Komutların Açıklamaları

B. ADI (Analog Devices Inc.) MicroConverter

7.MicroConverter (MCV )Tanıtımı

7.1. Analog Devices MicroConverter (ADUC8xx )Ailesine Giriş
7.1.1. ADUC8xx MCU ların Genel Özellikleri
7.1.2. Standart 8051 Ailesi ile Benzerlikleri / Farklılıkları
7.1.3. ADUC8xx Seçim Tablosu
7.2. MicroConverter Alt Grupları
7.2.1.İlk Ürünler (ADUC812, ADUC816, ADUC824)
7.2.2.Mini MicroConverter ADUC814
7.2.3.Yüksek Hafızalı Modeller (ADUC831, ADUC832, ADUC836, ADUC834)
7.2.4.Yüksek Hızlı Modeller (ADUC841, ADUC842, ADUC843; ADUC845, ADUC847, ADUC848)
7.3. Gelişmiş MicroConverter lar (ADUC7xxx)
7.3.1. ARM Core 16/32 Bitlik CPU Yapısı
7.3.2. Donanım Özellikleri
7.3.2.1. Analog / Mixed Signal Birimler
7.3.2.2. Digital Birimler
7.3.3. ADUC7xxx Seçim Tablosu

8.Mini MicroConverter ADUC814

8.1. ADUC814’ün Genel Özellikleri
8.1.1. CPU Core
8.1.1.1. Pin Konfigürasyonu
8.1.2. Hafıza (Harici Hafıza Arayüzü)
8.1.2.1. Hafıza Organizasyonu
8.1.3. ADuC814 SFR’ leri
8.1.4. On-Chip Donanım Kaynakları
8.1.4.1. I/O Portları
8.1.4.2. Timer/Counters (3 Kanal, 16 Bit)
8.1.4.2.1. T2CON Registerı
8.1.4.2.2. Timer/Counter2 Çalışma Modları(16-bit Autoreload/16-bit Capture Mod)
8.1.4.3. Serial Port (Full duplex UART)
8.1.4.4. Kesmeler
8.1.4.4.1. IEIP2 Registeri
8.1.4.4.2. Kesme Önceliği
8.1.4.5. Donanım Dizayn Teknikleri
8.1.4.5.1. Clock Osilatörü
8.1.4.5.2. Güç Tüketimi
8.1.4.5.3. Güç Tasarruf Modları
8.1.4.5.4. Power On Reset
8.1.4.5.5. Kart Serim Önerileri
8.1.4.5.6. Dikkat Edilecek Diğer Konular
8.2. ADUC814’ün İlave Yeni Özellikleri 8052 core da bulunmayan ilave birimlerin özellikleri ve kullanımları
8.2.1. On-chip Program Download / Debug Arayüzü (Harici Donanım Yok)
8.2.2. Tek Pin Emülasyon Modu
8.2.3. ADC, Analog/Dijital Dönüştürücü (SAR, 6 Kanal, 12Bit, 247 Ksps)
8.2.3.1. ADC Birimi Genel Yapısı
8.2.3.2. ADC Transfer Fonksiyonu
8.2.3.3. ADC veri çıkış biçimi
8.2.3.4. ADC Bloğu ile ilgili SFR’ler
8.2.3.5. ADC dönüştürücüsünün sürülmesi
8.2.3.6. Referans Gerilimi Bağlantısı
8.2.3.7. ADC’ nin Ayarlanması
8.2.3.8. ADC çevriminin başlatılması
8.2.3.9. ADC Yüksek Hızlı Veri Yakalama Modu (HSDC)
8.2.3.10. ADC’ de Kalibrasyon
8.2.3.10.1.OFFSET ve Kazanç Kalibrasyonu
8.2.3.10.2.ADC OFFSET ve Kazanç Kalibrasyon Katsayıları
8.2.3.10.3.ADC’ nin Kalibre Edilmesi
8.2.3.10.4.Kalibrasyanun Kodla Başlatılması
8.2.4. DAC, Digital / Analog Converter (Vout, 2 Kanal, 12 Bit, 15 usn Settling Time)
8.2.4.1.DACCON SFRsi
8.2.4.2.Dijital Analog Dönüştürücü Kullanımı
8.2.5. PLL birimi ile hız ayarı (16.78 MHz max)
8.2.6. Kalıcı Flash/EE Hafıza
8.2.7. Flash/EE Program Hafıza Güvenilirliği
8.2.7.1.FLASH/EE Program Hafızası Kullanımı
8.2.7.2.FLASH/EE Program Hafıza Güvenliği
8.2.7.3.FLASH/EE Veri Hafızası Güvenliği
8.2.7.4.ECON-FLASH/EE Hafıza Kontrol SFR’ si
8.2.7.5.Flash/EE Hafıza Zamanlaması
8.2.7.6.Bir Byte Programlama
8.2.8. SPI
8.2.8.1.MISO (Master In, Slave Out Data I/O Pin), Pin#23
8.2.8.2.MOSI (Master Out, Slave In Pin) (Pin#24)
8.2.8.3.SCLOCK (Serial Clock I/O Pin), Pin#25
8.2.8.4.SS (Slave Select Input Pin), Pin#22
8.2.8.5.SPICON registeri
8.2.8.6.SPI Arayüzünün Kullanımı
8.2.8.7.SPI Arayüzü Master Modu
8.2.8.8.SPI Arayüzü Slave Modu
8.2.9. Timer Interval Counter ( TIC )ve Konrol Registeri(TIMECON)
8.2.10. WatchDog Timer Kontrol Registeri
8.2.11. Güç Kaynağı Monitörü ve Kontrol Registeri(PSMCON)
8.2.12. ADuC814 Ayar Registeri (CFG814)
8.2.12.1.SPI
8.2.12.2.Harici Clock
8.2.12.3.CFG814 Register İçeriği
8.2.13. Sıcaklık Sensörü (Temperature Sensör)

9.ADUC814 MiniKit

9.1. ADUC814MK MiniKit Donanım Özellikleri
9.1.1. Adapter Board
9.1.2. RS232 Interface Cable
9.1.3. Companion CD
9.2. ADUC814MK MiniKit Üzerinde Yazılım Geliştirme (Yardımcı Yazılımlar)
9.2.1.ASM51 Assembler
9.2.2.WSD Windows Serial Downloader
9.2.3.ASPIRE Integrated Development Environment
9.2.4.Debugger
9.2.5.WASP Windows Analysis Software Package
9.3. ADUC814MK İle İlk Projeler
9.3.1.Bir Port Pinine Bağlı Olan LED’in “Delay” alt-programı kullanılarak yakılıp söndürülmesi.
9.3.2.INT0 dış kesmesi kullanılarak flaşör LED periodunun yükseltilmesi
9.3.3.DELAY_ONMILI_SANIYE ve DELAY_BIR_SANIYE alt-programlarının hazırlanması.
9.3.4.Delay Alt Rutinini Kullanarak Geçen Süreye Göre “YUZ_MSN” ve “SANIYE” isimli değişken içeriklerinin arttırılması.
9.3.5.Bir Port Pinine bağlı olan TUŞ’a basıldığının anlaşılması ve LED kontrolü
9.3.6.Tek hane 7-segment LED Display sürülmesi.
9.3.7.6 adet 7-segment ile ekrana “12.34.56. “ sayısının yazılması.
9.3.8.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)
9.3.9.Intelligent Display ile dakika saniye sayıcı uygulaması.
9.3.10. 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
9.3.11. 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
9.3.12. LCD SÜRME: İki satır 16 karakter kapasiteli bir likit kristal göstergenin sürülmesi
9.3.13. TUŞ OKUMA: Port pinlerine bağlı olan 4 adet tuş girişinin gürültülerden arındırılarak
(debouncing) okunması
9.3.14. KARE DALGA ÜRETME: Bir port pininde değişk darbe /boşluk (duty cycle) ‘a sahip kare
dalga üretilmesi.
9.3.15. PWM ÇIKIŞI ÜRETME: Tuşlar kullanılarak üretilmekte olan PWM çıkışının darbe/boşluk
(duty cyle) değerinin değiştirilmesi.
9.3.16. EEPROM KULLANIMI: Tuşlar yardımıyla ayarlanmış bir set değerinin EEPROM hafızaya
kaydedilmesi ve tekrar okunması.
9.3.17. SICAKLIK KONTROL: Oda sıcaklığının kontrolü uygulaması. (On/Off sıcaklık kontrolü)
9.3.18. İŞARET ÜRETECİ: DAC çıkışını kullanarak kestere dişi dalga , üçgen dalga, sinüs dalga gibi
analog işaretlerin üretilmesi.
9.3.19. ADC ‘den okuanan bilginin seri porttan gönderilmesi.
9.3.20. Mini printer uygulaması.
9.3.21. GPS Recevier konum kordinat bilgisinin okunması ve display ‘de görüntülenmesi.
9.3.22. RF haberleşme arabirimleri modülleri aracılığıyla kablosuz veri iletişiminin sağlanması.
(433MHz)

10. EVAL-ADUC814EB Evaluation Board

10.1. ADUC814EB Eval Board Getting Started Guide
10.1.1.Kurulum
10.1.2.METALINK 8051 Cross Assembler
10.1.3.WSD: Windows Serial Downloader
10.1.4.ASPIRE IDE: Integrated Development Environment (Debugger ve Simulator)
10.1.5.WASP: Windows Analog Software Program
10.1.6.Dokümantasyon ve kaynak kod (source code) örnekleri
10.2. ADUC814EB Eval Board Reference Guide

11. Sorular

12. Sözlük

İlginize Çekebilir

C ile 8051 Mikrodenetleyici Uygulamaları Bölüm 9 Mikrodenetleyicide C Programlama