Penjelasan memori program pada IC AT89C51

Pada gambar di bawah ditunjukan pemetaan bagian bawah dari memori progam. Setelah reset, CPU segera mengerjakan program mulai dari lokasi 0000h.



Sebagai mana di tunjukaan pada gambar di atas masing masing interupsi di simpan pada lokasi yang sudah tetap dalam memori program. Sebuah interupsi menyebabkan CPU melompat ke lokasi interupsi yang bersangkutan, yaitu letak dari subrutin layanan interupsi tersebut. Misalnya, external interrupt 0 disimpan pada lokasi 0003h, jika interupsi ini digunakan, maka layanan rutin interupsi ini harus di tuliskan pada lokasi ini, jika tidak, maka lokasi tersebut bisa di pakai sebagai memori program serbaguna (untuk keperluan lainya).

Lokasi lokasi layanan interupsi tersebut menempati lokasi lokasi dengan jarak 8-byte: 0003h untuk eksternal interrupt 0, 000Bh untuk timer 0, 0013h untuk external interrupt 1,001Bh untuk timer 1 dan seterusnya. Jika suatu rutin layanan interupsi sangat pendek (kurang dari 8-byte), maka seluruh rutin bisa di simpan pada lokasi yang bersangkutan ( sesuai interupsi yang di gunakan ). Jika terlalu pamjang ( lebih dari atau sama dengan 8-byte), maka harus di gunakan suatu perintah lompat ke lokasi rutin interupsi yang sebenarnya (di lokasi lain dalam memori program).

Alamat alamat yang paling bawah dari memori program dapat berbeda dalam flash on-chip maupun memori eksternal. Untuk melakukan hal ini lakukan pengkabelan pada pin EA atau external access ke Vcc (akses internal) atau GND (akses eksternal) sesuai dengan kebutuhan.

Misalnya, dalam AT89C51 dengan flash on-chip sebesar 4K byte, jika EA disambung ke Vcc, pengambilan (fetching) intruksi pada lokasi 0000h hingga 0FFFh untuk memori internal. Sedangkan pengambilan intruksi untuk memori eksternal pada lokasi 1000h hingga FFFFh. Pada AT89C52 (dengan flash sebesar 8k),jika EA=Vcc, Maka lokasi 0000h hingga 1FFFh menempati memori internal sedangkan lokasi 2000h hinggal FFFFh menempati memori eksternal.

Jika EA=GND, maka semua pengambilan intruksi langsung di lakukan pada memori eksternal. Tanda baca ke memori eksternal, PSEN digunakan untuk semua pengambilan program eksternal. Sedangkan pengaksesan intruksi pada memori internal tidak melibatkan PSEN.

Suatu konfigurasi perangkat keras untuk eksekusi program eksternal ditunjukan pada gambar di bawah. Terlihat bahwa 16 jalur I/O ( melalui port 0 dan 2 ) didedikasikan sebagai bus data maupun alamat. Port 0 sebagai bus/alamat yang di multipleks, yang mengirimkan byte rendah dari pencacah program (PCL, program counter low) sebagai suatu alamat kemudian berubah dalam kondisi mengambang (float) selama menunggu datang byte kode dari memori program (eksternal). Saat byte rendah pada pencacah program sah di P0, sinyal ALE (address lacth enable) meng-clock byte ini ke suatu pengunci alamat (address lacth).
Sementara itu, Port 2 mengirimkan byte tinggi dari pencacah program (PCH,Program Counter High). Kemudian PSEN memberikan data pada memori eksternal dan mimrokontroler membaca byte kode tersebut.



Alamat memori program panjangnya selalu 16-byte, walaupun demikian, jumlah memori program yang di gunakan bisa kurang dari 64K byte. Eksekusi program eksternal mengorbankan dua port 8-bit (P0 dan p2), karena kedua port tersebut berfungsi sebagai jalur pengalamatan dan atau pengiriman intruksi dari memori eksternal.

Comments