Gömülü Sistemler - I / O Programlama
8051'de G / Ç işlemleri dört bağlantı noktası ve 40 pim kullanılarak yapılır. Aşağıdaki pim şeması 40 pinin ayrıntılarını gösterir. G / Ç çalışma bağlantı noktası, her bağlantı noktasının 8 iğneye sahip olduğu 32 iğneye sahiptir. Diğer 8 pin V cc , GND, XTAL1, XTAL2, RST, EA (bar), ALE / PROG (bar) ve PSEN (bar) olarak adlandırılır.
40 Pinli PDIP'dir (Plastik Çift Sıralı Paket)
Note- Bir DIP paketinde, IC'nin ortasındaki kesikten ilk pimi ve son pimi tanıyabilirsiniz. İlk pim bu kesim işaretinin sol ve son pin (yani 40 üzerindedir inci bu durumda pin) kesilmiş işaretinin sağında olduğunu.
G / Ç Bağlantı Noktaları ve İşlevleri
Dört bağlantı noktası P0, P1, P2 ve P3, her biri 8 pim kullanır ve bunları 8 bit bağlantı noktası yapar. SIFIRLAMA üzerine, tüm portlar giriş portları olarak kullanılmaya hazır olarak yapılandırılır. İlk 0 bir porta yazıldığında, bir çıktı haline gelir. Bunu bir giriş olarak yeniden yapılandırmak için, bir bağlantı noktasına bir 1 gönderilmelidir.
Port 0 (Pin No 32 - Pin No 39)
8 iğneli (32-39). Giriş veya çıkış için kullanılabilir. P1, P2 ve P3 bağlantı noktalarından farklı olarak, normalde P0'ı 10K-ohm çekme dirençlerini açık bir tahliye olarak giriş veya çıkış bağlantı noktası olarak kullanmak için bağlarız.
Aynı zamanda hem adres hem de veri olarak kullanılmasına izin veren AD0-AD7 olarak adlandırılmıştır. 8031 (yani ROMless Chip) durumunda, harici ROM'a erişmemiz gerektiğinde, P0 hem Adres hem de Veri Yolu için kullanılacaktır. ALE (Pin no 31), P0'ın adres veya veri olup olmadığını gösterir. ALE = 0 olduğunda, D0-D7 verilerini sağlar, ancak ALE = 1 olduğunda, A0-A7 adresine sahiptir. Harici bellek bağlantısının mevcut olmaması durumunda, P0 harici olarak 10K ohm kaldırma direncine bağlanmalıdır.
MOV A,#0FFH ;(comments: A=FFH(Hexadecimal i.e. A=1111 1111)
MOV P0,A ;(Port0 have 1's on every pin so that it works as Input)
Bağlantı Noktası 1 (Pin 1-8)
8 bitlik bir bağlantı noktasıdır (pin 1'den 8'e kadar) ve giriş veya çıkış olarak kullanılabilir. Zaten dahili olarak bağlı oldukları için kaldırma dirençleri gerektirmez. Sıfırlamanın ardından, Bağlantı Noktası 1 bir giriş bağlantı noktası olarak yapılandırılır. Aşağıdaki kod alternatif 55H ve AAH değerlerini Port 1'e göndermek için kullanılabilir.
;Toggle all bits of continuously
MOV A,#55
BACK:
MOV P2,A
ACALL DELAY
CPL A ;complement(invert) reg. A
SJMP BACK
Bağlantı Noktası 1 bir çıkış bağlantı noktası olarak kullanılmak üzere yapılandırılmışsa, bunu tekrar bir giriş bağlantı noktası olarak kullanmak için, aşağıdaki kodda olduğu gibi tüm bitlerine 1 yazarak programlayın.
;Toggle all bits of continuously
MOV A ,#0FFH ;A = FF hex
MOV P1,A ;Make P1 an input port
MOV A,P1 ;get data from P1
MOV R7,A ;save it in Reg R7
ACALL DELAY ;wait
MOV A,P1 ;get another data from P1
MOV R6,A ;save it in R6
ACALL DELAY ;wait
MOV A,P1 ;get another data from P1
MOV R5,A ;save it in R5
Bağlantı Noktası 2 (21 ile 28 arasındaki Pimler)
Port 2 toplam 8 pin (21'den 28'e kadar pinler) kaplar ve hem giriş hem de çıkış işlemleri için kullanılabilir. Tıpkı P1 (Port 1) gibi, P2 de zaten dahili olarak bağlı oldukları için harici Pull-up dirençleri gerektirmez. Harici bellek için 16 bitlik adres sağlamak için P0 ile birlikte kullanılmalıdır. Dolayısıyla, pim diyagramında gösterildiği gibi (A0 – A7) olarak da adlandırılır. 8051 harici bir belleğe bağlandığında, üst 8 bitlik 16 bitlik adres için yol sağlar ve G / Ç olarak kullanılamaz. Sıfırlamanın ardından, Bağlantı Noktası 2 bir giriş bağlantı noktası olarak yapılandırılır. Aşağıdaki kod alternatif 55H ve AAH değerlerini port 2'ye göndermek için kullanılabilir.
;Toggle all bits of continuously
MOV A,#55
BACK:
MOV P2,A
ACALL DELAY
CPL A ; complement(invert) reg. A
SJMP BACK
Bağlantı Noktası 2 bir çıkış bağlantı noktası olarak kullanılmak üzere yapılandırılmışsa, bunu tekrar bir giriş bağlantı noktası olarak kullanmak için, aşağıdaki kodda olduğu gibi tüm bitlerine 1 yazarak programlayın.
;Get a byte from P2 and send it to P1
MOV A,#0FFH ;A = FF hex
MOV P2,A ;make P2 an input port
BACK:
MOV A,P2 ;get data from P2
MOV P1,A ;send it to Port 1
SJMP BACK ;keep doing that
Bağlantı Noktası 3 (10 ile 17 arasındaki Pimler)
Ayrıca 8 bitliktir ve Giriş / Çıkış olarak kullanılabilir. Bu bağlantı noktası son derece önemli bazı sinyaller sağlar. P3.0 ve P3.1 sırasıyla RxD (Alıcı) ve TxD'dir (Verici) ve toplu olarak Seri İletişim için kullanılır. Harici kesmeler için P3.2 ve P3.3 pinleri kullanılır. Sırasıyla T0 ve T1 zamanlayıcıları için P3.4 ve P3.5 kullanılır. P3.6 ve P3.7 Yazma (WR) ve Okuma (RD) pinleridir. Bunlar aktif düşük pinlerdir, yani kendilerine 0 verildiğinde aktif olacakları anlamına gelir ve 8031 tabanlı sistemlerde Harici ROM'a Okuma ve Yazma işlemleri sağlamak için kullanılır.
P3 Bit | Fonksiyon | Toplu iğne |
---|---|---|
P3.0 | RxD | 10 |
P3.1 < | TxD | 11 |
P3.2 < | INT0 tamamlayıcısı | 12 |
P3.3 < | INT1 | 13 |
P3.4 < | T0 | 14 |
P3.5 < | T1 | 15 |
P3.6 < | WR | 16 |
P3.7 < | RD tamamlayıcısı | 17 |
Bağlantı Noktası 0 ve Bağlantı Noktası 2'nin Çift Rolü
Dual role of Port 0- Port 0, hem veri hem de adres işleme için kullanılabileceğinden AD0 – AD7 olarak da adlandırılır. 8051'i harici belleğe bağlarken, Port 0 hem adres hem de veri sağlayabilir. 8051 mikro denetleyici, pinleri kaydetmek için girişi adres veya veri olarak çoklar.
Dual role of Port 2- G / Ç olarak çalışmanın yanı sıra, Bağlantı Noktası 0, Bağlantı Noktası 0 ile birlikte harici bellek için 16 bitlik adres veriyolu sağlamak için de kullanılır. A0 – A7. Başka bir deyişle, bir 8051 maksimum 64KB'ye kadar çıkabilen bir harici belleğe (ROM) bağlandığında ve 216 = 64KB bildiğimiz için 16 bit adres veriyolu ile bunun mümkün olduğunu söyleyebiliriz. Port2, 16 bitlik adresin üst 8 biti için kullanılır ve G / Ç için kullanılamaz ve bu, harici ROM'un herhangi bir Program kodunun adreslenmesinin yoludur.
Pinlerin Donanım Bağlantısı
Vcc - Pin 40, Çipe besleme sağlar ve +5 V'tur.
Gnd - Pim 20, Referans için toprak sağlar.
XTAL1, XTAL2 (Pin no 18 & Pin no 19)- 8051 çip üzerinde osilatöre sahiptir, ancak onu çalıştırmak için harici saat gerektirir. Çipin XTAL1 ve XTAL2 pini arasına bir kuvars kristali bağlanır. Bu kristal ayrıca istenen frekansta bir sinyal oluşturmak için 30pF'lik iki kapasitör gerektirir. Her kondansatörün bir tarafı toprağa bağlıdır. 8051 IC çeşitli hızlarda mevcuttur ve hepsi bu Quartz kristaline bağlıdır, örneğin 20 MHz'lik bir mikro denetleyici, 20 MHz'den fazla olmayan bir frekansa sahip bir kristal gerektirir.
RST (Pin No. 9)- Giriş pinidir ve aktif Yüksek pintir. Bu pin üzerine yüksek darbe uygulandığında, yani 1, mikrodenetleyici tüm aktiviteleri sıfırlayacak ve sonlandıracaktır. Bu süreç olarak bilinirPower-On Reset. Açılışta sıfırlamanın etkinleştirilmesi, kayıt defterindeki tüm değerlerin kaybolmasına neden olacaktır. Tüm 0'lara bir program sayacı ayarlayacaktır. Geçerli bir Sıfırlama girişi sağlamak için, yüksek darbenin, düşük olmasına izin verilmeden önce en az iki makine çevrimi boyunca yüksek olması gerekir; bu, kapasitör değerine ve şarj etme hızına bağlıdır. (Machine Cycle tek bir komutun yürütülmesi sırasında ihtiyaç duyduğu minimum frekans miktarıdır).
EA or External Access (Pin No. 31)- Bu bir giriş pinidir. Bu pim aktif bir düşük pindir; düşük bir darbe uygulandığında, etkinleştirilir. Çip ROM sahip olan mikro-(8051/52) olması durumunda, EA (bar) pim V bağlanır cc . Ancak yonga üzerinde ROM'u olmayan bir 8031 mikro denetleyicide, kod harici bir ROM'da saklanır ve ardından mikro denetleyici tarafından alınır. Bu durumda, program kodunun harici olarak depolandığını belirtmek için (31 numaralı pin) EA'yı Gnd'ye bağlamalıyız.
PSEN or Program store Enable (Pin No 29)- Bu aynı zamanda aktif bir düşük pindir, yani düşük bir darbe uygulandıktan sonra etkinleştirilir. Program kodunun harici ROM'da saklanmasına izin vermek için 8031 tabanlı (yani ROMLESS) Sistemlerde EA pini ile birlikte kullanılan bir çıkış pinidir.
ALE or (Address Latch Enable)- Bu bir Çıkış Pinidir ve yüksek aktiftir. Özellikle 8031 IC'nin harici belleğe bağlanması için kullanılır. P0 pinlerinin Adres veriyolu mu yoksa Veri yolu olarak mı kullanılacağına karar verilirken kullanılabilir. ALE = 1 olduğunda, P0 pinleri Veri yolu olarak çalışır ve ALE = 0 olduğunda, P0 pinleri Adres veriyolu olarak işlev görür.
G / Ç Bağlantı Noktaları ve Bit Adreslenebilirliği
8051 için kod yazarken en çok kullanılan 8051 özelliğidir. Bazen portun 8 bitin tamamı yerine yalnızca 1 veya 2 bitine erişmemiz gerekir. 8051, bağlantı noktalarının ayrı bitlerine erişim yeteneği sağlar.
Bir bağlantı noktasına tek bit şeklinde erişirken, "SETB X. Y" sözdizimini kullanırız burada X, bağlantı noktası numarasıdır (0 ila 3) ve Y, D0-D7 veri bitleri için bir bit numarasıdır (0 ila 7) D0, LSB'dir ve D7, MSB'dir. Örneğin, "SETB P1.5" bağlantı noktası 1'in yüksek bit 5'ini ayarlar.
Aşağıdaki kod, bit P1.2'yi sürekli olarak nasıl değiştirebileceğimizi gösterir.
AGAIN:
SETB P1.2
ACALL DELAY
CLR P1.2
ACALL DELAY
SJMP AGAIN
Tek Bitlik Talimatlar
Talimatlar | Fonksiyon |
---|---|
SETB biti | Bit'i ayarlayın (bit = 1) |
CLR biti | biti temizle (bit = 0) |
CPL biti | biti tamamlayın (bit = NOT bit) |
JB bit, hedef | bit = 1 ise hedefe atla (bit ise atla) |
JNB biti, hedef | bit = 0 ise hedefe atla (bit yoksa atla) |
JBC biti, hedef | bit = 1 ise hedefe atla, biti temizle (bit ise atla, sonra sil) |