Mikrokontroller AT89C51 termasuk dalam keluarga MCS-51TM dari intel. Sebuah mikrokontroller tidak dapat bekerja bila tidak diberi program kepadanya. Program tersebut memberitahu mikrokontroller apa yang harus dilakukan. Salah satu keunggulan dari AT89C51 adalah dapat diisi ulang dengan program lain sebanyak 1000 kali pengisian. Intruksi-intruksi perangkat lunak berbeda untu masing-masing jenis mikrokontroller. Intruksi-intruksi hanya dapat dipahami oleh jenis mikrokontroller yang bersangkutan. Intruksi-intruksi tersebut dikenal sebagai bahasa pemograman system mikrokontroller.
Sebuah mikrokontroller tidak dapat memahimi intruksi-intruk yang berlaku pada mirkrokontroller lain. Sebagai contoh, mikrokontroller buatan intel dengan mikrokontroller buatan Motorola memiliki perangkat intruksi yang berbeda.
Ü Karakteristik mikrokontroller AT89C51
Mikrokontroller AT89C51 memiliki beberapa fasilitas sebagai berikut :
· Sebuah CPU (Central Prosesing Unit) 8 bit yang termasuk keluarga MCS-51TM
· Osilator Internal dan rangkain timer
· Flash memori 4 Kbyte
· RAM internal 128 byte
· Empat buah programmable port I/O, masing-masing terdiri dari atas 8 buah jalur I/O
· Enam buah Jalur interupsi (3 buah interupsi eksternal dan 3 buah internal)
· Sebuah Port serial dengan control serial full duplex UART
· Kemampuan melaksanakan operasi perkalian, pembagian, penjumlahan dan operasi Boolean (bit)
· Kecepatan pelaksanaan intruksi per siklus 1 mikrodetik pada frekuensi clock 12 Mhz.
· ISP Programming
· Memiliki 2 DPTR
· WatchDog Timer
Ü Diskripsi Kaki (Pin) AT89S51
Susunan pin-pin mikrokontroler AT89S51 diperlihatkanan pada gambar dibawah ini. Penjelasan dari masing-masing pin adalah sebagai berikut :
a. pin 1 sampai 8 (port 1) merupakan prot paralel 8 bit dua arah (input-output) yang digunakan sebagai keperluan general purpose. P1.5, P1.6 dan P1.7 selain digunakan sebagai I/O. pin juga digunakan sebagai masukkan untuk pengisian program ke dalam IC AT89S51.
b. Pin 9 (Reset) adalah intrupsi reset (aktif high) perpindahan kondisi rendah ke tinggi akan mereset AT89C51. Pin ini dihubungkan dengan rangkaian power on reset
c. Pin 10 sampai 17 (port 3) adalah port paralel 8 bit dua arah (input-output) yang memiliki fungsi pengganti. Fungsi pengganti meliputi TXD (Transmisi Data), RXD (Receiver Data), INT0 (Interupt 0), INT1 (Interupt 1), T0 (timer 0), T1 (Timer 1), WR (Write), dan RD (Read). Bila fungsi pengganti tidak dipakai, pin-pin ini dapat digunakan sebagai port paralel 8 bit serbaguna
d. Pin 18 dan 19 (XTAL1 dan XTAL2) adalah pin input osilator kristal, yang merupakan input clock bagi rangkaian osilator internal
e. Pin 20 (ground) dihubungkan ke Vss atau Ground
f Pin 21 sampai 28 (port 2) adalah port paralel 8 bit dua arah (input-output). Port 2 ini mengirim byte alamat bila dilakukan pengaksesan memori ekternal
g. Pin 29 adalah pin PSEN (Program Strobe Enable) yang merupakan sinyal pengontrol yang membolehkan program memori eksternal masuk ke dalam bus selamat proses pemberian/pengambilan intruksi
h. Pin 30 adalah pin output ALE (Address Latch Enable) yang digunakan untuk menambah alamat memori eksternal selama pelaksanaan intruksi
i. Pin 31 EA bila pin ini diberi logika tinggi, mikrokontroler akan melaksanakan intruksi dari ROM ketika isi program counter kurang dari 4096, bila diberi logika rendah maka mikrokontroler akan melaksanakan seluruh intruksi dari memori program luar
j. Pin 32 sampai 39 (port 0) merupakan port paralel 8 bit open drain dua arah. Bila digunakan untuk mengakses memori luar, port ini akan memultipleks alamat memori dengan data
k. Pin 40 (Vcc) dihubungkan ke Vcc (+5 Volt)
Ü Organisasi Memori
Semua mikrokontroler dalam keluarga MCS-51 memiliki pembagian ruang alamat (address space) untuk program dan data. Pemisahan memori program dan memori data membolehkan memori data untuk diakses oleh alamat 8 bit. Meskipun demikian, alamat data 16 bit dapat dihasilkan melalui register DPTR (Data Pointer Register).
Ø Memori Program
Memori program hanya dapat dibaca tidak bisa ditulisi (karena disimpan dalam Flash Memori). Memori program dapat ditingkatkan sebesar 64 Kbyte dengan menambahkan memori eksternal. Sinyal yang membolehkan pembacaan dari memori program eksternal adalah dari PSEN. Memori data terletak pada ruang alamat terpisah dari memori program. RAM eksternal 64 Kbyte dapat dialamati dalam ruang memori data eksternal. CPU menghasilkan sinyal read dan write selama menghubungkan memori data eksternal.
Ø Memori Data
Memori data internal dipetakan seperti pada gambar dibawah ruangan memorinya dibagi dua bagian yaitu RAM 128 Byte serta SFR (Special Fungsi Register). Tiga puluh dua byte RAM paling bawah dikelompokan dalam 4 bank (8 register), yiatu R0 sampai R7. Ruang pengalamatan bit dan stratch pad area. Ruang SFR berisi penahan port, pewaktu (timer), pengontrol peripheral dan lain-lain. Register ini hanya dapat diakses oleh pengalamatan langsung.
Ü Osilator
Mikrokontroller AT89S51 memiliki osilator internal yang dapat diguakan sebagai sumber clock bagai CPU. Untuk menggunakan osilator internal diperlukan sebuah kristal atau resonator keramik antara pin XTAL1 dan XTAL2 dan sebuah kapasitor ke ground. Untuk kristalnya dapat digunakan frekuensi dari 6 sampai 24 Mhz. sedangkan untuk kapasitor dapat bernilai antara 27 pF sampai 33pF.
Ü Interupt
Apabila CPU pada mikrokontroler AT89S51 sedang melaksanakan tugas suatu program, kita dapat menghentikan pelaksanaan program tersebut secara sementara dengan meminta interupt. Apabila mendapat permintaan interupt, program counter (PC) akan diisi alamat vector interupt, setelah interupt selesai dilaksanakan maka CPU kembali ke program utama yang ditingalkan.
Pada mikrokontroler AT89S51 terdapat beberapa saluran interrupt. Interrupt pada AT89S51 dibedakan dalam dua jenis :
a. Interrupt yang tak dapat dihalangi oleh perangkat lunak (non maskable interrupt), misalnya reset
b. Interrupt yang dapat dihalangi perangkat lunak (maskable interrupt). Contoh interrupt jenis ini adalah INT0, INT1, Timer/Counter 1 serta interrupt serial.
Intruksi RETI harus digunakan untuk kembali dari layanan rutin interrupt. Intruksi ini dipakai agar saluran interrupt kembali dapat dipakai
Ü Timer/Counter
Mikrokontroller AT89C51 mempunyai dua buah timer/counter 16 bit yang dapat diatur melalui perangkat lunak, yaitu timer/counter 0 dan timer/counter 1. Bila timer/counter diaktifkan pada frekuensi kerja mikrokontroller 12 Mhz, timer/counter diaktifkan pada perhitungan waku 1 mikro detik secara bebas, tidak tergantung pada pelaksanaan suatu intruksi, satu sklus pencacahan waktu berpadanan dengan satu siklus pelaksanaan intruksi dan satu siklus diselenggarakan waktu 1 mikro detik. Apabila perioda tertentu telah dilampaui, timer/counter akan meng-interupt mikrokontroller untuk memberitahukan bahwa perhitungan perioda waktu telah selesai. Perioda waktu timer/counter secara umum ditentukan oleh persamaan sebagai berikut :
a) sebagai timer/counter 8 bit
T = (255 – Tlx) x 1uS
Dimana Tlx adalah isi register TL0 atau TL1.
b) Sebagai timer/counter 16 bit
T = (65535 – THx TLx) x 1uS
Dimana :
THx = isi register TH0 atau TH1
TLx = isi register TL0 atau TL1
Pengontrolan pemilihan mode operasi timer/counter adalah register timer mode (TMOD) yang definisi bit-bitnya adalah sebagai berikut :
Mode 3 diperlukan untuk aplikasi yang memerlukan timer/counter ekstra 8 bit,. Dengan timer 0 pada mode 3 mikrokontroller AT89C51 seperti memiliki 3 timer/counter saat timer 0 pada mode 3, timer 1 dapat dihidupkan atau dimatikan , atau dapat digunakan oleh port serial sebagai pembangkit baud rate. Untuk menjalankan timer 0 dan timer 1 secara bersamaan, dalam beberapa mode nilai TMOD harus di-OR-kan dengan nilai seperti terlihat untuk timer 1, pada control internal, timer dihidup – matikan dengan menset bit TR0 (control software). Pada control eksternal, timer dihidupkan/matikan dengan memberikan logika pada pin INT0.
Ü Karakteristik mikrokontroller AT89C51
Mikrokontroller AT89C51 memiliki beberapa fasilitas sebagai berikut :
· Sebuah CPU (Central Prosesing Unit) 8 bit yang termasuk keluarga MCS-51TM
· Osilator Internal dan rangkain timer
· Flash memori 4 Kbyte
· RAM internal 128 byte
· Empat buah programmable port I/O, masing-masing terdiri dari atas 8 buah jalur I/O
· Enam buah Jalur interupsi (3 buah interupsi eksternal dan 3 buah internal)
· Sebuah Port serial dengan control serial full duplex UART
· Kemampuan melaksanakan operasi perkalian, pembagian, penjumlahan dan operasi Boolean (bit)
· Kecepatan pelaksanaan intruksi per siklus 1 mikrodetik pada frekuensi clock 12 Mhz.
· ISP Programming
· Memiliki 2 DPTR
· WatchDog Timer
Ü Diskripsi Kaki (Pin) AT89S51
Susunan pin-pin mikrokontroler AT89S51 diperlihatkanan pada gambar dibawah ini. Penjelasan dari masing-masing pin adalah sebagai berikut :
a. pin 1 sampai 8 (port 1) merupakan prot paralel 8 bit dua arah (input-output) yang digunakan sebagai keperluan general purpose. P1.5, P1.6 dan P1.7 selain digunakan sebagai I/O. pin juga digunakan sebagai masukkan untuk pengisian program ke dalam IC AT89S51.
b. Pin 9 (Reset) adalah intrupsi reset (aktif high) perpindahan kondisi rendah ke tinggi akan mereset AT89C51. Pin ini dihubungkan dengan rangkaian power on reset
c. Pin 10 sampai 17 (port 3) adalah port paralel 8 bit dua arah (input-output) yang memiliki fungsi pengganti. Fungsi pengganti meliputi TXD (Transmisi Data), RXD (Receiver Data), INT0 (Interupt 0), INT1 (Interupt 1), T0 (timer 0), T1 (Timer 1), WR (Write), dan RD (Read). Bila fungsi pengganti tidak dipakai, pin-pin ini dapat digunakan sebagai port paralel 8 bit serbaguna
d. Pin 18 dan 19 (XTAL1 dan XTAL2) adalah pin input osilator kristal, yang merupakan input clock bagi rangkaian osilator internal
e. Pin 20 (ground) dihubungkan ke Vss atau Ground
f Pin 21 sampai 28 (port 2) adalah port paralel 8 bit dua arah (input-output). Port 2 ini mengirim byte alamat bila dilakukan pengaksesan memori ekternal
g. Pin 29 adalah pin PSEN (Program Strobe Enable) yang merupakan sinyal pengontrol yang membolehkan program memori eksternal masuk ke dalam bus selamat proses pemberian/pengambilan intruksi
h. Pin 30 adalah pin output ALE (Address Latch Enable) yang digunakan untuk menambah alamat memori eksternal selama pelaksanaan intruksi
i. Pin 31 EA bila pin ini diberi logika tinggi, mikrokontroler akan melaksanakan intruksi dari ROM ketika isi program counter kurang dari 4096, bila diberi logika rendah maka mikrokontroler akan melaksanakan seluruh intruksi dari memori program luar
j. Pin 32 sampai 39 (port 0) merupakan port paralel 8 bit open drain dua arah. Bila digunakan untuk mengakses memori luar, port ini akan memultipleks alamat memori dengan data
k. Pin 40 (Vcc) dihubungkan ke Vcc (+5 Volt)
Ü Organisasi Memori
Semua mikrokontroler dalam keluarga MCS-51 memiliki pembagian ruang alamat (address space) untuk program dan data. Pemisahan memori program dan memori data membolehkan memori data untuk diakses oleh alamat 8 bit. Meskipun demikian, alamat data 16 bit dapat dihasilkan melalui register DPTR (Data Pointer Register).
Ø Memori Program
Memori program hanya dapat dibaca tidak bisa ditulisi (karena disimpan dalam Flash Memori). Memori program dapat ditingkatkan sebesar 64 Kbyte dengan menambahkan memori eksternal. Sinyal yang membolehkan pembacaan dari memori program eksternal adalah dari PSEN. Memori data terletak pada ruang alamat terpisah dari memori program. RAM eksternal 64 Kbyte dapat dialamati dalam ruang memori data eksternal. CPU menghasilkan sinyal read dan write selama menghubungkan memori data eksternal.
Ø Memori Data
Memori data internal dipetakan seperti pada gambar dibawah ruangan memorinya dibagi dua bagian yaitu RAM 128 Byte serta SFR (Special Fungsi Register). Tiga puluh dua byte RAM paling bawah dikelompokan dalam 4 bank (8 register), yiatu R0 sampai R7. Ruang pengalamatan bit dan stratch pad area. Ruang SFR berisi penahan port, pewaktu (timer), pengontrol peripheral dan lain-lain. Register ini hanya dapat diakses oleh pengalamatan langsung.
Ü Osilator
Mikrokontroller AT89S51 memiliki osilator internal yang dapat diguakan sebagai sumber clock bagai CPU. Untuk menggunakan osilator internal diperlukan sebuah kristal atau resonator keramik antara pin XTAL1 dan XTAL2 dan sebuah kapasitor ke ground. Untuk kristalnya dapat digunakan frekuensi dari 6 sampai 24 Mhz. sedangkan untuk kapasitor dapat bernilai antara 27 pF sampai 33pF.
Ü Interupt
Apabila CPU pada mikrokontroler AT89S51 sedang melaksanakan tugas suatu program, kita dapat menghentikan pelaksanaan program tersebut secara sementara dengan meminta interupt. Apabila mendapat permintaan interupt, program counter (PC) akan diisi alamat vector interupt, setelah interupt selesai dilaksanakan maka CPU kembali ke program utama yang ditingalkan.
Pada mikrokontroler AT89S51 terdapat beberapa saluran interrupt. Interrupt pada AT89S51 dibedakan dalam dua jenis :
a. Interrupt yang tak dapat dihalangi oleh perangkat lunak (non maskable interrupt), misalnya reset
b. Interrupt yang dapat dihalangi perangkat lunak (maskable interrupt). Contoh interrupt jenis ini adalah INT0, INT1, Timer/Counter 1 serta interrupt serial.
Intruksi RETI harus digunakan untuk kembali dari layanan rutin interrupt. Intruksi ini dipakai agar saluran interrupt kembali dapat dipakai
Mikrokontroller AT89C51 mempunyai dua buah timer/counter 16 bit yang dapat diatur melalui perangkat lunak, yaitu timer/counter 0 dan timer/counter 1. Bila timer/counter diaktifkan pada frekuensi kerja mikrokontroller 12 Mhz, timer/counter diaktifkan pada perhitungan waku 1 mikro detik secara bebas, tidak tergantung pada pelaksanaan suatu intruksi, satu sklus pencacahan waktu berpadanan dengan satu siklus pelaksanaan intruksi dan satu siklus diselenggarakan waktu 1 mikro detik. Apabila perioda tertentu telah dilampaui, timer/counter akan meng-interupt mikrokontroller untuk memberitahukan bahwa perhitungan perioda waktu telah selesai. Perioda waktu timer/counter secara umum ditentukan oleh persamaan sebagai berikut :
a) sebagai timer/counter 8 bit
T = (255 – Tlx) x 1uS
Dimana Tlx adalah isi register TL0 atau TL1.
b) Sebagai timer/counter 16 bit
T = (65535 – THx TLx) x 1uS
Dimana :
THx = isi register TH0 atau TH1
TLx = isi register TL0 atau TL1
Pengontrolan pemilihan mode operasi timer/counter adalah register timer mode (TMOD) yang definisi bit-bitnya adalah sebagai berikut :
- Mode 0
- Mode 1
- Mode 2
- Mode 3
Mode 3 diperlukan untuk aplikasi yang memerlukan timer/counter ekstra 8 bit,. Dengan timer 0 pada mode 3 mikrokontroller AT89C51 seperti memiliki 3 timer/counter saat timer 0 pada mode 3, timer 1 dapat dihidupkan atau dimatikan , atau dapat digunakan oleh port serial sebagai pembangkit baud rate. Untuk menjalankan timer 0 dan timer 1 secara bersamaan, dalam beberapa mode nilai TMOD harus di-OR-kan dengan nilai seperti terlihat untuk timer 1, pada control internal, timer dihidup – matikan dengan menset bit TR0 (control software). Pada control eksternal, timer dihidupkan/matikan dengan memberikan logika pada pin INT0.