ADuC841 Mikrodenetleyicisi - 8051 MimarisiBlog YazılarGömülü Sistemler

Assembly ile ADuC841 – [6] TÜM DEVRE UÇ FONKSİYONLARI

Giriş: Neden 8051?

Eğer gömülü sistem dünyasına adım atmak istiyorsanız, 8051 mikrodenetleyicisi tam size göre bir başlangıç noktasıdır. 1980 yılında Intel tarafından geliştirilen bu entegre, onlarca yıldır hem öğretim ortamlarında hem de endüstriyel uygulamalarda vazgeçilmez bir yer edinmiştir.

8051’in bu kadar popüler olmasının en büyük nedeni sadeliği ile güçlülüğünü bir arada sunmasıdır. 40-pinlik yapısı, net ve anlaşılır pin fonksiyonları ile donanım tasarımını adım adım öğrenmek için ideal bir zemin oluşturur. Üstelik piyasada onlarca muadili ve türevi mevcuttur — ADuC841 bunların belki de en bilinenidir.

Bu makalede 8051’i sıfırdan ele alacak; tümdevre yapısından port mimarisine, reset devresinden Assembly komutlarına kadar her konuyu örnekler üzerinden anlatacağız. Bir konuyu iyice özümsemeden bir sonrakine geçmeyeceğiz.

Bölüm 1 — 8051 Tümdevre Yapısı ve Pin Fonksiyonları

1.1  40-Pin DIP Gövdesi

Standart 8051, 40 uçlu DIP (Dual In-line Package) yapısına sahiptir. Yani entegre, iki sıra halinde dizilmiş toplam 40 pinden oluşur. Bu pinlerin dağılımı şu şekildedir:

  • 32 pin — Giriş/Çıkış portları (P0, P1, P2, P3)
  • 2 pin — Besleme: Vcc (+5 V, pin 40) ve Vss (GND, pin 20)
  • 2 pin — Osilatör bağlantıları: XTAL1 (pin 19) ve XTAL2 (pin 18)
  • 1 pin — Reset: RST (pin 9)
  • 3 pin — Harici hafıza erişimi: ALE/PROG, PSEN, EA/Vpp

 

Portlar salt I/O işlevi görmekle kalmaz; P0, P2 ve P3’ün pinleri ek (ikincil) fonksiyonlara da sahiptir. Bu, sınırlı pin sayısından maksimum işlevsellik elde etmenin akıllıca bir yoludur.

 

1.2  Besleme Uçları

8051’in beslenmesi son derece basittir:

  • [object Object] +5 volt pozitif besleme. Bu pine mutlaka kararlı, gürültüsüz bir +5 V gerilim uygulanmalıdır. Gerilim dalgalanmaları mikrodenetleyicinin hatalı çalışmasına yol açar.
  • [object Object] Negatif besleme, yani toprak (GND). Tüm devre referansı bu noktaya bağlanır.

 

✔ İpucu: Besleme hattına mümkün olduğunca Vcc pininin yakınına 100 nF’lık bir seramik kondansatör bağlayın. Bu, yüksek frekanslı gürültüyü süzerek kararlı çalışmayı destekler.

 

Bölüm 2 — RST (Power-on Reset) Devresi

2.1  Reset Nedir ve Neden Gereklidir?

Bir mikrodenetleyiciyi ilk kez çalıştırdığınızda ya da yeniden başlatmak istediğinizde, tüm iç yazmaçların bilinen bir başlangıç değerine getirilmesi gerekir. Bu işleme reset denir.

8051’de reset, RST pini (pin 9) üzerinden gerçekleştirilir. Geçerli bir reset işlemi için RST pinine en az 2 makine çevrimi boyunca Lojik 1 (yüksek seviye) uygulanmalı; bu süre dolduktan sonra pin Lojik 0’a çekilmelidir.

 

2.2  RC Reset Devresi

En yaygın ve ekonomik reset yöntemi, bir direnç (R) ve kondansatörden (C) oluşan basit RC devresidir. Besleme gerilimi (+5 V) uygulandığı anda kondansatör boş olduğundan RST pinini otomatik olarak Lojik 1’e çeker. Kondansatör zamanla şarj olur ve pin Lojik 0’a düşer; işte bu noktada mikrodenetleyici çalışmaya başlar.

Tipik RC değerleri: C = 10 µF ve R = 8,2 kΩ. 100 Ω’luk seri direnç ise transistör ve koruma amaçlıdır. Zaman sabitinin en az 2 makine çevrimi sağlayacak biçimde seçilmesi gerekir.

 

