2.1. MIKROKONTROLER
Mikrokontroler sebagai suatu terobosan teknologi mikroprosesor dan mikrokomputer, hadir memenuhi kebutuhan pasar (market need) dan teknologi baru. Sebagai teknologi baru, yaitu teknologi semikonduktor dengan kandungan transistor yang lebih banyak namun hanya membutuhkan ruang kecil serta dapat diproduksi secara massal (dalam jumlah banyak) sehingga harganya menjadi lebih murah (dibandingkan mikroprosesor). Sebagai kebutuhan pasar, mikrokontroler hadir untuk memenuhi selera industri dan para konsumen akan kebutuhan dan keinginan alat-alat bantu dan mainan yang lebih baik dan canggih. Dengan alasan demikian mikrokontroler banyak digunakan oleh berbagai kepentingan untuk membuat suatu kreasi elektronik yang beraneka ragam.
2.1.1. ARSITEKTUR MIKROKONTROLER AT89C51
Blok diagram lengkap dari Mikrokontroler AT89C51 seri AT89 (Keluarga 51) Atmel akan diperlihatkan secara terang pada Gambar 2.1:
Untuk mengetahui bagian-bagian dari blok diagram diatas dapat dijelaskan sebagai berikut :
a. Register A
Register A (akumulator) yang menempati lokasi pada alamat Eoh digunakan sebagai register untuk penyimpanan data sementara dalam program, instruksinya mengacu sebagai register A.
b. Register B
Register B (lokasi Foh) digunakan selama operasi perkalian dan pembagian, untuk instruksi lain dapat diperlakukan sebagai register Scratch pad (papan coret-coret) lainnya.
c. Program Status Word (PSW)
Register PSW (lokasi Doh) mengandung informasi status program.
d. Stack Pointer
Register Stack Pointer (SP) pada lokasi 81h merupakan register dengan panjang 8-bit, digunakan dalam proses simpan dan ambil dari/ke stack. Nilainya akan dinaikkan sebelum data disimpan menggunakan intruksi PUSH dan CALL. Walau Stack bisa menempati lokasi dimana saja dalam RAM, register SP akan selalu diinisialisasikan ke 07h setelah adanya reset, hal ini menyebabkan stack berawal dilokasi 08h.
e. Data Pointer
Register Data Pointer atau DPTR mengandung DPTR untuk byte tinggi (DPH) dan byte rendah (DPL) yang masing-masing berada dilokasi 83h dan 82h, bahu-membahu membentuk register yang bisa menyimpan alamat 16 bit. Dapat dimanipulasi sebagai register 16-bit atau sebagai dua register 8-bit yang terpisah.
f. Port 0, Port 1, Port 2, dan Port 3
P0, P1, P2 dan P3 masing-masing menempati lokasi 80h, 90h, A0h dan b0h merupakan pengunci-pengunci (latches), yang digunakan untuk menyimpan data yang akan dibaca atau ditulis dari/ke port, masing-masing Port 0, Port 1, Port 2 dan Port 3.
g. Serial Data Buffer.
Serial data buffer (SBUF) pada lokasi 99h sebenarnya terdiri dari dua register yang terpisah yaitu register penyangga pengirim (transmit buffer) dan penyangga penerima (receive buffer). Pada saat data disalin ke SBUF, maka data sesungguhnya dikirim kepenyangga pengirim dan sekaligus mengawali transmisi data serial, sedangkan pada saat data disalin dari SBUF, maka sebenarnya data tersebut berasal dari penyangga penerima.
h. Timer Register
Pasangan register-register (THO, TL0) dilokasi 8Ch dan 8Ah, (TH1, TL1) dilokasi BDh dan 8Bh serta (TH2, TL2) dilokasi CDh dan CCh merupakan register-register pencacah 16-bit untuk masing-masing Timer 0, Timer 1 dan Timer 2.
i. Capture Register
Pasangan register (RCAP2H, RCHP2L) yang menempati lokasi CBh dan CAh merupakan register Capture untuk mode Timer 2 capture. Pada mode ini, sebagai tanggapan terjadinya suatu transisi sinyal dikaki (pin) T2EX (pada AT89C52/55), TH2 dan TL2 disalin masing-masing ke RCAP2H dan RCP2l. Timer 2 juga memiliki mode isi ulang otomatis 16-bit dan RCAP2H serta RCAP2L digunakan untuk menyimpan nilai isi ulang tersebut.
j. Control Register
Register-register IP, IE, TMOD, TCON, T2CON, T2MOD, SCON dan PCON berisi bit-bit kontrol dan status untuk sistem interupsi, Pencacah/Pewaktu dan port serial yang akan dijelaskan nanti.
2.1.2. ORGANISASI MEMORI AT89C51
Mikrokontroler AT89C51 memiliki ruang alamat memori data dan aktivitas yang terpisah. Pemisahan memori aktivitas dan data tersebut membolehkan memori data dapat diakses dengan alamat 8-bit, sehingga dapat dengan cepat dan mudah disimpan dan dimanipulasi oleh CPU 8-bit. Walaupun demikian, alamat memori data 16-bit bisa juga dihasilkan melalui register DPTR.
2.1.2.1 MEMORI PROGRAM.
Pada Gambar 2.2 dibawah ini ditunjukkan pemetaan pecahan bawah dari memori program. Setelah reset, CPU segera mengerjakan aktivitas mulai dari lokasi 0000h.
Ada Gambar disini
Sebagaimana ditunjukkan pada Gambar 2.2 diatas, masing-masing interupsi diletakkan pada lokasi yang sudah tetap dalam memori program. Sebuah interupsi menimbulkan CPU melompat ke lokasi interupsi yang bersangkutan, yaitu letak dari subrutin layanan interupsi tersebut. Misalnya, Eksternal interupsi 0 disimpan pada lokasi 0003h, jika interupsi digunakan, maka layanan rutin interupsi ini harus dituliskan pada lokasi ini, jika tidak, maka lokasi tersebut bisa digunakan sebagai memori aktivitas serba guna.
Untuk lebih terang perhatikan tabel berikut ini :
Lokasi-lokasi layanan interupsi tersebut menempati lokasi-lokasi dengan jarak 8-byte : 0003h untuk eksternal interupt 0, 000Bh untuk timer 0, 0013h, untuk Eksternal Interupt 1, 001Bh untuk timer 1 dan seterusnya. Jika suatu rutin layanan interupsi sangat pendek (kurang dari 8 byte), maka seluruh rutin bisa disimpan pada lokasi yang bersangkutan (sesuai dengan interupsi yang digunakan). Jika terlalu panjang (lebih atau sama dengan 8-byte), maka harus digunakan suatu perintah lompat ke lokasi rutin interupsi yang sebenarnya (dilokasi lain dalam memori program).
2.1.2.2 MEMORI DATA
Memori data dapat berupa memori data internal dan memori data eksternal. kita sanggup menentukan memori data eksternal hingga 64K byte. Alamat Alamat memori data eksternal bisa 1 atau 2 byte. Alamat satu byte sering digunakan untuk membantu satu atau lebih jalur I/O dalam penghalamanan RAM. Alamat dua byte sanggup digunakan dalam kasus jikalau byte alamat tinggi dikirim melalui port 2.
Memori data internal memiliki ruang memori dibagi menjadi tiga blok, yang dikenal sebagai 128 bawah (lower 128), 128 atas (upper 128) dan register fungsi khusus (Special Function Register = SFR).
Alamat memori data internal selalu 8-bit atau 1-byte, yang konsekuensinya hanya bisa mengalamati hingga 256 byte saja. Namun demikian, mode-mode pengalamatan RAM internal (faktanya) bisa mengakomodasi hingga 384-byte. Pengaksesan langsung (direct addressing) dengan alamat diatas 7Fh mengakses suatu memori, sedangkan pengaksesan tak langsung (indirect addressing) dengan alamat diatas 7Fh mengakses ruang memori lain yang berbeda. Sehingga terlihat 128 atas dan SFR menempati blok yang sama, 80h hingga FFh, walaupun secara fisik terpisah.
RAM Internal yang memiliki 128-byte dipetakan. 32 byte bawah dikelompokkan menjadi 4 bank dan 8 register (R0 hingga R7). Dua bit pada PWS (Program Status Word) digunakan untuk memilih kelompok register mana yang digunakan. Arsitektur ini membolehkan penggunaan ruang kode secara lebih efisien, karena instruksi-intruksi register lebih pendek dari pada instruksi-instruksi yang memakai pengalamatan langsung. 16 byte berikutnya, diatas bank-bank register membentuk suatu blok ruang memori yang bisa teralamati per bit. Kumpulan kode mikrokontroler ini mempunyai berbagai pilihan instruksi-instruksi bit tunggal dan instruksi-instruksi ini bisa secara eksklusif mengalamati 128 bit dalam area ini. Alamat-alamat bit ini yaitu 00h hingga 7Fh.
Semua byte yang berada didalam 128 bawah dapat diakses baik secara eksklusif maupun tidak langsung. Bagian 128 atas dari RAM hanya ada didalam piranti yang mempunyai RAM berukuran 256 byte.
2.1.2.3. RAM INTERNAL
Instruksi MOV, membolehkan data dipindah-pindah antar lokasi dalam RAM internal atau lokasi-lokasi SFR tanpa melalui akumulator. Perlu dicatat bahwa untuk semua mikrokontroller Atmel Seri AT89C51, stack tersimpan dalam RAM internal. Intstruksi PUSH pertama kali akan menaikkan isi SP (stack pointer) kemudian menyalin data byte yang terkait ke dalam lokasi yang yang ditunjuk SP. PUSH dan POP hanya menggunakan pengalamatan langsung untuk mengidentifikasi byte yang disimpan atau dikembalikan (ditarik dari ruang Stack), jikalau diimplementasikan lokasinya sanggup mencapai 128 (upper 128) atas tetapi tidak mengganggu ruang SFR.
Jika piranti mikrokontroler yang digunakan tidak melaksanakan implementasi pecahan 128 atas dan SP-nya sendiri menunjuk pada lokasi di 128 atas tersebut, maka data byte yang di PUSH akan hilang serta instruksi POP menjadi tidak menentu.
Instruksi-instruksi transfer data mencakup sebuah kode MOV 16 bit (MOV DPTR,# data 16) yang dapat digunakan untuk inisialisasi DPTR dalam penggunaan Tabel Tengok atau look-up-tabel dalam memori program atau untuk susukan data eksternal 16-bit.
2.1.2.4. TABEL TENGOK ( LOOK UP TABLE)
Pada Tabel 2.2 dibawah ini menunjukkan dua kode yang sanggup digunakan membaca tabel tengok yang tersimpan dalam memori program. Ada Tabel Disini
Karena kedua instruksi ini hanya mengakses memori program saja, maka tabel tengok hanya bisa dibaca saja, tidak mungkin diremajakan atau update. Jika akses tabelnya ke memori program eksternal, maka tanda bacanya melalui kaki PSEN.
Instruksi MOVC yang pertama pada tabel diatas bisa mengakomodasi sebuah tabel dengan 256 entri, dengan indeks atau nomor baris 0 hingga 255. Angka indeks yang diinginkan disimpan dalam akumulator dan DPTR di set menunjuk ke alamat lokasi awal tabel yang bersangkutan. Dengan demikian perintah MOVC A,@A+DPTR digunakan untuk menyalin entri tabel yang dikehendaki ke dalam akumulator. Instruksi MOVC yang satunya juga sama, hanya saja memakai PC sebagai alamat dasarnya (bukan DPTR).
2.1.2.5. INSTRUKSI-INSTRUKSI REGISTER KHUSUS
Bank-bank register,yang masing-masing berisi R0 hingga R7 atau 8 register, dapat diakses melalui instruksi yang op-kodenya mengandung 3-bit spesifikasi register (000 untuk R0, 001 untuk R1 hingga 111 untuk R7). Pengaksesan register dengan cara demikian bisa menghemat penggunaan kode instruksi, alasannya yaitu tidak memerlukan sebuah byte untuk alamat. Saat kode tersebut dikerjakan, satu dari delapan register pada bank yang terpilih yang diakses.
Beberapa instruksi hanya dikhususkan untuk suatu register tertentu. Misalnya suatu kode yang hanya bekerja pada akumulator saja. Sehingga tidak memerlukan alamat byte untuk menunjuk ke akumulator tersebut. Dalam hal ini, op- kodenya sendiri telah mengandung penunjuk ke register yang benar. Instruksi yang mengacu akumulator sebagai A akan dikodekan dengan op-kode spesifik-akumulator.
Tidak semua alamat pada SFR (register fungsi khusus) digunakan, alamat-alamat yang tidak digunakan tidak diimplementasikan pada chip. Jika dilakukan usaha pembacaan pada alamat-alamat yang tidak terpakai tersebut akan menghasilkan data acak dan penulisannya tidak menimbulkan efek sama sekali. Pengguna perangkat lunak sebaiknya jangan menuliskan “1” pada lokasi-lokasi ‘tak bertuan’ tersebut, karena dapat digunakan untuk mikrokontroler generasi selanjutnya. Dengan demikian, nilai-nilai reset atau non aktif dari bit-bit baru ini akan selalu ‘0’ dan nilai aktifnya yaitu ‘1’.
2.1.3. MODE PENGALAMATAN
Mode pengalamatan pada keluarga MCS 51 terdiri dari dua mode yaitu Mode Pengalamatan Langsung (Direct Addressing) dan Mode Pengalamatan Tidak Langsung (Indirect Addressing).
Dalam Pengalamatan Langsung, operan-operan ditentukan menurut alamat 8-bit (1 byte) dalam suatu instruksi. Hanya RAM data internal dan SFR saja yang bisa diakses secara langsung.
Mode Pengalamatan tak Langsung dalam pengalamatannya, intruksi menentukan suatu register yang digunakan untuk menyimpan alamat operan. Baik RAM internal maupun RAM eksternal sanggup diakses secara tak langsung. Register alamat untuk alamat-alamat 8-bit bisa memakai Stack Pointer atau RO atau R1 dari bank register yang dipilih. Sedangkan untuk alamat 16-bit hanya bisa menggunakan register pointer data 16-bit atau DPTR. Beberapa kode memakai operan berupa register yang menyimpan alamat data disimpan. Dalam hal ini digunakan tanda “at” (@) yang dapat digunakan bersama dengan R0, R1, DPTR atau PC tergantung dari kode yang digunakan.
2.1.4. TIMER DAN COUNTER DALAM AT89C51
Pada dasarnya sarana masukkan yang satu ini merupakan seperangkat pencacah biner (binary counter) yang terhubung langsung ke saluran data mikrokontroller, sehingga mikrokontroler bisa membaca kondisi pencacah dan bila dibutuhkan mikrokotroler sanggup pula merubah kondisi pencacah tersebut.
Seperti layaknya pencacah biner, ketika sinyal detak (clock) yang diberikan sudah melebihi kapasitas pencacah, maka pencacah akan memberikan sinyal overflow atau limpahan, sinyal ini merupakan suatu hal yang penting dalam pemakaian pencacah dan terjadinya limpahan pencacah ini bisa dicatat dalam suatu register. Selain itu, sinyal detak yang diberikan ke pencacah bisa dikendalikan dengan mudah.
Sinyal detak yang diberikan ke pencacah dibedakan menjadi 2 macam, yang pertama ialah sinyal detak yang dengan frekuensi tetap sudah diketahui besarnya dan yang kedua yaitu sinyal detak dengan frekuensi yang bisa bervariasi.
Jika sebuah pencacah bekerja dengan frekuensi tetap, dikatakan pencacah tersebut bekerja sebagai timer atau pewaktu, alasannya yaitu kondisi pencacah tersebut setara dengan waktu yang bisa ditentukan secara pasti.
Jika sebuah pencacah bekerja dengan frekuensi yamg bervariasi, dikatakan pencacah tersebut bekerja sebagai counter atau pencacah, kondisi pencacah tersebut menyatakan banyak pulsa detak yang sudah diterima. Untai pencacah biner tersebut merupakan pencacah biner naik (count up binary counter).
2.14.1. SARANA TIMER/COUNTER AT89C51
Keluarga mikrokontroler AT89C51 dilengkapi dengan dua perangkat timer/counter, masing-masing dinamakan sebagai Timer 0 dan Timer 1. Perangkat timer/counter tersebut merupakan perangkat keras yang terpadu dalam SFR. Pencacah biner timer 0 diakses melalui register TL0 (timer 0 low byte, memori data internal alamat 6Ah) dan register TH0 (timer 0 high byte, memori data internal alamat 6Ch). Pencacah biner timer 1 diakses melalui register TL1 (timer 1 low byte, memori data internal alamat 6Bh) dan register TH1 (timer 1 high byte, memori data internal alamat 6Dh).
Pencacah biner timer/counter AT89C51 merupakan pencacah biner 16 bit naik (count up binary counter) yang mencacah dari 000Fh hingga FFFFh, ketika kondisi pencacah berubah dari FFFFh kembali ke 000Fh akan timbul sinyal limpahan (overflow).
Untuk mengatur kerja timer/counter tersebut digunakan 2 register komplemen yang digunakan bersama oleh timer 0 dan timer 1. register komplemen tersebut yaitu register TCON (timer control register, memori data internal alamat 88h, bisa dialamat per bit) dan register TMOD (timer mode register, memori data internal alamat 89h, tidak bisa dialamati per bit). TL0, TH0, TL1, dan TH1 merupakan SFR (special function register) yang dipakai untuk membentuk pencacah biner timer 0 dan timer 1. Kapasitas keempat register tersebut masing-masing 8-bit, bisa disusun menjadi 4 macam mode pencacah biner.
2.1.4.2. MODE KERJA TIMER 0 DAN TIMER 1
Pada mode 0, 1 , dan 2, timer 0 dan timer 1 masing-masing bisa dibuat timer 0 bekerja pada mode 1 dan timer 1 bekerja pada mode 2, atau kombinasi lainnya sesuai dengan keperluan. Sedangkan pada mode 3 TL0, TH0, TL1 dan TH1 digunakan bahu-membahu untuk menyusun sistem timer yang terpadu (khusus)
Pencacah biner dibentuk dengan TLx (bisa TL0 atau TL1) sebagai pencacah biner 5 bit (meskipun kapasitas sesungguhnya 8 bit)., limpahan dari pencacah biner 5-bit ini dihubungkan ke THx (bisa TH0 atau TH1) membentuk sebuah untai pencacah biner 13-bit, limpahan dari pencacah 13-bit ini ditampung di TFx (bisa TF0 atau TF1) yang berada didalam register TCON. Pada saat terjadi limpahan (dari 1FFFh ke 0000h) maka flag interupsi timer (TF1) akan diset (=1).
Mode ini sama dengan mode 0, hanya saja register TLx dipakai sepenuhnya sebagai pencacah biner 8-bit, sehingga kapasitas pencacah biner yang terbentuk yaitu 16-bit. Seiring dengan sinyal detak, kondisi pencacah biner 16-bit ini dimulai dari 0000h, 0001h, 0002h, ……, sampai FFFFh, kemudian kembali menjadi 0000h (pada ketika itu terjadi sinyal limpahan atau overflow pada TFx).
TLx digunakan sebagai pencacah biner 8-bit, sedangkan THx digunakan untuk menyimpan nilai yang disisikan ulang TLx setiap kali kondisi TLx melimpah atau berubah dari FFh menjadi 00h. Dengan cara ini bisa diperoleh sinyal overflow yang frekuensinya bisa ditentukan oleh nilai yang disimpan dalam THx.
Pada mode 3 TL0, TH0, TL1 dan TH1 dipakai untuk membentuk 3 rangkaian pencacah, yang pertama yaitu untai pencacah biner 16-bit tanpa fasilitas pemantau sinyal limpahan atau overflow yang dibuat dengan TL1 dan TH1. Yang kedua yaitu TL0 yang dipakai sebagai pencacah biner 8-bit dengan TF0 sebagai sarana pemantau limpahan. Pencacah biner ketiga yaitu TH0 yang digunakan sebagai pencacah biner 8-bit dengan TF1 sebagai sarana pemantau limpahan, dengan demikian TH0 yang mengendalikan interupsi timer 1 (TF1).
Mode 3 biasanya digunakan pada aplikasi yang membutuhkan sebuah timer atau pencacah 8-bit tambahan. Dengan timer 0 pada mode 3, AT89C51 seolah-olah memilki 3 buah timer. Pada mode 3 ini, timer dapat dihidupkan dan dimatikan memakai M1 dan M0 pada register TMOD. Pada kasus seperti ini, timer 1 masih sanggup digunakan oleh port serial untuk menghasilkan baud rate, atau aplikasi apa saja yang tidak membutuhkan interupsi.
2.1.4.3. REGISTER PENGATUR TIMER
Register timer digunakan untuk mengatur timer. Register pengatur timer terdiri dari Register TCON dan Register TMOD.Register-register ini merupakan register untuk mengatur kerja timer 0 dan timer 1. Perhatikan Gambar 2.3 dan 2.4 dibawah ini :
TMOD – TIMER MODE REGISTER
Ada Gambar disini
Register TMOD dan register TCON merupakan register yang digunakan untuk mengatur kerja timer 0 dan timer 1, susunan bit register TMOD dan TCON masing-masing ditunjukkan dalam gambar A dan B. Register TMOD dibagi menjadi 2 bagian secara simetris, bit 0 sampai 3 (TMOD.0 s/d TMOD.3) dipakai untuk mengatur timer 0, sedangkan bit 4 hingga 7 (TMOD.4 s/d TMOD.7) digunakan untuk mengatur timer 1, klarifikasi sebagai berikut : Bit M0/M1 digunakan untuk menentukan Mode Timer ibarat yang ditunjukkan pada tabel digambar 2.3
Bit C/T digunakan untuk mengatur sumber sinyal detak yang diberikan ke pencacah biner. Jika C/T = 0, maka sinyal detak diperoleh dari osilator kristal yang frekuensinya sudah dibagi 12, sedangkan jika C/T = 1 maka sinyal detak diperoleh dari kaki T0 (untuk timer 0) atau kaki T1 (untuk timer 1).
Bit gate merupakan pengatur saluran sinyal detak. Bila bit GATE = 0, saluran sinyal detak hanya diatur oleh bit TRx (bisa TR0 atau TR1 pada register TCON). Bila bit GATE = 1 kaki INT0 (untuk timer 0) atau kaki INT! (untuk timer 1) yang digunakan untuk mengatur sinyal detak.
Register TCON dibagi menjadi 2 bagian, 4 bit yang pertama (bit 0 hingga bit 3) digunakan untuk keperluan mengatur kaki INT0 dan INT1. Sisa 4 bit dari register TCON (bit 4 hingga dengan bit 7) dibagi menjadi 2 pecahan secara simetris yang digunakan untuk mengatur timer 0 / timer 1, sebagai berikut :
Bit TFx (TF0 atau TF1) merupakan bit penampung limpahan, TFx akan menjadi ‘1’ setiap kali pencacah biner yang terhubung padanya melimpah atau overflow (kondisi pencacah berubah dari FFFFh kembali menjadi 0000h). Bila TFx bisa dinolkan secara manual dengan kode CLR TF0 atau CLR TF!. Jika sarana interupsi dari timer 0/ timer 1 dipakai, TFx dinolkan ketika AT89C51 menjalankan rutin layanan interupsi (ISR-inetrupt service routine).
Bit TRx (TR0 atau TR1) merupakan bit pengatur saluran sinyal detak, bila bit ini = 0 sinyal detak tidak disalurkan ke pencacah biner sehingga pencacah berhenti melaksanakan pencacahan. Bila bit GATE = 1 pada register TMOD, maka saluran sinyal detak ini diatur bersama TRx dan sinyal pada kaki INTO/INT1.
2.1.5. SISTEM INTERUPSI PADA AT89C51
AT89C51 menyediakan 5 sumber interupsi yaitu : dua interupsi internal, dua intrerupsi Timer dan sebuah interupsi Port serial.
2.1.5.1. STRUKTUR INTERUPSI. Ada Tabel dibawah ini
Interupsi eksternal INT0 dan INT1 dapat dipilih dengan dua macam pilihan : aktivasi tingkat (level activated) atau aktivasi transisi (trantition activated). Hal ini tergantung pada bit IT0 dan IT1 dalam register TCON. Tanda atau flag yang sesungguhnya menghasilkan interupsi ini adalah bit-bit IE0 (TCON.1) dan IE1 (TCON.3) dalam register TCON. Saat rutin layanan interupsi (RL1) dijalankan, mikrokontroler secara otomatis akan menolkan tanda interupsi terkait asal interupsi tersebut diaktivasi dengan trasisi. Jika aktivasi secara tingkat (level), maka sumber eksternallah yang mengontrol tanda interupsi tersebut.
Interupsi timer 0 dan timer 1 dihasilkan oleh TF0 dan TF1, terjadi pada ketika muncul limpahan pada masing-masing timer (kecuali timer 0 pada MODE 3).
Saat terjadi interupsi timer, mikrokontroller akan menolkan gejala tersebut.
Interupsi port serial terjadi baik pada ketika RI = ! atau TI = 1 (pada ketika selesai penerimaan atau pengiriman data). Dalam hal ini bit-bit RI dan TI harus dinolkan secara manual melalui program yang ditulis.(akan dijelaskan pada pasal-pasal berikutnya). Kedua interupsi port serial ini digabung memakai OR. Begitu juga dengan interupsi Timer 2 (TF2) dan masukkan eksternal 2 (EXF2). Hasil dari masing-masing gerbang OR tersebut yang kemudian akan menghasilkan interupsi yang bisa diaktifkan melalui bit IE.4 untuk RI atau TI dan IE.5 untuk TF2 atau EXF2.
Semua bit yang menyebabkan terjadinya interupsi bisa diset atau dinolkan melalui perangkat lunak dan hasilnya sama jika dilakukan melalui perangkat keras. Dengan demikian interupsi bisa dihasilkan maupun dibatalkan melalui program.
2.1.5.2. MENGAKTIFKAN DAN MENON-AKTIFKAN INTERUPSI
Perhatikan gambar sebelumnya., masing-masing sumber interupsi tersebut sanggup diaktifkan dan dinon-aktifkan sendiri-sendiri dengan mengatur bit-bit yang terkait dalam register IE (interupt enable) dialamat A8h. Selain pada register IE juga terdapat sebuah bit yang digunakan untuk mengaktifkan dan menon-aktifkan interupsi secara keseluruhan. Pada AT89C51 bit IE.5 belum terimplementasi, sebaiknya jangan digunakan karena untuk cadangan pada produk mikrokontroller sejenis dimasa datang.
2.1.5.3. TINGKAT PRIORITAS INTERUPSI
Masing-masing inetrupsi sanggup diprogram tingkat prioritasnya dengan mengatur bit-bit yang terkait pada register IP (alamat B8h). perhatikan gambar sebelumnya dan tabel berikut ini :
Ada tabel disini
Register IP akan berisi nol saat reset yang mengakibatkan semua interupsi ditempatkan sebagai prioritas rendah. Dengan adanya sistem prioritas maka ketika sebuah rutin layanan interupsi dikerjakan bisa diinterupsi dengan interupsi yang prioritasnya lebih tinggi. Karena hanya ada dua tingkat prioritas, maka interupsi yang prioritas rendah bisa diinterupsi dengan yang prioritasnya lebih tinggi, sedangkan interupsi dengan prioritas tinggi tidak sanggup diinterupsi lagi.
2.1.5.4. TEKNIK POLLING
Pada saat ada dua interupsi dengan prioritas yang sama muncul bersamaan, maka dilakukan polling untuk menetukan mana yang dilayani terlebih dahulu. Urutan polling sebagai berikut: eksternal 0, eksternal 1, timer 1, port serial kemudian gres timer 2.
2.1.5.5. PEMROSESAN INTERUPSI
Saat terjadi interupsi, kemudian diterima CPU didalam mikrokontroller, maka program akan dihentikan terlebih dahulu kemudian dikerjakan langkah-langkah penanganan interupsi sebagai berikut :
1. kode yang sedang dikerjakan diselesaikan terlebih dahulu
2. isi PC (pencacah program) disimpan ke stack
3. status interupsi yang bersangkutan disimpan ke stack
4. interupsi-interupsi pada tingkat yang sama diblokir
5. PC kemudian diisi alamat vektor rutin layanan interupsi (RLI) yang bersangkutan
6. RLI dikerjakan.
RLI diakhiri dengan instruksi RETI (bukan RET). Adanya kode RETI ini maka alamat PC yang terakhir yang tersimpan di stack diambil lagi dan status interupsi sebelumnya dikembalikan, sehingga program utama sempat ditinggalkan sanggup diteruskan lagi.
2.1.5.6. VEKTOR-VEKTOR INTERUPSI
Saat suatu interupsi diterima, nilai yang disimpan ke PC sebagai alamat RLI selanjutnya disebut sebagai vektor interupsi, yang sekaligus merupakan awal alamat RLI yang bersangkutan. ada tabel disini
2.1.5.7. PERANCANGAN PROGRAM INTERUPSI
2.1.6. SAKLAR MINIATUR HEX ENCODER 16 POSISI (SWITCH BCD)
2.1.7. CATU DAYA
Dalam sistem elektronik, hampir semua semua rangkaian elektronik membutuhkan sumber tegangan dc (direct current) yang teratur dengan besar 5 V-30 V. Dalam beberapa kasus, pencatuan ini dapat dilakukan secara langsung oleh baterai (misalnya 6 V, 9 V, 12 V) namun dalam banyak kasus lainnya akan lebih menguntungkan apabila kita memakai sumber ac (alternatting current) standar.
Diagram blok catu daya dc di perlihatkan pada gambar 2.6a. Karena input sumbernya memiliki tegangan yang relatif tinggi, maka digunakanlah sebuah transformator step-down dengan ratio lilitan yang sesuai untuk mengkonversi tegangan ini ke tegangan rendah. Output ac dari sisi sekunder transformator kemudian disearahkan dengan menggunakan dioda-dioda penyearah (rectifier) silikon konvensional untuk menghasilkan output yang masih kasar (kadangkala disebut sebagai dc berdenyut). Output ini kemudian di haluskan dan kemudian di filter sebelum di salurkan ke input rangkaian.
Note:
Pada postingan Mikrokontroler AT89C51 ini saya tidak posting secara lengkap dikarena banyaknya data dalam bentuk table, gambar serta simbul simbul yang tidak sanggup mendukung dengan fitur blog saya, sehingga untuk mendapat secara lengkap silahkan dapatkan dengan cara mendownloadnya.
Mikrokontroler sebagai suatu terobosan teknologi mikroprosesor dan mikrokomputer, hadir memenuhi kebutuhan pasar (market need) dan teknologi baru. Sebagai teknologi baru, yaitu teknologi semikonduktor dengan kandungan transistor yang lebih banyak namun hanya membutuhkan ruang kecil serta dapat diproduksi secara massal (dalam jumlah banyak) sehingga harganya menjadi lebih murah (dibandingkan mikroprosesor). Sebagai kebutuhan pasar, mikrokontroler hadir untuk memenuhi selera industri dan para konsumen akan kebutuhan dan keinginan alat-alat bantu dan mainan yang lebih baik dan canggih. Dengan alasan demikian mikrokontroler banyak digunakan oleh berbagai kepentingan untuk membuat suatu kreasi elektronik yang beraneka ragam.
2.1.1. ARSITEKTUR MIKROKONTROLER AT89C51
Blok diagram lengkap dari Mikrokontroler AT89C51 seri AT89 (Keluarga 51) Atmel akan diperlihatkan secara terang pada Gambar 2.1:
Untuk mengetahui bagian-bagian dari blok diagram diatas dapat dijelaskan sebagai berikut :
a. Register A
Register A (akumulator) yang menempati lokasi pada alamat Eoh digunakan sebagai register untuk penyimpanan data sementara dalam program, instruksinya mengacu sebagai register A.
b. Register B
Register B (lokasi Foh) digunakan selama operasi perkalian dan pembagian, untuk instruksi lain dapat diperlakukan sebagai register Scratch pad (papan coret-coret) lainnya.
c. Program Status Word (PSW)
Register PSW (lokasi Doh) mengandung informasi status program.
d. Stack Pointer
Register Stack Pointer (SP) pada lokasi 81h merupakan register dengan panjang 8-bit, digunakan dalam proses simpan dan ambil dari/ke stack. Nilainya akan dinaikkan sebelum data disimpan menggunakan intruksi PUSH dan CALL. Walau Stack bisa menempati lokasi dimana saja dalam RAM, register SP akan selalu diinisialisasikan ke 07h setelah adanya reset, hal ini menyebabkan stack berawal dilokasi 08h.
e. Data Pointer
Register Data Pointer atau DPTR mengandung DPTR untuk byte tinggi (DPH) dan byte rendah (DPL) yang masing-masing berada dilokasi 83h dan 82h, bahu-membahu membentuk register yang bisa menyimpan alamat 16 bit. Dapat dimanipulasi sebagai register 16-bit atau sebagai dua register 8-bit yang terpisah.
f. Port 0, Port 1, Port 2, dan Port 3
P0, P1, P2 dan P3 masing-masing menempati lokasi 80h, 90h, A0h dan b0h merupakan pengunci-pengunci (latches), yang digunakan untuk menyimpan data yang akan dibaca atau ditulis dari/ke port, masing-masing Port 0, Port 1, Port 2 dan Port 3.
g. Serial Data Buffer.
Serial data buffer (SBUF) pada lokasi 99h sebenarnya terdiri dari dua register yang terpisah yaitu register penyangga pengirim (transmit buffer) dan penyangga penerima (receive buffer). Pada saat data disalin ke SBUF, maka data sesungguhnya dikirim kepenyangga pengirim dan sekaligus mengawali transmisi data serial, sedangkan pada saat data disalin dari SBUF, maka sebenarnya data tersebut berasal dari penyangga penerima.
h. Timer Register
Pasangan register-register (THO, TL0) dilokasi 8Ch dan 8Ah, (TH1, TL1) dilokasi BDh dan 8Bh serta (TH2, TL2) dilokasi CDh dan CCh merupakan register-register pencacah 16-bit untuk masing-masing Timer 0, Timer 1 dan Timer 2.
i. Capture Register
Pasangan register (RCAP2H, RCHP2L) yang menempati lokasi CBh dan CAh merupakan register Capture untuk mode Timer 2 capture. Pada mode ini, sebagai tanggapan terjadinya suatu transisi sinyal dikaki (pin) T2EX (pada AT89C52/55), TH2 dan TL2 disalin masing-masing ke RCAP2H dan RCP2l. Timer 2 juga memiliki mode isi ulang otomatis 16-bit dan RCAP2H serta RCAP2L digunakan untuk menyimpan nilai isi ulang tersebut.
j. Control Register
Register-register IP, IE, TMOD, TCON, T2CON, T2MOD, SCON dan PCON berisi bit-bit kontrol dan status untuk sistem interupsi, Pencacah/Pewaktu dan port serial yang akan dijelaskan nanti.
2.1.2. ORGANISASI MEMORI AT89C51
Mikrokontroler AT89C51 memiliki ruang alamat memori data dan aktivitas yang terpisah. Pemisahan memori aktivitas dan data tersebut membolehkan memori data dapat diakses dengan alamat 8-bit, sehingga dapat dengan cepat dan mudah disimpan dan dimanipulasi oleh CPU 8-bit. Walaupun demikian, alamat memori data 16-bit bisa juga dihasilkan melalui register DPTR.
2.1.2.1 MEMORI PROGRAM.
Pada Gambar 2.2 dibawah ini ditunjukkan pemetaan pecahan bawah dari memori program. Setelah reset, CPU segera mengerjakan aktivitas mulai dari lokasi 0000h.
Ada Gambar disini
Sebagaimana ditunjukkan pada Gambar 2.2 diatas, masing-masing interupsi diletakkan pada lokasi yang sudah tetap dalam memori program. Sebuah interupsi menimbulkan CPU melompat ke lokasi interupsi yang bersangkutan, yaitu letak dari subrutin layanan interupsi tersebut. Misalnya, Eksternal interupsi 0 disimpan pada lokasi 0003h, jika interupsi digunakan, maka layanan rutin interupsi ini harus dituliskan pada lokasi ini, jika tidak, maka lokasi tersebut bisa digunakan sebagai memori aktivitas serba guna.
Untuk lebih terang perhatikan tabel berikut ini :
Ada Tabel Disini
Lokasi-lokasi layanan interupsi tersebut menempati lokasi-lokasi dengan jarak 8-byte : 0003h untuk eksternal interupt 0, 000Bh untuk timer 0, 0013h, untuk Eksternal Interupt 1, 001Bh untuk timer 1 dan seterusnya. Jika suatu rutin layanan interupsi sangat pendek (kurang dari 8 byte), maka seluruh rutin bisa disimpan pada lokasi yang bersangkutan (sesuai dengan interupsi yang digunakan). Jika terlalu panjang (lebih atau sama dengan 8-byte), maka harus digunakan suatu perintah lompat ke lokasi rutin interupsi yang sebenarnya (dilokasi lain dalam memori program).
2.1.2.2 MEMORI DATA
Memori data dapat berupa memori data internal dan memori data eksternal. kita sanggup menentukan memori data eksternal hingga 64K byte. Alamat Alamat memori data eksternal bisa 1 atau 2 byte. Alamat satu byte sering digunakan untuk membantu satu atau lebih jalur I/O dalam penghalamanan RAM. Alamat dua byte sanggup digunakan dalam kasus jikalau byte alamat tinggi dikirim melalui port 2.
Memori data internal memiliki ruang memori dibagi menjadi tiga blok, yang dikenal sebagai 128 bawah (lower 128), 128 atas (upper 128) dan register fungsi khusus (Special Function Register = SFR).
Alamat memori data internal selalu 8-bit atau 1-byte, yang konsekuensinya hanya bisa mengalamati hingga 256 byte saja. Namun demikian, mode-mode pengalamatan RAM internal (faktanya) bisa mengakomodasi hingga 384-byte. Pengaksesan langsung (direct addressing) dengan alamat diatas 7Fh mengakses suatu memori, sedangkan pengaksesan tak langsung (indirect addressing) dengan alamat diatas 7Fh mengakses ruang memori lain yang berbeda. Sehingga terlihat 128 atas dan SFR menempati blok yang sama, 80h hingga FFh, walaupun secara fisik terpisah.
RAM Internal yang memiliki 128-byte dipetakan. 32 byte bawah dikelompokkan menjadi 4 bank dan 8 register (R0 hingga R7). Dua bit pada PWS (Program Status Word) digunakan untuk memilih kelompok register mana yang digunakan. Arsitektur ini membolehkan penggunaan ruang kode secara lebih efisien, karena instruksi-intruksi register lebih pendek dari pada instruksi-instruksi yang memakai pengalamatan langsung. 16 byte berikutnya, diatas bank-bank register membentuk suatu blok ruang memori yang bisa teralamati per bit. Kumpulan kode mikrokontroler ini mempunyai berbagai pilihan instruksi-instruksi bit tunggal dan instruksi-instruksi ini bisa secara eksklusif mengalamati 128 bit dalam area ini. Alamat-alamat bit ini yaitu 00h hingga 7Fh.
Semua byte yang berada didalam 128 bawah dapat diakses baik secara eksklusif maupun tidak langsung. Bagian 128 atas dari RAM hanya ada didalam piranti yang mempunyai RAM berukuran 256 byte.
2.1.2.3. RAM INTERNAL
Instruksi MOV
Jika piranti mikrokontroler yang digunakan tidak melaksanakan implementasi pecahan 128 atas dan SP-nya sendiri menunjuk pada lokasi di 128 atas tersebut, maka data byte yang di PUSH akan hilang serta instruksi POP menjadi tidak menentu.
Instruksi-instruksi transfer data mencakup sebuah kode MOV 16 bit (MOV DPTR,# data 16) yang dapat digunakan untuk inisialisasi DPTR dalam penggunaan Tabel Tengok atau look-up-tabel dalam memori program atau untuk susukan data eksternal 16-bit.
2.1.2.4. TABEL TENGOK ( LOOK UP TABLE)
Karena kedua instruksi ini hanya mengakses memori program saja, maka tabel tengok hanya bisa dibaca saja, tidak mungkin diremajakan atau update. Jika akses tabelnya ke memori program eksternal, maka tanda bacanya melalui kaki PSEN.
Instruksi MOVC yang pertama pada tabel diatas bisa mengakomodasi sebuah tabel dengan 256 entri, dengan indeks atau nomor baris 0 hingga 255. Angka indeks yang diinginkan disimpan dalam akumulator dan DPTR di set menunjuk ke alamat lokasi awal tabel yang bersangkutan. Dengan demikian perintah MOVC A,@A+DPTR digunakan untuk menyalin entri tabel yang dikehendaki ke dalam akumulator. Instruksi MOVC yang satunya juga sama, hanya saja memakai PC sebagai alamat dasarnya (bukan DPTR).
2.1.2.5. INSTRUKSI-INSTRUKSI REGISTER KHUSUS
Dalam Pengalamatan Langsung, operan-operan ditentukan menurut alamat 8-bit (1 byte) dalam suatu instruksi. Hanya RAM data internal dan SFR saja yang bisa diakses secara langsung.
2.1.4. TIMER DAN COUNTER DALAM AT89C51
MODE 0 – Pencacah Biner 13-bit
MODE 1 – Pencacah Biner 16-bit
MODE 2 – Pencacah Biner 8-bit dengan Isi Ulang
MODE 3 – Gabungan Pencacah Biner 16-bit dan 8-bit
TMOD – TIMER MODE REGISTER
Register TMOD dan register TCON merupakan register yang digunakan untuk mengatur kerja timer 0 dan timer 1, susunan bit register TMOD dan TCON masing-masing ditunjukkan dalam gambar A dan B. Register TMOD dibagi menjadi 2 bagian secara simetris, bit 0 sampai 3 (TMOD.0 s/d TMOD.3) dipakai untuk mengatur timer 0, sedangkan bit 4 hingga 7 (TMOD.4 s/d TMOD.7) digunakan untuk mengatur timer 1, klarifikasi sebagai berikut : Bit M0/M1 digunakan untuk menentukan Mode Timer ibarat yang ditunjukkan pada tabel digambar 2.3
Bit C/T digunakan untuk mengatur sumber sinyal detak yang diberikan ke pencacah biner. Jika C/T = 0, maka sinyal detak diperoleh dari osilator kristal yang frekuensinya sudah dibagi 12, sedangkan jika C/T = 1 maka sinyal detak diperoleh dari kaki T0 (untuk timer 0) atau kaki T1 (untuk timer 1).
Bit TRx (TR0 atau TR1) merupakan bit pengatur saluran sinyal detak, bila bit ini = 0 sinyal detak tidak disalurkan ke pencacah biner sehingga pencacah berhenti melaksanakan pencacahan. Bila bit GATE = 1 pada register TMOD, maka saluran sinyal detak ini diatur bersama TRx dan sinyal pada kaki INTO/INT1.
2.1.5.1. STRUKTUR INTERUPSI.
Saat terjadi interupsi timer, mikrokontroller akan menolkan gejala tersebut.
2.1.5.3. TINGKAT PRIORITAS INTERUPSI
Ada tabel disini
2.1.5.4. TEKNIK POLLING
1. kode yang sedang dikerjakan diselesaikan terlebih dahulu
2. isi PC (pencacah program) disimpan ke stack
3. status interupsi yang bersangkutan disimpan ke stack
4. interupsi-interupsi pada tingkat yang sama diblokir
5. PC kemudian diisi alamat vektor rutin layanan interupsi (RLI) yang bersangkutan
6. RLI dikerjakan.
2.1.5.6. VEKTOR-VEKTOR INTERUPSI
2.1.5.7. PERANCANGAN PROGRAM INTERUPSI
2.1.6. SAKLAR MINIATUR HEX ENCODER 16 POSISI (SWITCH BCD)
2.1.7. CATU DAYA
Dalam sistem elektronik, hampir semua semua rangkaian elektronik membutuhkan sumber tegangan dc (direct current) yang teratur dengan besar 5 V-30 V. Dalam beberapa kasus, pencatuan ini dapat dilakukan secara langsung oleh baterai (misalnya 6 V, 9 V, 12 V) namun dalam banyak kasus lainnya akan lebih menguntungkan apabila kita memakai sumber ac (alternatting current) standar.
Diagram blok catu daya dc di perlihatkan pada gambar 2.6a. Karena input sumbernya memiliki tegangan yang relatif tinggi, maka digunakanlah sebuah transformator step-down dengan ratio lilitan yang sesuai untuk mengkonversi tegangan ini ke tegangan rendah. Output ac dari sisi sekunder transformator kemudian disearahkan dengan menggunakan dioda-dioda penyearah (rectifier) silikon konvensional untuk menghasilkan output yang masih kasar (kadangkala disebut sebagai dc berdenyut). Output ini kemudian di haluskan dan kemudian di filter sebelum di salurkan ke input rangkaian.
0 Response to "Pengertian Mikrokontroler At89c51"
Post a Comment