Mikrobilgisayar Mimarisi ve Programlama 2. Hafta Bellek Birimleri ve Programlamaya Giriş Doç. Dr. Akif KUTLU Ders web sitesi: http://www.8051turk.com/ http://microlab.sdu.edu.tr
Bellekler Bellekler 0 veya 1 değerini alan bitlerin saklanabildiği entegre devrelerdir D in D Q D out WR EN RD 1 Bit (0 veya 1) saklayabilen temel bellek ünitesi: D Flip Flop D Flip Flop için doğruluk tablosunu hatırlayınız. Mikrobilgisayar Mimarisi ve Programlama 2
Bellek ünitelerine erişim Satır (Adres) Sütun (Veri) 1x1 EN D in WR EN D Q D out 1 bitlik hafıza hücresi RD 1x2 EN D7 D6 D5 D4 D3 D2 D1 D0 1x8 EN 1 Bayt A0? 2 Bayt 2x8 Mikrobilgisayar Mimarisi ve Programlama 3
Mikroişlemci Sayı sistemi RAM/ROM ADDRES Bellek Hücreleri 0 0 0 0 10110111 0 0 0 1 01110001 0 0 1 0 10001001 0 0 1 1 00001011 0 1 0 0 01000100 0 1 0 1 00000000 0 1 1 0 00001011 0 1 0 0 01110001 0 1 0 1 00001011 Kullanılan tüm sayılar ikilik sayı sistemindedir, neden? Donanımın daha basit ve maliyetin az olması Bilgi depolamanın basitliği Mikrobilgisayar Mimarisi ve Programlama 4
Örnek Soru: 8 adet bellek ünitesine erişebilmek için kaç adet Adres hattına ihtiyaç duyulur? 2 n =8 n=? A2 A1 A0 3 8 kod çözücü A2A1A0 1 1 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 Bayt 7 Bayt 6 Bayt 5 Bayt 4 Bayt 3 Bayt 2 Bayt 1 Bayt 0 Soru: 65536 adet bellek ünitesine erişebilmek için kaç adet Adres hattına ihtiyaç duyulur? 2 n =65536 n=16 (A15...A0) Mikrobilgisayar Mimarisi ve Programlama 5
Bellek Türleri Mikroişlemci iç bellek türleri (8051) Kayıtçılar (registers) Akümülatör (A) B Kayıtçısı R0,R1,R2,R3,R4,R5,R6,R7 ( Bank0..Bank3 ) SP (Yığın İşaretçisi) PSW (Program Durum Kaydedicisi) DPTR (16-bit) PC (16-bit) Diğer özel fonkisyon Kayıtçıları (Mikrodenetleyici) RAM ve ROM (Mikrodenetleyici) Dış Bellek türleri RAM ve ROM ile türevleri Manyetik disk, teyp CD vs. Mikrobilgisayar Mimarisi ve Programlama 6
CPU Sadeleştirilmiş iç yapısı (8051) Komut Kayıtçısı (Instruction Register) IR Komut Çözme Ve Kontrol Ünitesi CPU Program Sayıcı (Program Counter) PC Kayıtçılar (Registers) Aritmetik ve Lojik işlem Ünitesi Mikrobilgisayar Mimarisi ve Programlama 7
Mikroişlemcilerde Temel İşlevler Komut Okuma Komut Çözme Çalıştırma Giriş işlemleri Çıkış işlemleri Mikrobilgisayar Mimarisi ve Programlama 8
Komut Yapsı Mnemonics Kayıtçı Adı İvedi Adresleme MOV A, #55h Anlamı: A 55h 0111 0100 + 0101 0101 (74) + (55) 2 Byte Opcode Operand Mikrobilgisayar Mimarisi ve Programlama 9
Örnek 8051 Komutları 8051 komut setleri bayt adedine göre üçe ayrılır: Tek baytlık komutlar İki baytlık komutlar Üç baytlık komutlar SORU: Komutun bayt sayısı çalıştırma hızını etkiler mi? Mnemonics Opcode + operand Anlam Cycle Bayt Adedi NOP 0000 0000 İşlem Yok 1 1 INC A 0000 1000 A=A+1 1 1 MOV A,#55h 0111 0100 + 0101 0101 (74 55) A 55h 1 2 MOV A,#0xAA 0111 0100 + 1010 1010 (74 AA) A AAh 1 2 MOV DPTR,#55AAh 1001 0000 + 0101 0101 (90 55 AA) DPTR 55AAh 2 3 Tüm komutların listesi için: philips_80c51 Family Programmer's Guide.pdf Mikrobilgisayar Mimarisi ve Programlama 10
CPU Komut İşleme Senaryosu (MOV A,#55h) 74h MOV A, # 55h Bayt 65535 Bayt 3 Bayt 2 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 FFFF 0003 0002 0001 0000 Mikrobilgisayar Mimarisi ve Programlama 11
CPU Komut İşleme Senaryosu (MOV Program A,#55h) Sayıcı Operand adresi adres Opcode un adresini yoluna verilir tutar CPU PC Adres Yolu Adres Adres yolu na verilir Veri Yolu IR Bayt 65535 FFFF Komut Çözme Ve Kontrol Ünitesi Kayıtçılar (Registers) Opcode çözülür ve MOV A, olduğu anlaşılır Komut İşlemci içindeki Komut Kaydedicisine aktarılır. A Operanda ulaşılır ve bilgi Veri yolu na iletilir Veri yolundaki bilgi A kayıtçısına gönderilir Bayt 3 Bayt 2 0 1 0 1 0 1 0 1 0 1 1 1 74h 0 1 0 0 55h Mikrobilgisayar Mimarisi ve Programlama 12 0003 0002 0001 0000 Opcode a ulaşılır ve Kod bilgisi Veri yolu na iletilir
KAYITÇILAR Mikrobilgisayar Mimarisi ve Programlama 13
Accumulator, A Kayıtçısı Verilerin bellek ve kayıtçılar arası transferinde Veri üzerinde mantıksal ve aritmetik işlemlerin gerçekleştirilmesinde kullanılır 8 Bit Uzunluğundadır Mikrobilgisayar Mimarisi ve Programlama 14
B Kayıtçısı Geçici verilerin depolandığı bir kaydedicidir MOV B, A ;B A (2 byte) MOV B,#55 ;B 55 MUL AB ; A ve B kaydedicilerini çarp Sonuc 16-bit: Sonuc_L=A, Sonuc_H=B DIV AB ; A yı B ye böl Bölüm=A, Kalan=B Mikrobilgisayar Mimarisi ve Programlama 15
Program Status Word (PSW) BIT SEMBOL ADRES BİT TANIMI PSW.7 CY D7H Elde bayrağı PSW.6 AC D6H Yardımcı elde bayrağı PSW.5 F0 D5H Bayrak 0 PSW.4 RS1 D4H Bank seçme 1 PSW.3 RS0 D3H Bank seçme 0 00 = bank 0; adres 00H-07H 01 = bank 1; adres 08H-0FH 10 = bank 2; adres 10H-17H 11 = bank 3; adres 18H-1FH PSW.2 OV D2H Taşma bayrağı PSW.1 - D1H PSW.0 P D0H Çift eşlik biti (Even Parity bit) Mikrobilgisayar Mimarisi ve Programlama 16
Program Status Word (PSW) Aritmetik işlemler sonucundaki değişen bayraklar CY: Carry Flag (Elde Bayrağı) Aritmetik işlemlerde bir elde ortaya çıktığında kurulur AC:Auxillary Carry (Harici Elde Bayrağı) D3 bitinden D4 bitine elde geçtiğinde kurulur, BCD işlemlerde kullanılır P: Parity (Eşlik biti) Çift eşlik (even) biti P=1, Akümülatör tek sayıda birlere sahipse Mikrobilgisayar Mimarisi ve Programlama 17
Örnek MOV A,#12h ADD A,#3Fh Toplama örneği 12 0001 0010 3F 0011 1111 + + 5 1 0101 0001 CY = 0 AC = 1 P = 1 Mikrobilgisayar Mimarisi ve Programlama 18
Kayıtçı Deposu (R0..R7) R0 dan R7 ye kadar toplam 8 kaydedici MOV A,R0 ;R0 kaydedicisini A kayıtçısına kopyala (1 byte) R0-R7 kaydedici grubları (Bank0..Bank3) RS0 PSW.3 RS1 PSW.4 RS1 RS0 R-BANK 0 0 Bank 0 0 1 Bank 1 1 0 Bank 2 MOV PSW, #18h ; Bank 3 seçildi MOV PSW, #08h ; Bank 1 seçildi 1 1 Bank 3 4 kayıtçı deposu ardışık adreslerdedir 4 kayıtçı deposu toplam 32byte Bank 0 varsayılan (Reset sonrası seçilen) banktır. Mikrobilgisayar Mimarisi ve Programlama 19
Örnek Bayt Adres FF F0 Bit Adres F7 F6 F5 F4 F3 F2 F1 F0 B MOV A,R7 SETB RS0 SETB RS1 MOV A,R7 E0 D0 E7 E6 E5 E4 E3 E2 E1 E0 D7 D6 D5 D4 1 D3 1 D2 - D0 ACC PSW = MOV A,0x1F MOV A,R7 (1 byte) MOV A,0x07 (2 byte) 1F 18 17 10 0F 08 07 00 BANK 3 BANK 2 BANK 1 İlk Kayıtçı Bankası R0-R7 Mikrobilgisayar Mimarisi ve Programlama 20
Veri İşaretçisi (DPTR) 8051 2 adet 16-bit kaydedici içerir DPTR 16-bittir Harici belleğin veya kod alanının Adresini tutar Harici bellekten veya kod alanından veri transfer için kullanılır 16-bit veri depolama için de kullanılabilir Başvuru tablolarında (Look-up Tables) çok kullanışlıdır Dolaylı Adresleme MOV DPTR, #0xFFAA MOVX A, @DPTR MOVC A,@A+DPTR ; DPTR FFAAh ; ACU RAM (FFAA) Mikrobilgisayar Mimarisi ve Programlama 21
Program Sayacı (PC) PC her zaman bir sonraki erişilecek komut adresini tutar 16-bit Uzunluğundadır Bellekten getirilen bir komuttan (1 veya daha fazla bayt) hemen sonra, bir sonraki komutun adresine yükseltilir Sadece MOVC A,@A+PC komutunda kullanılır Sadece okunabilir özelliktedir Mikrobilgisayar Mimarisi ve Programlama 22
SP (Yığın İşaretçisi, Stack Pointer) Yığın hafızası FILO tipindedir 8051 de yığın adresi artarak büyür (düşük değerli adresten, yüksek değerli adrese doğru) SP, yığındaki son kullanılan adresi gösterir Pop veriyi alır daha sonra SP bir azalır PUSH SP yi artırır, yeni adrese veriyi kopyalar SP, Reset işleminden sonra 07 ye kurulur Bank 1,2 ve 3 yığının normal depo alanıdır SP, başka bir adrese yönlendirilebilir PUSH ACC ;Akümülatörü yığına kopyala Mikrobilgisayar Mimarisi ve Programlama 23
8051 Komut Seti-1 Veri Transfer Komutları mov, movc, movx, push, pop, xch, xchd Mantıksal İşlem Komutları anl, orl, xrl, clr, cpl, rl, rlc, rr, rrc, swap Aritmetik İşlem Komutları add, addc, subb, inc, dec, mul, div Program Kontrol Komutları jmp, ajmp, ljmp, sjmp, jc, jnc, jb, jnb, jbc, jz, jnz, acall, lcall, cjne, djnz, ret, reti NOP Mikrobilgisayar Mimarisi ve Programlama 24
Önemli Assembly programı yazarken: Bütün komutları hatırlamak zorunda değilsiniz Sadece komutları mantıksal gruplara böl Komut setini önünüze koyarak, yapılmak istenen işi hangisinin hangi komutun veya komut grubunun yaptığını tespit et Her komutun farklı kaydedici ile çalıştırılması mümkün değildir MOV A,@DPTR (DOĞRU) MOV R0, @DPTR (YANLIŞ) Mikrobilgisayar Mimarisi ve Programlama 25
Çalışma Soruları Mikroişlemcileri farklı açılardan gruplandırınız. 8051 de kullanılan genel kaydediciler hangileridir? Komut seti nedir? Assembly dilinin genel özellikleri nelerdir? Mikrobilgisayar Mimarisi ve Programlama 26
Mikrobilgisayar Mimarisi ve Programlama 27