Formül: RC zaman sabiti (τ = R × C) ≥ 2 makine çevrimi süresi olmalıdır. 12 MHz kristal için 1 makine çevrimi ≈ 1 µs; dolayısıyla τ ≥ 2 µs şarttır. Yukarıdaki değerler bu koşulu rahatlıkla sağlar.

 

2.3  Reset Sonrasında Ne Olur?

Geçerli bir reset işlemi tamamlandığında 8051’in iç yazmaçları aşağıdaki başlangıç değerlerine getirilir:

 

Yazmaç Reset Değeri Açıklama
PC (Program Counter) 0000h Program 0. adresten çalışmaya başlar
SP (Stack Pointer) 07h Yığın 07h adresinden başlar
P0 FFh (11111111) Tüm bitler 1 → giriş modunda
P1 FFh (11111111) Tüm bitler 1 → giriş modunda
P2 FFh (11111111) Tüm bitler 1 → giriş modunda
P3 FFh (11111111) Tüm bitler 1 → giriş modunda

 

⚠ Dikkat: Reset sonrası tüm port pinleri Lojik 1 seviyesine çekilir ve GİRİŞ olarak atanır. Bu nedenle, çıkış olarak kullanmak istediğiniz pinleri Assembly kodunuzun başında açıkça yönlendirmeniz gerekir.

 

Bölüm 3 — Osilatör ve Saat Üreteci (XTAL1 & XTAL2)

3.1  Saat Darbeleri Neden Gereklidir?

Bir mikrodenetleyici, her işlemi belirli bir zaman referansına göre sırayla gerçekleştirir. Bu referansı sağlayan şey periyodik saat darbeleridir. 8051’de saat üreteci, XTAL1 (pin 19) ve XTAL2 (pin 18) pinlerine bağlanan harici bir kristal ve iki kondansatörden oluşur.

 

3.2  Standart Bağlantı Şeması

Tipik bir 12 MHz osilatör bağlantısı şu bileşenlerden oluşur:

  • [object Object] — Üretici firmanın izin verdiği maksimum frekansı aşmayın.
  • [object Object] — Her iki kristal ucuna birer kondansatör bağlanır, diğer uçları toprağa (GND) gider.

 

Makine çevrimi (machine cycle), 8051’in çoğu komutu kaç adımda tamamladığını belirleyen temel zaman birimidir. 12 MHz kristal ile:

  • 1 makine çevrimi = 12 saat darbesi = 1 µs
  • Yani saniyede 1.000.000 makine çevrimi tamamlanabilir.

 

Bölüm 4 — Giriş/Çıkış Portları (P0, P1, P2, P3)

8051’in 40 pininin 32’si dört porta ayrılmıştır: P0, P1, P2 ve P3. Her port 8 bittir; yani toplam 32 bağımsız giriş/çıkış pinine sahipsiniz. Portlar hem 8 bit bütünüyle (byte) hem de bit tek tek okunup yazılabilir.

Önemli Not: Reset sonrası tüm portların tüm bitleri 1 olur ve portlar GİRİŞ moduna alınır.

 

4.1  Port 1 (P1) — En Sade Port

P1, 8051’in en “saf” I/O portudur. Giriş/çıkış işlevi dışında başka bir görevi yoktur — yani harici hafıza erişimi veya seri haberleşme gibi ikincil fonksiyonları bulunmaz.

P1’in her biti dahili olarak pull-up direnci içerir. Bu, pini Lojik 1’e çekici bir direnç anlamına gelir; dolayısıyla P1’i giriş olarak kullanırken harici pull-up eklemenize gerek yoktur.

 

Her P1 Pininin İç Yapısı

Her bir P1 biti üç ana elemandan oluşur:

  • [object Object] Yazılan değeri saklar. Komut çalıştığında veri bu latche yazılır.
  • [object Object] Latchteki değere göre pinin fiziksel seviyesini belirler.
  • [object Object] Dış dünyadan gelen sinyali dahili veri yoluna aktarır.

 

P1 ile Basit LED Yakma — Assembly Örneği

Aşağıdaki örnek, P1.0 pinine bağlı bir LED’i yakıp söndürür. LED’in anot tarafı P1.0’a, katot tarafı ise seri bir direnç üzerinden toprağa bağlıdır.

 

