arsitektur mikrokontroler at89c51/52/53

advertisement
ARSITEKTUR MIKROKONTROLER AT89C51/52/55
A.
Pendahuluan
Mikrokontroler merupakan lompatan teknologi mikroprosesor dan mikrokomputer. Mikrokontroler diciptakan tidak semata-mata hanya memenuhi kebutuhan kalangan industri, namun juga para konsumen untuk pembuatan alat-alat bantu
dan mainan yang lebih canggih. Aplikasi lain dari mikrokontroler adalah dalam
bidang pengukuran jarak-jauh / telemetri. Sistem telemetri ini jelas memerlukan
sistem akuisi data sekaligus sistem pengiriman data secara serial (melalui transmiter), yang semua itu bisa diperoleh dari mikrokontroler yang digunakan. Sedikit
berbeda dengan sistem komputer (yang dapat menangani berbagai macam program
aplikasi), mikrokontroler hanya bisa digunakan untuk aplikasi tertentu saja (hanya
satu program saja yang dapat disimpan). Perbedaan lainnya terletak pada
perbandingan memori ROM & RAM-nya. Pada sistem komputer perbandingan
memori ROM & RAM-nya besar, artinya program-program yang sedang digunakan
disimpan dalam RAM yang kapasitasnya relatif besar, sedang rutin-rutin interface
hardware disimpan dalam ROM yang kapasitasnya kecil. Untuk mikrokontroler
perbandingan memori ROM & RAM-nya yang besar, artinya program kontrol
disimpan dalam ROM (bisa Masked ROM atau Flash PEROM) yang ukurannya
relatif besar, sedangkan RAM digunakan sebagai tempat penyimpan sementara, termasuk register-register yang dipakai pada mikrokontroler yang bersangkutan.
B.
Pengenalan Mikrokontroler AT89C51
Mikrokontroler, sebagai suatu terobosan teknologi mikroprosesor dan
mikrokomputer, hampir memenuhi kebutuhan pasar dan teknologi baru. Teknologi
baru, di sini pengertiannya adalah teknologi semikonduktor dengan kandungan
transistor yang lebih banyak namun membutuhkan ruang yang kecil serta dapat
diproduksi secara massal sehingga harganya menjadi lebih murah. Mikrokontroler
hadir untuk memenuhi selera industri dan para konsumen akan kebutuhan dan
keinginan alat-alat bantu dan mainan yang lebih baik atau canggih.
Ada perbedaan yang cukup penting antara mikroprosesor dengan
mikrokontroler. Jika mikroprosesor merupakan CPU (Central Processing Unit)
tanpa memori dan I/O pendukung dari sebuah komputer, maka mikrokontroler
umumnya terdiri atas CPU, memori, I/O tertentu, dan unit pendukung lainnya,
misalnya Analog to Digital Converter (ADC) yang sudah terintegrasi di dalam
mikrokontroler tersebut. Kelebihan mikrokontroler adalah telah tersedianya RAM
dan peralatan I/O pendukung. Terdapat berbagai jenis mikrokontroler dari berbagai
vendor yang digunakan secara luas di dunia ini. Di antaranya yang terkenal adalah
dari Intel, Maxim, Motorola, dan ATMEL.
2.1.1
Komponen Dasar Mikrokontroler
Mikrokontroler umumnya terdiri dari dari CPU, memori, I/O
tertentu dan unit pendukung lainnya seperti ADC (Analog Digital
Converter) yang sudah terintegrasi didalamnya.
1. Cental Processing Unit (CPU)
CPU terdiri atas dua bagian, yaitu unit pengendali (control unit)
serta unit aritmatika dan logika (ALU). Fungsi utama unit pengendali
adalah mengambil, mengkodekan, dan melaksanakan urutan instruksi
sebuah program yang tersimpan dalam memori. Unit pengendali
menghasilkan dan mengatur sinyal pengendali yang diperlukan untuk
menyerempakan operasi, aliran, dan instruksi program. Unit aritmatika
dan logika berfungsi untuk melakukan proses perhitungan yang
diperlukan selama program dijalankan serta mempertimbangkan suatu
kondisi dan mengambil keputusan yang diperlukan untuk instruksiinstruksi berikutnya.
2. Bus Alamat
Bus
alamat
berfungsi
sebagai
sejumlah
lintasan
saluran
pengalamatan antara alat dengan sebuah komputer. Pengalamatan ini
harus ditentukan terlebih dahulu untuk menghindari terjadinya kesalahan
pengiriman sebuah instruksi dan terjadinya ketidaksesuaian antara dua
buah alat yang bekerja secara bersamaan.
3. Bus Data
Bus data merupakan sejumlah lintasan saluran keluar-masuknya
data dalam suatu mikrokontroler. Pada umumnya saluran data yang
masuk sama dengan saluran data yang keluar.
4. Bus Kontrol
Bus
kontrol
atau
bus
pengendali
ini
berfungsi
untuk
menyerempakan operasi mikrokontroler dengan operasi rangkaian luar.
5. Memori
Di dalam sebuah mikrokontroler terdapat suatu memori yang
berfungsi untuk menyimpan data atau program. Ada beberapa jenis
memori, di antaranya adalah RAM dan ROM. Ada beberapa tingkatan
memori, di antaranya adalah register internal, memori utama, dan
memori massal. Register internal adalah memori di dalam ALU. Waktu
akses register ini sangat cepat, umumnya kurang dari 100 ns. Memori
utama adalah memori yang ada pada suatu sistem. Waktu aksesnya lebih
lambat dibanding register internal, yaitu antara 200 sampai 1000 ns.
Memori massal dipakai untuk penyimpanan berkapasitas tinggi,
biasanya berbentuk disket, pita magnetik, atau kaset.
6. Random Access Memory (RAM)
RAM merupakan memori yang dapat dibaca dan ditulis. RAM
biasanya digunakan untuk menyimpan data sementara atau sering
disebut dengan memori data saat program bekerja. Data yang ada pada
RAM akan hilang bila catu daya dari RAM dimatikan sehingga RAM
hanya dapat digunakan untuk menyimpan data sementara. Teknologi
RAM dapat dibagi menjadi dua, yaitu statik dan dinamik. RAM dinamik
tersusun oleh sel-sel yang menyimpan data sebagai muatan listrik pada
kapasitor. Ada-tidaknya muatan yang ada pada kapasitor dijadikan oleh
RAM dinamik sebagai bilangan biner 1 atau 0. Oleh karena kapasitor
memiliki kecendrungan alami untuk mengosongkan muatan, RAM
dinamik
memerlukan
pengisian
muatan
secara
periodik
untuk
memelihara penyimpanan data. Pada RAM statik, nilai biner disimpan
menggunakan konfigurasi gate logika flip-flop. RAM statik akan
menyimpan data selama aliran daya diberikan padanya.
7. Read Only Memory (ROM)
ROM merupakan memori yang hanya dapat dibaca. Data yang
disimpan di ROM tidak akan hilang meskipun tegangan catu daya
dimatikan. Berdasar sifat itu maka ROM sering dipakai untuk
menyimpan program. Ada beberapa jenis ROM, diantaranya ROM,
PROM, EPROM, dan EEPROM. ROM merupakan memori yang sudah
diprogram oleh pabrik. PROM dapat diprogram oleh pemakai tapi hanya
dapat ditulis sekali saja. UV-EPROM merupakan PROM yang dapat
diprogram atau ditulis beberapa kali dan dapat dihapus dengan sinar
ultraviolet. Flash PEROM adalah PROM yang dapat ditulis ulang
beberapa kali dan dapat dihapus secara elektrik atau dengan tegangan
listrik. UV-EPROM harganya lebih mahal dari Flash PEROM, karena
itu
Flash
PEROM
lebih
populer
dan
diminati
programmer
mikrokontroler.
2.1.2
Mikrokontroler AT89C51
Mikrokontroler AT89C51 adalah mikrokomputer CMOS 8 bit
dengan 4KB Flash Programmable dan Erase Read Only Memory (PEROM)
yang termasuk dalam keluarga Atmel. Mikrokontroler jenis ini merupakan
Chip yang menggunakan teknologi memori non-volatile, mikrokontroler
AT89C51 ini kompatibel dengan mikrokontroler standar industri MCS-51
(seperti mikrokontroler 8031 yang terkenal dan banyak digunakan beberapa
waktu lalu).
AT89C51 mempunyai memori yang terdiri atas : RAM internal
sebesar 128 byte dengan alamat 00H-7Fh, dan dapat diakses menggunakan
RAM address register. RAM internal ini terdiri atas Register Banks dengan
8 buah register (R0-R7). Memori lain, yaitu 21 buah Special Function
Register dimulai dari alamat 80H-FFH. RAM ini beda lokasi dengan Flash
PEROM dengan alamat 000H-7FFH.
Tabel 1. Alamat RAM Internal
Special Function Register
RAM Internal
Untuk sekedar perbandingan kapasitas memori, Tabel 2 berikut
memperlihatkan kapasitas memori dari mikrokontroler seri AT89XXX.
Tabel 2. Kapasitas Memori Mikrokontroler seri AT89XXX.
2.1.3
Type
RAM
Flash Memory
EEPROM
AT89C51/S51
8 x 128 byte
4 Kbyte
Tidak
AT89C52/S52
8 x 256 byte
4 Kbyte
Tidak
AT89C55
8 x 256 byte
4 Kbyte
Tidak
AT89S53
8 x 256 byte
4 Kbyte
Tidak
AT89S8252
8 x 256 byte
4 Kbyte
4 Kbyte
Arsitektur Mikrokontroler AT89C51
Sebuah mikrokontroler dapat bekerja bila di dalam mikrokontroler
tersebut terdapat sebuah program yang berisi instruksi-instruksi yang akan
digunakan untuk menjalankan sistem mikrokontroler tersebut. Pada
prinsipnya program pada mikrokontroler dijalankan secara bertahap, jadi
pada program itu sendiri terdapat beberapa set instruksi dan tiap instruksi itu
dijalankan secara bertahap atau berurutan.
Beberapa fasilitas yang dimiliki oleh mikrokontroler AT89C51
adalah sebagai berikut:
a. Sebuah CPU 8 bit.
b. Osilator internal dan rangkaian pewaktu.
c. RAM internal 128 byte.
d. Flash memori 4 Kbyte.
e. Lima buah jalur interupsi (dua buah interupsi eksternal dan tiga buah
interupsi internal).
f. Empat buah programable port I/O yang masing-masing terdiri dari
delapan buah jalur I/O.
g. Sebuah port serial dengan kontrol serial full duplex UART.
h. Kemampuan untuk melaksanakan operasi aritmatika dan logika.
i. Kecepatan dalam melaksanakan instruksi per siklus 1 mikrodetik pada
frekuensi 12 MHz.
Berdasarkan
susunan
kaki
yang terdapat
pada
Gambar
2
mikrokontroler AT89C51 di atas dapat dijelaskan sebagai berikut:
a. VCC
Vcc digunakan sebagai catu daya (+) yang dibutuhkan mikrokontroler
AT89C51.
b. GND
GND digunakan sebagai ground .
Gambar 1. Mikrokontroler seri AT89C51
c. RST (Reset)
Berfungsi sebagai masukan reset. Kondisi high selama 2 siklus mesin
selama osilator bekerja akan me-reset mikrokontroler yang bersangkutan.
d. ALE/PROG
Keluaran ALE atau Address Latch Enable akan menghasilkan pulsa-pulsa
untuk mengunci byte rendah (low byte) alamat selama mengakses memori
eksternal. Kaki ini juga berfungsi sebagai
masukan pulsa program (the
program pulse input) atau PROG selama pemrograman flash. Pada
operasi normal, ALE akan berpulsa dengan laju 1/6 dari frekuensi kristal
dan dapat digunakan sebagai pewaktuan (timing) atau pendetakan
(clocking) rangkaian eksternal. Jika dikehendaki, operasi ALE bisa
dimatikan dengan cara mengatur bit 0 dari SFR lokasi 8Eh. Jika isinya
‘1’(hight), ALE hanya akan aktif selama dijumpai instruksi MOVX
atau MOVC. Selain itu, kaki ini akan secara lemah di-pulled high.
Mematikan bit ALE tidak akan ada efeknya jika mikrokontroler
mengeksekusi program secara eksternal.
e. Port 0
Port 0 merupakan port paralel 8 bit dua arah. Posisi Least Significant Bit
(LSB) terletak pada kaki 39 dan Most Significant
Bit
(MSB)
terletak
pada kaki 32.
Gambar 2. Bit Port 0
Port 0 juga merupakan port keluaran/masukkan (I/O) bertipe open
drain bidirectional, dan sebagai port keluaran, masing-masing kaki dapat
menyerap arus (sink) delapan masukkan TTL (sekitar 3,8 mA). Pada saat
‘1’ dituliskan ke kaki-kaki Port 0 ini, maka kaki-kaki Port 0 dapat digunakan sebagai masukan berimpedansi tinggi. Port 0 juga dapat dikonfigurasi sebagai bus alamat/data bagian rendah (low byte) selama proses
pengaksesan memori data dan program eksternal. Jika digunakan dalam
mode ini Port 0 memiliki pull-up internal. Port 0 juga menerima
kode-
kode yang dikirimkan kepadanya selama proses pemrograman dan
mengeluarkan kode-kode selama proses verifikasi program yang telah tersimpan dalam flash. Dalam hal ini dibutuhkan pull-up eksternal selama
proses verifikasi program.
f. Port 1
Port 1 merupakan port paralel 8 bit dua arah. Posisi LSB terletak pada
kaki 1 dan MSB terletak pada kaki 8.
Gambar 3. Bit Port 1
Port 1 merupakan port I/O dua arah yang dilengkapi dengan pull-up
internal. Penyangga keluaran Port 1 mampu memberikan / menyerap
arus empat masukan TTL (sekitar 1,6mA). Jika ‘1’ dituliskan ke kakikaki Port 1, maka masing-masing kaki akan di-pulled high dengan pullup internal sehingga dapat digunakan sebagai masukan. Apabila kakikaki Port 1
dihubungkan ke ground (di-pulled low), maka masing-
masing kaki akan memberikan arus (source) karena di-pulled high
secara internal. Port 1 juga menerima alamat bagian rendah (low byte)
selama pemrograman dan verifikasi flash.
g. Port 2
Port 2 merupakan port paralel 8 bit dua arah. Port ini mengirim byte alamat-alamat bila dilakukan pengaksesan memori eksternal. LSB terletak
pada kaki 21 dan MSB terletak pada kaki 28.
Gambar 4. Bit Port 2
Penyangga keluaran Port 2 mampu memberikan/menyerap arus empat
masukan TTL (sekitar 1,6 mA). Jika ‘1’ dituliskan ke kaki- kaki Port 2,
maka masing-masing kaki akan di-pulled high dengan pullup internal
sehingga dapat digunakan sebagai masukan. Apabila kaki-kaki Port 2
dihubungkan ke ground (di-pulled low), maka masing-masing kaki akan
memberikan arus (source) karena di-pulled high secara internal. Port 2
akan memberikan byte alamat bagian tinggi (high byte) selama
pengambilan instruksi dari
memori program eksternal dan selama
pengaksesan memori data
eksternal
yang
menggunakan
perintah
dengan alamat 16 bit (misalnya: MOVX @ DPTR). Dalam aplikasi ini,
jika ingin mengirimkan ‘1’, maka digunakan pull-up internal yang sudah
disediakan.
Selama
pengaksesan
memori
data
eksternal
yang
menggunakan perintah dengan alamat 8 bit (misalnya: MOVX @Ri),
Port 2 akan mengirimkan isi dari SFR P2. Port 2 juga menerima alamat
bagian tinggi selama pemrograman dan verifikasi flash.
h. Port 3
Port 3 merupakan port paralel 8 bit dua arah. LSB terletak pada kaki 10
dan MSB terletak pada kaki 17. Port ini mempunyai beberapa fungsi
khusus yaitu:
Tabel 3. Fungsi khusus kaki-kaki pada port 3
KAKI PORT 3
FUNGSI KHUSUS
P3.0
RXD (port input serial)
P3.1
TXD (port output serial)
P3.2
INT0 (interrupt eksternal 0)
P3.3
INT1 (interrupt eksternal 1)
P3.4
T0 (input eksternal timer 0)
P3.5
T1 (input eksternal timer 1)
P3.6
WR (perintah write pada memori eksternal)
P3.7
RD (perintah read pada memori eksternal)
Port 3 merupakan port
I/O dua arah dengan dilengkapi pull-up
internal. Penyangga keluaran Port 3 mampu memberikan / menyerap arus
empat masukan TTL (sekitar 1,6 mA).
Gambar 5. Bit Port 3
Jika ‘1’ dituliskan ke kaki-kaki Port 3, maka masing-masing kaki akan
di-pulled high dengan pull-up internal sehingga dapat
digunakan
sebagai masukan. Apabila kaki-kaki Port 3 dihubungkan ke ground (dipullup low), maka masing-masing
kaki akan memberikan arus (source)
karena di-pulled high secara internal.
i. PSEN (Program Store Enable)
Merupakan sinyal baca untuk memori program eksternal. Saat
mikrokontroler
keluarga
51
menjalankan
program
dari
memori
eksternal, PSEN akan diaktifkan dua kali per siklus mesin, kecuali
dua aktivasi PSEN dilompati (diabaikan) saat mengakses memori data
eksternal.
Gambar 6. Diagram blok AT89C51
j. EA/Vpp (External Access Enable)
EA harus selalu dihubungkan ke ground, jika mikrokontroler akan
mengeksekusi program dari memori eksternal lokasi 0000h hingga
FFFFh. Selain dari itu, EA harus dihubungkan ke Vcc agar
mikrokontroler mengakses program secara internal.
k. XTAL 1
XTAL1 berfungsi sebagai masukan dari rangkaian osilator.
l. XTAL 2
XTAL 2 berfungsi sebagai keluaran dari rangkaian osilator.
Download