Lab Elektronika Industri Mikrokontroler - 1 AT89C1051 I. FITUR AT89C1051 • Kompatibel dengan produk MCS51 • 1k byte program flash ROM yang dapa diprogram ulang hingga 1000 kali • Tegangan operasi 2.7 volt hingga 5 volt • Frekuensi kristal (Oscilator) dari 0 – 24 MHz • Dua level penguncian memori program • 64 byte memori data SRAM • 15 input/output yang dapat diprogram • Satu 16 bit Timer/Counter • Tiga sumber interupsi • Output yang bisa mengendalikan LED secara langsung • Mempunyai pembanding (comparator) di dalamnya • Adanya Low Power Idle dan mode Power Down II. KETERANGAN AT89C1051 adalah 8 bit CMOS (Complementary Metal Oxide Semiconductor) mikrokomputer performansi tinggi, mempunyai tegangan operasi rendah, 1K byte Flash PEROM (Programmable and Erasable Read Only Memory). Chip AT89C1051 dimanufaktur dengan teknologi memori nonvolatile kepadatan tinggi ATMEL yang kompatibel dengan instruksi mikrokontroler standard industri MCS51. Dengan kombinasi CPU 8 bit dan flash memori pada satu chip monolithic, AT89C1051 adalah mikrokomputer yang powerful yang mengkombinasikan solusi tingkat fleksibilitas tinggi dengan biaya yang efektif untuk berbagai keperluan aplikasi sistem kontrol. AT89C1051 mempunyai fitur standar sebagai berikut: 1K byte Flash, 64 byte SRAM, 15 I/O line, satu 16 bit Timer/Counter, tiga sumber dua level interupsi, satu comparator analog yang presisi, rangkaian clock dan oscilator pada chip. Dan sebagai tambahan, AT89C1051 didesain dengan logika statik yang beroperasi pada frekuensi serendah 0 Hz dan mendukung dua mode operasi hemat daya listrik yang dipilih dengan software. Mode Idle akan menghentikan kerja CPU sementara membolehkan RAM, timer/counter, port serial dan sistem interupsi masih tetap beroperasi. Mode Power Down akan mengamankan isi RAM tetapi membekukan oscilator sehingga akan mematikan fungsi-fungsi lainnya sampai terdapat reset secara hardware. III. KONFIGURASI PIN IV. KETERANGAN PIN VCC Tegangan supply GND Ground Iwan B Pratama 5/9/2006 Lab Elektronika Industri Mikrokontroler - 2 Port 1 Port 1 adalah port input/output (I/O) dua arah 8 bit. Pada port 1 pin P1.2 hingga P1.7 sudah dilengkapi resistor pull-up internal, sedang P1.0 dan P1.1 perlu ditambahkan resistor pull-up secara eksternal. P1.0 juga sebagai input posistif bagi comparator analog (AIN0) dan P1.1 sebagai input negatif analog comparator (AIN1). Output port 1 mampu menarik arus hingga 20mA sehingga langsung dapat mengendalikan LED seri dengan resistor pembatas arus. Jika port 1 dibuat berlogika 1, port ini dapat dipakai sebagai input. Ketika P1.2 hingga P1.7 dipakai sebagai input dan diberikan logika rendah, port ini akan mampu mengeluarkan arus 50µA karena adanya resistor pull-up internal. Port 1 juga berfungsi untuk menerima data selama proses pengisian program flash ROM dan proses verifikasi. Port 3 Port 3 dengan P3.0 hingga P3.5 dan P3.7 (catatan P3.6 dihilangkan) adalah port input/output 7 bit dua arah dengan resistor pull-up internal. P3.6 secara internal dihubungkan ke output comparator analog tetapi tidak disediakan pin keluarnya. Port 3 mampu menarik arus hingga 20mA. Jika port 3 dibuat berlogika 1, port ini dapat dipakai sebagai input. Ketika P3 dipakai sebagai input dan diberikan logika rendah, port ini akan mampu mengeluarkan arus 50µA karena adanya resistor pull-up internal. Port 3 juga mempunyai beberapa fungsi seperti tabel berikut: Port P3.2 P3.3 P3.4 Fungsi Alternatif INT0 (interupsi eksternal 0) INT1 (interupsi eksternal 1) T0 (input clock eksternal Timer 0) Port 3 juga berfungsi untuk menerima beberapa sinyal kontrol selama proses pengisian program flash ROM dan proses verifikasi. RST Input reset. Semua port I/O akan diset ke 1 segera setelah input reset dibuat logika 1. Reset terjadi jika pin RST diset 1 selama paling tidak 2 siklus mesin. Satu siklus mesin membutuhkan 12 pulsa clock atau 12 pulsa oscilator. XTAL1 Input ke inverting oscilator amplifier atau input ke rangkaian clock internal. XTAL2 Output dari inverting oscilator amplifier KARAKTERISTIK OSCILATOR XTAL1 dan XTAL2 adalah input dan output dari inverting amplifier yang bisa dikonfigurasi sebagai rangkaian oscilator on-chip seperti terlihat pada rangkaian di bawah. Kristal quartz atau resonator keramik bisa digunakan untuk keperluan ini. Jika dinginkan sumber clock dari eksternal, pin XTAL2 dibiarkan tak tersambung dan pin XTAL1 untuk masuk clock eksternal seperti gambar di bawah. Clock eksternal tidak memerlukan pulsa dengan duty cycle 50% karena akan melewati T-FF (T-flip flop) yang akan membagi dua frekuensi dengan duty cycle 50%. Komponen kapasitor C1 dan C2 disarankan 30pF ± 10pF untuk kristal quartz dan 40pF ± 10pF untuk resonator keramik. Iwan B Pratama 5/9/2006 Lab Elektronika Industri Mikrokontroler - 3 Jika memakai eksternal clock perlu diperhatikan bahwa pulsa tinggi memiliki tegangan minimum 2.7V dan maksimum 5.2V sedang pulsa rendah memiliki tegangan maksimum 0.3V dan tegangan minimum 0V. Diagram blok AT89C1051 terlihat seperti gambar di bawah: V. REGISTER FUNGSI KHUSUS Special Function Register (SFR) atau register fungsi khusus dalam AT89C1051 terdiri dari: SP : Stack Pointer Address : 081H Reset : 07H SP adalah register penunjuk stack ketika ingin menyimpan data sementara ke dalam stack (memori) yang terdapat di RAM internal. Untuk menyimpan data ke stack digunakan istruksi Iwan B Pratama 5/9/2006 Lab Elektronika Industri Mikrokontroler - 4 PUSH dan untuk mengambil data dari stack dengan instruksi POP. Ketika direset penunjuk stack adalah memori 07H. Jadi instruksi pertama PUSH A ;akan menyimpan isi A ke memori 07H setelah instruksi ini, isi SP akan dinaikkan 1 jadi akan menunjuk ke alamat 08H. Jika kemudian ada instruksi PUSH lagi maka akan disimpan ke alamat 08H dan SP = 09H. Instruksi POP akan mengurangi isi SP dengan 1 dan kemudian membaca isi memori itu. Jadi misal POP B ; B akan berisi memori di alamat 08H. Begitu seterusnya. Dengan ini, kita mempunyai memori yang digunakan untuk menyimpan data secara FILO (first in last out) data yang masuk duluan akan dikeluarkan belakangan. DPL : Data Pointer Low byte Address : 082H Reset : 00H Data pointer untuk byte rendah yang bersama dengan DPH digunakan untuk membuat alamat 16 bit yang akan mengakses (membaca) data yang disimpan dalam memori program (flash ROM). DPH : Data Pointer High byte Address : 083H Reset : 00H Data pointer untuk byte tinggi yang bersama dengan DPL membentuk alamat 16 bit untuk mengakses (membaca) data yang disimpan dalam flash ROM. Penggunaan DPH + DPL biasa dikenal dengan register DPTR (data pointer) yang penggunaannya bersamaan dengan instruksi MOVC (lihat set instruksi). PCON : Power Control Address : 087H Reset : 0xxx0000b PCON digunakan untuk mengatur penggunaan power (tenaga listrik) untuk mengaktifkan Mode Idle dan/atau Mode Power Down. Selain itu terdapat bit SMOD untuk mengatur frekuensi clock internal bagi timer/counter (lihat pangaturan baudrate serial port dengan timer/counter). TCON : Timer Control Register Address : 088H Reset : 00H Timer control digunakan untuk mengendalikan timer/counter. Bit TR0 digunakan untuk menstart atau men-stop timer. Bit TF0 digunakan untuk memantau kondisi timer/counter telah terjadi overflow (melimpah). TMOD: Timer Mode Register Address : 089H Reset : 00H Timer mode adalah register untuk mengatur kerja timer 0 dalam AT89C1051 bekerja di mode 0, 1, 2 atau mode 3. Mode 0 adalah mode pencacah biner 13 bit, mode 1 adalah pencacah biner 16 bit, mode 2 adalah counter 8 bit isi ulang otomatis dan mode 3 adalah sebagai dua counter 8 bit. TL0 : Timer 0 Low Address : 08AH Reset : 00H TL0 adalah register yang digunakan sebagai counter biner 8 bit rendah. Melalui register ini kondisi counter dapat dibaca atau diisi data tertentu. TH0 : Timer 0 High Address : 08CH Reset : 00H TH0 adalah register yang digunakan sebagai counter biner 8 bit tinggi. Melalui register ini kondisi counter dapat dibaca atau diisi data tertentu. TH0 + TL0 membentuk pencacah 13 bit atau 16 bit. P1 : Port 1 Address : 090H Reset : 0FFH P1 adalah register port 1. Melalui port 1 dapat digunakan sebagai saluran data masuk/keluar. IE : Interrupt Enable Address : 0A8H Reset : 0xx00000b Adalah register untuk mengatur sistem interupsi. Sumber mana saja yang bisa mengakibatkan terjadi interupsi. P3 : Port 3 Address : 0B0H Reset : 0FFH P1 adalah register port 3. Melalui port 3 dapat digunakan sebagai saluran data masuk/keluar. P3.6 tidak mempunyai sambungan keluar IC tetapi secara internal disambungkan ke output dari comparator analog. IP : Interrupt Priority Address : 0B8H Reset : xxx00000b Iwan B Pratama 5/9/2006 Lab Elektronika Industri Mikrokontroler - 5 IP digunakan untuk mengatur prioritas dari sumber insterupsi. PSW : Program Status Word Address : 0D0H Reset : 00H PSW berisi status dari program. Terdapat bit C (carry bit). Digunakan juga untuk mengatur bank alamat register R0 hingga R7 ACC : Accumulator Address : 0E0H Reset : 00H Acc sering disebut hanya register A adalah register utama dalam operasi aritmatika dan logika. B : Register B Register tambahan. Address : 0F0H Reset : 00H VI. PEMBATASAN PADA BEBERAPA INSTRUKSI AT89C1051 hanya mempunyai flash ROM sebesar 1Kbyte. Keadaan ini harus dipahami oleh programmer yang menggunakannya sedemikian rupa semua instruksi lompatan (jump) dan pencabangan (branching) masih jatuh dalam lokasi ruang memori 1Kbyte. Ruang memori flash yang valid adalah dari 000H hingga 3FFH bagi AT89C1051. Mencoba mengakses lokasi memori diluar ini akan menyebabkan program berjalan tanpa dapat diketahui. 1. Instruksi Pencabangan : LCALL, ACALL, LJMP, AJMP, SJMP, JMP @A+DPTR Instruksi di atas harus menjaga agar selalu hanya menjangkau lokasi memori dalam ruang 1Kbyte yaitu dari 000H hingga 3FFH. Usaha menjangkau lokasi memori diluar 1Kbyte akan menyebabkan program berjalan tanpa bisa diketahui. CJNE [....], DJNZ [....], JB, JNB, JC, JNC, JBC, JZ, JNZ Instruksi ini juga memakai aturan seperti di atas. 2. Instruksi berkaitan dengan MOVX AT89C1051 hanya dilengkapi dengan 64byte RAM. Instruksi yang melibatkan RAM bararti hanya terbatas pada ruang dari alamat 00H hingga 3FH. Ukuran stack juga hanya maksimum adalah 54byte (64byte – 8byte). AT89C1051 tidak dilengkapi dengan kemampuan untuk mengakses memori data eksternal dan memori program eksternal. Sehingga instruksi MOVX [...] tidak diperbolehkan pada AT89C1051. VII. BIT-BIT PENGUNCI MEMORI PROGRAM Bit pengunci program (LB, Lock Bit) terdapat dua yaitu LB1 dan LB2 yang bisa dibiarkan tak diprogram (U, unprogrammed) atau dapat diprogram (P, programmed). Iwan B Pratama 5/9/2006 Lab Elektronika Industri Mikrokontroler - 6 VIII. MODE IDLE Pada mode idle, CPU dibuat berhenti (sleep) sementara semua periferal lainnya tetap aktif. Mode idle diaktifkan dengan software. Isi RAM dan isi semua register fungsi khusus masih tidak berubah selama mode idle. Mode idle dapat dihentikan dengan adanya interupsi atau mereset hardware. P1.0 dan P1.1 sebaiknya direset ke 0 jika tidak ada resistor pull-up eksternal dan diset ke 1 jika diberi resistor pull-up eksternal. Jika mode idle dihentikan dengan reset hardware, akan memerlukan 2 siklus mesin sebelum mikrokontroler akan memulai lagi melaksanakan program dari mana ketika ditinggalkan. Dalam kondisi idle sebaiknya jangan mengakses RAM tetapi masih boleh mengakses port. IX. MODE POWER DOWN Pada mode power down, oscilator akan dihentikan dan instruksi yang mengaktifkan mode power down adalah instruksi terakhir yang dieksekusi. Isi RAM dan register fungsi khusus masih dipertahankan sampai mode power down dihentikan. Satu cara untuk menghentikan mode power down adalah dengan reset hardware. Setelah reset diberikan, isi register fungsi khusus akan kembali ke keadaan awal tetapi isi RAM masih tetap akan dipertahankan. Reset untuk menghentikan power down jangan dilakukan sebelum tegangan VCC dikembalikan lagi ke 5V. P1.0 dan P1.1 sebaiknya direset ke 0 jika tidak diberikan resistor pull-up eksternal dan diset ke 1 jika diberikan resistor pull-up eksternal. X. MEMPROGRAM FLASH ROM AT89C1051 mempunyai 1K byte flash PEROM yang saat keluar dari pabrik dalam kondisi terhapus isinya (semua berisi 0FFH) yang siap untuk diprogram. Pengisian program dikerjakan 1 byte setiap satu waktu tertentu. Sekali diisi program, PEROM dalam kondisi tidak kosong (nonblank) dan harus dihapus semua isi PEROM terlebih dahulu sebelum diprogram ulang. Internal Address Counter Internal address counter atau pencacah alamat internal adalah fasilitas didalam PEROM untuk mengalamati PEROM selama proses pengisian program. Isi internal address counter akan direset ke 000H ketika input RST diberi logika 1. Isi internal address counter akan dinaikkan satu ketika ada pulsa naik pada pin XTAL1 (pin 5). Algoritma Pengisian Program Urutan memprogram AT89C1051 adalah sebagai berikut: 1. Urutan Pemberian Listrik: Berikan daya listrik pada VCC dan GND. Buat RST dan XTAL1 ke 0. 2. Set RST ke 1 dan Pin P3.2 juga ke 1. 3. Berikan kombinasi logika 1 atau 0 ke P3.3, P3.4, P3.5 dan P3.7 untuk memilih berbagai kombinasi operasi pemrograman PEROM seperti tabel di bawah. 4. Sediakan data Code yang akan diisikan pada lokasi 000H ke P1.0 hingga P1.7 5. Naikkan pin RST ke 12V untuk membolehkan pengisian program 6. Berikan pulsa rendah di P3.2 untuk memprogram/mengunci flash PEROM. Proses pengisian PEROM telah diatur secara internal dan akan memakan waktu sekitar 1.2 milidetik. Kombinasi port 3 lihat tabel. 7. Untuk memverifikasi data yang telah diisikan, buat RST turun dari 12V ke 5V dan berikan kombinasi port 3 seperti tabel. Data yang diprogram dapat dibaca dari port 1. 8. Untuk memprogram 1 byte pada lokasi address berikutnya, berikan pulsa naik ke pin XTAL1 sekali untuk menaikkan isi Internal Address Counter. Sediakan data baru ke port 1. Iwan B Pratama 5/9/2006 Lab Elektronika Industri Mikrokontroler - 7 9. Ulangi langkah 5 sampai 8 dengan memberikan data yang sesuai ke port 1 dan memberikan pulsa ke XTAL1 untuk menaikkan address counter hingga maksimum 1K byte lokasi atau data yang diisikan habis. 10. Urutan mematikan listrik: buat XTAL1 ke 0, input RST ke 0 dan matikan listrik. a. Polling Data AT89C1051 mengeluarkan polling data untuk mengindikasikan akhir dari siklus pengisian 1 byte ke flash ROM. Selama penulisan data ke flash, jika dilakukan pembacaan 1 byte data yang telah diprogramkan ke flash akan menghasilkan komplemen dari P1.7 yang diprogramkan sebelumnya. Jika siklus penulisan telah komplit maka data yang benar akan muncul di port 1 untuk proses verifikasi dan siklus penulisan data berikutnya bisa dimulai. Sinyal polling data ini bisa muncul kapan saja setelah siklus penulisan ke flash telah dimulai. b. Ready/Busy Proses penulisan data ke flash ROM juga bisa dipantau dari adanya sinyal Ready/Busy ini. P3.1 akan 0 untuk menandakan sedang terjadi penulisan ke flash (BUSY) setelah P3.2 dikembalikan ke 1. P3.1 akan diset ke 1 lagi ketika proses penulisan ke flash telah selesai dan siap untuk proses penulisan berikutnya (READY). Iwan B Pratama 5/9/2006 Lab Elektronika Industri Mikrokontroler - 8 c. Verifikasi Penulisan Jika bit pengunci LB1 dan LB2 tidak diprogram, isi flash ROM dapat dibaca dari port 1 untuk proses verifikasi. Prosedurnya adalah: 1. Reset internal address counter ke alamat 000H dengan membuat pin RST dari 0 ke 1. 2. Berikan kombinasi logika untuk mode pembacaan isi flash ROM dan data dapat dibaca dari port 1. 3. Berikan 1 pulsa ke XTAL1 untuk menaikkan address counter 4. Baca isi flash ROM berikutnya dari port 1 5. Ulangi langkah 3 dan 4 sampai semua isi flash telah dibaca. Bit pengunci (lock bit) sendiri tidak bisa diverifikasi. d. Penghapusan Isi Flash (Erase) Seluruh isi flash ROM (1Kbyte) dan dua lock bit dapat dihapus dengan kombinasi untuk mode penghapusan isi ROM dan memberikan pulsa rendah ke P3.2 selama 10 milidetik. Proses penghapusan membuat isi ROM akan diset ke 1 semua (semua berisi 0FFH). Proses penghapusan harus dilakukan dulu sebelum isi flash ROM diprogram ulang. e. Membaca Signature Byte Pembacaan signature byte dilakukan dengan cara yang sama dengan proses verifikasi pada lokasi 000H, 001H dan 002H kecuali bahwa P3.5 dan P3.7 juga direset ke 0. Data yang terbaca akan mempunyai arti sbb: [000H] = 1EH menandakan chip dibuat oleh ATMEL [001H] = 11H menandakan chip adalah AT89C1051 Iwan B Pratama 5/9/2006 Lab Elektronika Industri Mikrokontroler - 9 Iwan B Pratama 5/9/2006