; 8051 Assembly Kodu
; ─────────────────────────────────────────────
; P1.0 pinine bağlı LED yakma/söndürme örneği
; ─────────────────────────────────────────────
ORG     0000h          ; Program 0. adresten başlar (reset vektörü)
 
BASLA:
    SETB    P1.0       ; P1.0 = 1 → LED SÖNER (aktif-düşük devre)
    ACALL   GECIKME    ; Kısa gecikme
    CLR     P1.0       ; P1.0 = 0 → LED YANAR
    ACALL   GECIKME    ; Kısa gecikme
    SJMP    BASLA      ; Döngüyü başa al → sonsuz yanıp-sönme
 
; ── Gecikme alt programı (~250 ms @ 12 MHz) ──
GECIKME:
    MOV     R0, #250   ; Dış sayaç 250
D1: MOV     R1, #250   ; İç sayaç 250
D2: DJNZ    R1, D2     ; R1–, sıfır değilse D2’ye dön
    DJNZ    R0, D1     ; R0–, sıfır değilse D1’e dön
    RET                ; Alt programdan dön
 
END

 

Burada SETB P1.0 komutu P1.0’ı Lojik 1 yapar, CLR P1.0 ise Lojik 0’a çeker. DJNZ komutu (Decrement and Jump if Not Zero) bir sayacı azaltarak gecikme döngüsü oluşturur.

 

4.2  Port 0 (P0) — Çift Fonksiyonlu, Open-Drain

P0, diğer portlardan önemli bir farkla ayrılır: dahili pull-up direnci yoktur. Bu nedenle P0’ın mimarisi açık-kolektörlü (open-drain) olarak tasarlanmıştır.

Pratikte bu şu anlama gelir: P0’ı çıkış olarak kullanmak istiyorsanız, her pine harici olarak Vcc’ye bağlı bir pull-up direnci eklemeniz zorunludur. Aksi takdirde pin yalnızca giriş olarak çalışabilir.

 

P0’ın İkincil Fonksiyonu: Adres/Veri Yolu

8051 harici bir belleğe (ROM veya RAM) erişmek istediğinde, P0 pinleri AD0–AD7 olarak işlev görür. Bu durumda P0:

  • Önce düşük adres baytını (A0–A7) dışarı verir.
  • Ardından veri (D0–D7) alışverişi için kullanılır.

Bu çok işlevlilik (multiplexing) sayesinde az pin ile hem adres hem veri taşınabilir.

 

⚠ Dikkat: P0 pinlerini I/O olarak kullanırken harici pull-up direnci eklemeyi unutmayın. Aksi takdirde çıkış doğru çalışmaz.

 

P0 ile Port Yazma Örneği

; 8051 Assembly Kodu
; P0 üzerinden 8 LED sürmek (harici pull-up gerekli)
; P0 = 55h = 0101 0101 → alternatif LEDler yanar
ORG     0000h
 
    MOV     P0, #55h   ; P0 = 0101 0101 → LED deseni yaz
    SJMP    $          ; Burada bekle (sonsuz döngü)
 
END

 

4.3  Port 2 (P2) — Yüksek Adres Baytı

P2, harici hafıza erişiminde yüksek adres baytını (A8–A15) oluşturur. P0 ile birlikte kullanıldığında, 8051 toplam 16 bitlik bir adres üretebilir; bu da 64 kByte harici hafıza alanı anlamına gelir.

Harici hafıza kullanılmadığında P2, sıradan bir 8-bit I/O portu gibi kullanılabilir. P1 gibi dahili pull-up dirençlerine sahiptir.

 

4.4  Port 3 (P3) — İkincil Fonksiyonlar Portu

P3, 8051’in en “yetenekli” portudur. Her biti, standart I/O işlevi yanı sıra özgün bir ikincil fonksiyon taşır. Bu sayede mikrodenetleyici; seri haberleşme, harici kesmeler, zamanlayıcı darbe girişleri ve harici hafıza kontrol sinyallerini yalnızca P3 pinleri üzerinden yönetebilir.

 

Pin İsim İkincil Fonksiyon
P3.0 RxD Seri haberleşme — veri giriş pini
P3.1 TxD Seri haberleşme — veri çıkış pini
P3.2 INT0 Harici kesme 0 / T/C-0 start-stop
P3.3 INT1 Harici kesme 1 / T/C-1 start-stop
P3.4 T0 T/C-0 için harici darbe girişi
P3.5 T1 T/C-1 için harici darbe girişi
P3.6 WR Harici hafızaya yazma işareti
P3.7 RD Harici hafızadan okuma işareti

 

