Yang dimaksud dengan sistem minimal adalah rangkaian mikrokontroler yang dapat digunakan untuk menjalankan suatu aplikasi. Saat ini mikrokontroler 8 bit versi keluarga MCS51 (CISC) yang dirilis oleh Atmel dengan seri AT89Sxx, dan mikrokontroler AVR yaitu mikrokontroler RISC dengan seri ATMEGA8535 (walaupun ada banyak versi mikrokontroler AVR yang masing-masing memiliki sifat berbeda. ). Sedangkan pada mikrokontroler, rasio ROM terhadap RAM besar artinya program kendali disimpan dalam ROM (bisa Masked ROM atau Flash PEROM) yang ukurannya relatif lebih besar, sedangkan RAM digunakan sebagai memori sementara, antara lain register yang digunakan pada mikrokontroler.
Contoh mikrokontroler yang menggunakan arsitektur Von Neumann adalah keluarga 68HC05 dan 68HC11 dari Motorola. Dalam aplikasinya, PSEN akan dihubungkan dengan sinyal RD External Program Memory (EEPROM), PSEN terletak pada pin 29. EA atau External Access Enable menentukan apakah alamat awal memori program berada di memori eksternal atau internal.
Pada gambar memori program terdapat strobo (tanda) untuk akses ke memori program eksternal melalui sinyal PSEN (Program Strobe Enable). ET0 : nilai '1' untuk mengaktifkan interupsi dari timer/counter 0 - EX0 : nilai '1' untuk mengaktifkan interupsi dari interupsi eksternal 0.
KENDALI PEWAKTUAN DAN PENCACAHAN
Pada keadaan 3, Timer/Counter 0 menjadi dua buah timer/counter 8-bit, sedangkan Timer/Counter 1 berhenti. TL0 akan menjadi timer/counter 8 bit yang dikendalikan oleh bit kontrol Timer/Counter 0 (termasuk GATE, C/T, TR0, INT0 dan TF0). Jika pengguna ingin menghentikan Timer/Counter 1 tanpa menghentikan TH0, pengguna dapat memindahkan Timer/Counter 1 ke mode 3.
Misalnya register Timer/Counter 0 diisi dengan nilai 814Ah dan register Timer/Counter 1 diisi dengan nilai 0CF32h, maka instruksinya sebagai berikut. Jika Timer/Counter yang diprogram akan digunakan sebagai sumber interupsi, IE dan/atau IP juga harus diatur. Misal kedua Timer/Counter digunakan sebagai sumber interupsi dengan Timer/Counter prioritas 1, maka instruksinya sebagai berikut.
Pembacaan nilai Timer/Counter dapat dilakukan dengan dua cara yaitu langsung membaca register Timer/Counter (THx dan/atau TLx) dan mendeteksi overflow. Jika Timer/Counter digunakan pada Mode 2 atau Mode 3, cara ini cukup sederhana karena register yang dibaca hanya TLx dan/atau THx yang masing-masing lebarnya 8 bit.
PEMROGRAMAN PADA MIKROKONTROLER
- Dasar Pemrograman MCS51 (AT89C51, AT89S51, AT89C2051)
- KELOMPOK PENG-COPY-AN DATA
- Program Flow
- DIRECT JUMP
- CONDITIONAL BRANCHING
- RETURN FROM SUBROUTINE
- INTERRUPT
- Perulangan 1. IF… THEN
- WHILE… WEND
- FOR… NEXT
- EXIT
- GOSUB
- GOTO
Untuk tujuan ini, MCS51 memiliki metode referensi data dalam memori program yang diimplementasikan secara tidak langsung (mode pengalamatan kode tidak langsung): MOVC A,@A+DPTR. Perhatikan bahwa dalam instruksi ini MOV diganti dengan MOVC, dan penambahan huruf C untuk membedakan bahwa instruksi ini digunakan dalam memori program. Karakter '@' digunakan untuk menunjukkan A+DPTR digunakan untuk menunjukkan nomor memori yang isinya disalin ke Akumulator A, dalam hal ini nilai yang disimpan dalam DPTR (register penunjuk data - 2 byte) ditambahkan ke nilai yang disimpan dalam Akumulator A (1 byte) digunakan untuk menunjukkan nomor memori program.
Ketika mikrokontroler mengeksekusi set instruksi JUMP, nilai penghitung program yang diurutkan berdasarkan aliran program diganti dengan nomor memori program baru yang diinginkan oleh pemrogram. Kode instruksi LJMP adalah $02, nomor memori program baru yang akan dialamatkan dinyatakan dalam bilangan biner 16 bit, sehingga instruksi ini dapat menjangkau seluruh memori program MCS51 yaitu 64 KiloBytes. Instruksi LJMP terdiri dari 3 byte yang dapat dinyatakan dalam bentuk umum 02 aa aa, aa pertama adalah nomor memori program bit 8 sampai bit 15, sedangkan aa kedua adalah nomor memori program bit dari 0 pada bit 7. .
Penugasan baru tersebut disebut LABEL, yaitu cara kolektor menandai/. Jadi, pada penggalan program di atas, nomor memori program $2000 diberi nama NewTask, atau bisa juga dikatakan NewTask bernilai $2000. Nomor memori program baru yang akan dialamatkan dinyatakan sebagai bilangan biner 11-bit, sehingga instruksi ini hanya dapat menjangkau satu memori program MCS51 yang luasnya 2 KiloByte. Instruksi AJMP terdiri dari 2 byte, byte pertama merupakan kode instruksi AJMP (00001b) yang digabungkan dengan bit nomor memori program nomor 8 sampai bit nomor 10, byte kedua digunakan untuk mewakili nomor bit nomor memori program 0 hingga bit nomor 7.
Fragmen program di atas dimulai pada memori program bernomor $800, sehingga instruksi AJMP AreaThis dapat digunakan, karena nomor memori $800 (lokasi instruksi AJMP ThisArea) dan LABEL ThisArea berada dalam area memori program 2 KiloByte yang sama. Dikatakan berada pada area memori program 2 kilobyte yang sama karena bit nomor 11 sampai bit nomor 15 nomor memorinya sama). Namun AJMP Other Region tersebut akan disalahartikan oleh Assembler, karena Other Region yang terletak pada memori program bernomor $1000 berada pada area memori program lain sebesar 2 KiloByte. Karena instruksi AJMP hanya terdiri dari 2 byte sedangkan instruksi LJMP terdiri dari 3 byte, maka penggunaan instruksi AJMP lebih hemat memori dibandingkan LJMP.
Nomor memori program dalam instruksi ini tidak dinyatakan dengan nomor memori program sebenarnya, namun dengan 'offset relatif'. Meskipun rentang instruksi SJMP hanya –128 hingga +127, instruksi ini tidak dibatasi oleh area memori program 2 kilobyte yang membatasi instruksi AJMP. Instruksi ACALL digunakan untuk 'memanggil' program subrutin dalam area memori program 2 kilobyte yang sama, setara dengan instruksi AJMP yang dibahas di atas.
Sedangkan instruksi LCALL setara dengan instruksi LCALL yang dapat mencakup seluruh memori program mikrokontroler MCS51 sebesar 64 KiloByte. Nomor memori program baru yang akan dialamatkan tidak dinyatakan dengan nomor memori program sebenarnya, namun dengan 'pergeseran relatif'.
ADDRESSING MODE DAN INSTRUKSI PADA MIKROKONTROLER
Addressing Mode
Karena lebar alamat relatif hanya 8 bit, pengalamatan relatif hanya dapat digunakan untuk melompat dalam kisaran 128 byte mundur ke 127 byte maju (-l28 hingga +127). Pengalamatan absolut adalah melompati atau memanggil alamat yang dituju dengan menentukan letak alamat secara langsung (tanpa menggunakan offset). Alamat langsung dinyatakan dalam 16 bit, dengan 5 bit teratas menunjukkan halaman 2 KB dan 11 bit bawah menunjukkan alamat pada halaman 2 KB.
Jangkauan pengalamatan absolut lebih panjang dibandingkan pengalamatan relatif, namun jangkauannya hanya dalam halaman 2 KB yang sama. Pengalamatan panjang adalah melewatkan atau memanggil alamat yang dituju dengan menentukan letak alamat secara langsung (tanpa menggunakan offset). Kisaran pengalamatan panjang lebih panjang dibandingkan pengalamatan relatif atau absolut, namun instruksi pengalamatan panjang lebarnya 3 byte, sedangkan pengalamatan relatif dan absolut lebarnya hanya 2 byte. Untuk program yang mempunyai ruang memori program terbatas, akan lebih baik jika menggunakan pengalamatan panjang saja untuk melompat ke lokasi di luar rentang pengalamatan relatif dan absolut.
Pengalamatan terindeks adalah proses pengaksesan suatu alamat dengan menggunakan indeks dan register dasar (berupa DPTR atau PC). Dengan mengatur terlebih dahulu nilai register dasar, pengguna hanya perlu mengubah nilai akumulator untuk mendapatkan nilai pada tabel.
Instruksi Pada Mikrokontroler 1. MOV
Perintah yang digunakan untuk melompat ke label subrutin jika nilai port x.y berlogika LOW atau bernilai nol. Perintah ini digunakan untuk mengurangi nilai isi data register x dan jika nilainya tidak tercapai, dilakukan lompatan ke tag subrutin. JNZ R7, bahasa gaul: mengurangi nilai isi data pada register R7, dan jika nilainya belum mencapai 0, dilakukan lompatan ke subrutin berlabel GAUL.
JNZ R10, coba: kurangi nilai isi data pada register R10 dan jika nilainya belum mencapai 0 maka dilakukan lompatan subprogram dengan label TRY. JNZ R12, klik: mengurangi nilai isi data pada register R12 dan jika nilainya belum mencapai 0, lompatan subprogram dijalankan dengan label KLIK. JNZ R3, pilih: mengurangi nilai isi data pada register R3 dan jika nilainya belum mencapai 0, lompatan subprogram dijalankan dengan label SELECT.
CJNE
KOMUNIKASI SERIAL PADA MIKROKONTROLER
- Komunikasi Serial
- MODE 0
- MODE 1
- MODE 2
- MODE 3
- Aplikasi Komunikasi Serial
- Minimum Sistem
- Led / Jam Digital / Seven Segmen
- PWM (Pulse Width Modulation)
Mikrokontroler dengan fasilitas ini dapat digunakan untuk aplikasi yang memerlukan informasi analog (misalnya voltmeter, pengukur suhu, dll). Proses perancangan sistem minimum merupakan langkah yang harus dikuasai agar sistem yang dirancang dapat berfungsi sebagaimana mestinya. Namun hal ini tidak menutup kemungkinan bahwa 89C51 dapat digunakan untuk aplikasi yang jauh lebih rumit asalkan sistem yang digunakan memiliki komponen pendukung yang lengkap.
Sistem minimum yang sering digunakan untuk berkomunikasi secara serial dengan protokol UART umumnya menggunakan osilator kristal dengan frekuensi 11,0592 MHz. Jika jumper menghubungkan pin 1 dan 2, maka sistem minimum berada dalam mode download, dimana sumber reset bukan dari DS 1812, melainkan dari sumber di luar sistem minimum. Jika jumper menghubungkan pin 2 dan 3 maka sistem minimum dalam mode stand alone dimana proses reset dilakukan oleh DS 1812 dan sistem minimum akan segera mengeksekusi program yang diunduh.
Periferal dasar yang diperlukan oleh suatu sistem minimum adalah memori sebagai penyimpanan program dan data, serta antarmuka Periferal yang Dapat Diprogram. Tujuh segmen banyak dijumpai pada jam digital, indikator antrian, tampilan angka digital, dan termometer digital. Prinsip kerja seven segment adalah input biner diubah pada saklar di decoder, kemudian decoder mengubah bilangan biner menjadi desimal yang selanjutnya akan ditampilkan pada seven segment.
Seven segment tersebut dapat menampilkan angka desimal dan karakter tertentu dengan menggabungkan apakah susunan LED pada seven segment tersebut aktif atau tidak. Untuk memudahkan penggunaan seven segment biasanya digunakan decoder (mengubah/mengubah bilangan biner masukan ke desimal) atau driver seven segment yang akan mengatur aktif atau tidaknya LED pada seven segment tergantung dari nilai biner yang diberikan. . Dekoder BCD ke tujuh segmen digunakan untuk menerima masukan BCD 4-bit dan memberikan keluaran yang meneruskan aliran melalui segmen untuk menampilkan angka desimal.
Ada dua jenis dekoder BCD tujuh segmen, yaitu dekoder yang beroperasi untuk mengaktifkan mode anoda umum tujuh segmen dan dekoder yang beroperasi untuk mengaktifkan mode katoda umum tujuh segmen. Contoh: Konverter BCD ke IC seven segment untuk common anode 7 segment menggunakan IC TTL 7447 untuk dekoder katoda common menggunakan IC TTL 7448. PWM adalah singkatan dari Pulsewidth Modulation, merupakan metode yang digunakan untuk mengontrol daya yang terhubung ke catu daya, misalnya dengan catu daya untuk komputer pribadi.
Selain fungsi PWM yang digunakan untuk mengontrol catu daya, PWM juga dapat digunakan untuk mengontrol gerak perangkat elektronik seperti motor servo. Komponen yang biasa digunakan untuk menghasilkan sinyal PWM adalah jenis IC digital yaitu IC 555 atau mikrokontroler.