P3.0 / P3.1 ile Seri Haberleşme — Kavramsal Örnek

; 8051 Assembly Kodu
; Seri port başlatma (9600 baud, 12 MHz kristal)
ORG     0000h
 
    MOV     SCON,  #52h  ; Mod 1 (8-bit UART), REN=1 (alım aktif)
    MOV     TMOD,  #20h  ; T1 → Mod 2 (otomatik yükleme)
    MOV     TH1,   #0FDh ; 9600 baud için yükleme değeri
    SETB    TR1          ; T1’i başlat
 
; Tek karakter gönder: ASCII “A” = 41h
GONDER:
    MOV     SBUF, #41h   ; Gönderi tamponuna “A” yaz
BEKLE:
    JNB     TI, BEKLE    ; Gönderim bitmedi mi? Bekle
    CLR     TI           ; Gönderim bayrağını sıfırla
    SJMP    $
 
END

 

Bölüm 5 — Harici Hafıza Erişim Pinleri

8051’in dahili program ve veri hafızası sınırlıdır. Daha büyük programlar ya da daha fazla veri alanı gerektiğinde harici hafıza entegreleri bağlanır. Bu erişimi üç özel pin yönetir:

 

5.1  ALE/PROG — Adres Kilit Etkinleştirme

ALE (Address Latch Enable), P0 pinleri üzerinden çıkan düşük adres baytını (A0–A7) dış bir latch entegresine (ör. 74LS373) kilitlemek için kullanılır. Her makine çevriminde ALE periyodik olarak yüksek gönderilir.

 

5.2  PSEN — Program Deposu Etkinleştirme

PSEN (Program Store Enable), harici program belleğinden komut okunurken aktif olur. EA/VPP = 0 iken 8051, komutları dahili ROM yerine harici ROM’dan okur; bu esnada PSEN pini düşük seviyeye çekilerek harici ROM’un çıkış tamponlarını aktif eder.

 

5.3  EA/VPP — Harici Erişim

Bu pin, 8051’in program kodunu nereden okuyacağını belirler:

  • [object Object] Dahili ROM kullanılır. Standart kullanım budur.
  • [object Object] Tüm kod harici ROM’dan okunur.

⚠ Dikkat: EA/VPP pini asla boşta bırakılmamalıdır. Mutlaka Vcc veya GND’e bağlanmalıdır; aksi takdirde mikrodenetleyici düzensiz çalışır.

 

Bölüm 6 — Port Okuma ve Yazma Komutları

8051’de bir port pinine veri yazarken ya da okurken iki farklı davranış ortaya çıkabilir. Bunu anlamak, özellikle Oku/Değiştir/Yaz komutlarında kritik önem taşır.

 

6.1  Pin Okuma Komutları — Fiziksel Pinden Okur

Bu komutlar çalıştığında, portun fiziksel (elektriksel) durumu okunur. Yani pin üzerindeki gerçek voltaj seviyesi alınır. Dışarıdan bir giriş sinyali okumak için bunları kullanırsınız.

 

Komut Açıklama Örnek
MOV A, Px Port değerini A yazmaçına kopyala MOV A, P1
JNB Px.y, <adres> Bit 0 ise belirtilen adrese atla JNB P1.2, BUTON_BASILI
JB  Px.y, <adres> Bit 1 ise belirtilen adrese atla JB  P3.2, KESME_GELDI
MOV C, Px.y Pin durumunu Carry bayrağına aktar MOV C, P2.0

 

Buton Okuma Örneği

P1.2’ye bağlı bir butonu (aktif-düşük) okuyan ve P1.0 LED’ini kontrol eden kod:

 

; 8051 Assembly Kodu
; P1.2 butonu → P1.0 LED kontrolü
; Buton basılıyken LED yanar (aktif-düşük mantık)
ORG     0000h
 
DONGU:
    JNB     P1.2, LED_YAK    ; P1.2 = 0 ise buton basılı → LED yak
    SETB    P1.0              ; Buton basılı değil → LED söndür (1 = söner)
    SJMP    DONGU
 
LED_YAK:
    CLR     P1.0              ; LED yak (0 = yanar)
    SJMP    DONGU
 
END

 

6.2  Oku/Değiştir/Yaz (Read-Modify-Write) Komutları

Bu komutlar çok farklı bir şekilde çalışır. Portun fiziksel pinini değil, dahili latch (tutucu) değerini okurlar; işlem yapar ve sonucu tekrar latch’e yazarlar. Tüm bu adımlar donanım tarafından otomatik gerçekleştirilir.

Bu ayrım neden önemlidir? Düşünün: pine dışarıdan bir yük bağlıysa, latch değeri ile fiziksel pin değeri farklı olabilir. Pin okuma komutları bu dış yükten etkilenirken, Oku/Değiştir/Yaz komutları latch’teki değeri baz alır; dolayısıyla dış yükten bağımsız çalışır.

 

Komut İşlem Örnek
ANL Px, a Lojik VE (AND) ANL P1, A
ORL Px, a Lojik VEYA (OR) ORL P2, #55h
XRL Px, a Lojik ÖZEL-VEYA (XOR) XRL P3, #0AAh
CPL Px.x Biti tersle (Complement) CPL P1.3
SETB Px.y Belirtilen biti 1 yap SETB P0.3
CLR  Px.y Belirtilen biti 0 yap CLR  P3.6
INC  Px Port değerini 1 artır INC  P2
DEC  Px Port değerini 1 azalt DEC  P3
DJNZ Px, <adres> Azalt, sıfır değilse atla DJNZ P1, DONGU
JBC  Px.x, <adres> Bit=1 ise atla, sonra biti sıfırla JBC  P2.0, DEVAM

 

6.3  ANL Komutu — Detaylı İnceleme

ANL komutunun iki farklı kullanımı, Oku/Değiştir/Yaz mantığını mükemmel biçimde gösterir:

 

ANL P1, A  →  P1 hedef operand

Bu kullanımda donanım şu adımları sırayla gerçekleştirir:

  • P1 latch’inin mevcut değerini oku.
  • Akümülatördeki (A) değer ile AND işlemi yap.
  • Sonucu P1 latch’ine geri yaz.

 

ANL A, P1  →  P1 kaynak operand

Bu kullanımda ise P1’in fiziksel pin değeri okunur; AND işlemi yapılır ve sonuç yalnızca A yazmaçına yazılır. P1 latch’i değişmez.

 

; 8051 Assembly Kodu
; P1’in yalnızca üst nibleini (4-7. bitler) koru, alt nibbleyi temizle
; Önce: P1 = 1011 1101
; Maske: #F0h = 1111 0000
; Sonra: P1 = 1011 0000
 
ORG     0000h
    ANL     P1, #0F0h   ; P1 AND 11110000 → alt 4 bit sıfırlandı
    SJMP    $
END

 

6.4  3 Durumlu Buffer (3-State Buffer)

8051’de kullanılan tampon (buffer) yapısı 3 durumludur (tri-state). Kontrol sinyali (c) ile çıkış aktif veya yüksek empedanslı duruma getirilebilir:

 

Kontrol (c) Giriş (x) Çıkış (y)
c = 1 1 1 — İletim aktif
c = 1 0 0 — İletim aktif
c = 0 * (fark etmez) Z∞ — Yüksek empedans (devre dışı)

 

Yüksek empedans durumu (Z∞), çıkışın ne Lojik 0 ne de Lojik 1 olduğu, tamamen elektriksel olarak kopuk göründüğü bir durumdur. Bu özellik, birden fazla cihazın aynı veri yolunu paylaştığı sistemlerde çakışmayı önler.

 

Bölüm 7 — ADuC841: Gelişmiş Bir 8051 Türevi

ADuC841, Analog Devices firmasının geliştirdiği, standart 8051 mimarisi üzerine inşa edilmiş gelişmiş bir mikrodenetleyicidir. 52 pinlik PQFP gövdesiyle standart 8051’den 12 fazla pine sahiptir.

 

7.1  Ekstra Pinlerin Dağılımı

ADuC841’deki 12 ilave pinin 6 tanesi, entegrenin ilave çevre birimlerine (DAC0, DAC1, SDATA, MOSI, CREF, VREF) ait giriş/çıkış uçlarıdır. Diğer 6 tanesi ise bu çevre birimlerinin besleme uçlarını (AVDD, AGND, DVDD, DGND) oluşturur.

 

7.2  8051’den Farkları

ADuC841’in temel farklılıkları şöyle özetlenebilir:

  • [object Object] Standart 8051 ile aynı şekilde kullanılır; ancak P2 ve P3’e ek alternatif fonksiyonlar eklenmiştir.
  • [object Object] ADuC841’de P1 portunda önemli bir değişiklik yapılmıştır: port mimarisindeki değişiklik nedeniyle P1 pinleri dijital çıkış olarak KULLANILAMAZ. P1 pinleri yalnızca analog giriş kanalları (ADC0–ADC6) ve T/C-2 kontrol girişleri olarak çalışır.
  • [object Object] Çok kanallı, yüksek hassasiyetli bir analog-dijital çevirici içerir.
  • [object Object] İki bağımsız dijital-analog çevirici sunar.

 

⚠ Dikkat: ADuC841 kullanırken P1 portunu dijital I/O olarak yapılandırmaya çalışmayın. Bu port yalnızca analog amaçlıdır.

 

Bölüm 8 — Kapsamlı Assembly Örneği: Sayaç ile LED Çubuğu

Bu son bölümde öğrendiğimiz her şeyi bir araya getiren bütünleşik bir örnek sunacağız. Amaç, P1 portuna bağlı 8 LED’i ikili sayaç (binary counter) olarak kullanmak; her saniyede bir saymak ve P3.2’deki bir buton ile sayacı sıfırlamaktır.

 

Devre Bağlantısı

  • P1.0 – P1.7: 8 adet LED (aktif-düşük, 470 Ω seri direnç ile)
  • P3.2 (INT0): Sıfırlama butonu (aktif-düşük, pull-up dahili)
  • Kristal: 12 MHz

 

; 8051 Assembly Kodu
; ═══════════════════════════════════════════════════════════
; 8051 İkili Sayaç — P1 LED çubuğu, P3.2 buton sıfırlama
; Kristal: 12 MHz  |  1 saniye gecikme ≈ 250×250×16 döngü
; ═══════════════════════════════════════════════════════════
    ORG     0000h
    AJMP    BASLA          ; Reset vektöründen atla
 
    ORG     0030h          ; Ana program
BASLA:
    MOV     P1, #00h       ; P1 = 0 → tüm LEDler başlangıçta söner
    MOV     R2, #00h       ; Sayaç değeri = 0
 
ANA_DONGU:
    MOV     P1, R2         ; Sayaç değerini LED portuna yaz
    ACALL   BIR_SANIYE     ; 1 saniye bekle
 
    JNB     P3.2, SIFIRLA  ; Buton basılı (0) → sıfırla
 
    INC     R2             ; Sayacı artır
    CJNE    R2, #100, ANA_DONGU  ; 100’e kadar say, sonra tekrar başla
    MOV     R2, #00h       ; 100 = sıfırla
    SJMP    ANA_DONGU
 
SIFIRLA:
    MOV     R2, #00h       ; Sayacı sıfırla
    MOV     P1, #00h       ; LEDleri söndür
    ACALL   BIR_SANIYE     ; Buton debounce (titreme önleme)
    SJMP    ANA_DONGU
 
; ── 1 Saniye Gecikme Alt Programı ──────────────────────
; 12 MHz @ 1 makine çevrimi = 1 µs
; 250 × 250 × 16 µs ≈ 1.000.000 µs = 1 saniye
BIR_SANIYE:
    MOV     R0, #16        ; Dış döngü 16 kez
D1: MOV     R1, #250       ; Orta döngü 250 kez
D2: MOV     R3, #250       ; İç döngü 250 kez
D3: DJNZ    R3, D3         ; İç döngü
    DJNZ    R1, D2         ; Orta döngü
    DJNZ    R0, D1         ; Dış döngü
    RET
 
    END

 

Bu örnekte öğrendiklerimizin şu kısımlarını kullandık:

  • [object Object] — Port yazma: sayaç değerini LED portuna aktar
  • [object Object] — Pin okuma: buton durumunu fiziksel pinden oku
  • [object Object] — Sayacı artır
  • [object Object] — Karşılaştır ve atla
  • [object Object] — Gecikme döngüsü için sayaçlı atlama

 

Özet: 8051 Portlarının Karşılaştırması

Port Pull-up Harici Pull-up? İkincil Fonksiyon
P0 YOK (Open-Drain) Evet, zorunlu AD0–AD7 (Adres/Veri)
P1 DAHİLİ Hayır Yok (salt I/O)
P2 DAHİLİ Hayır A8–A15 (Yüksek adres)
P3 DAHİLİ Hayır UART, INT, Timer, WR, RD

 

— Gömülü Sistem Tasarımı Serisi —

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu