|
|
Mikrokontroler
89C51
Mikrokontroler 89C51 merupakan mikrokomputer CMOS
8 bit dengan 4 Kbytes Flash Programmable. Arsitektur
89C51 ditunjukkan pada gambar 2 |
|
Accumulator
ACC merupakan register akumulator. Pada program ditulis
dengan A. |
GAMBAR
2 BLOK DIAGRAM 89C51
|
Special
Function Registers (SFR)
Gambar 3 menunjukkan pemetaan dari daerah memori yang
disebut dengan Special Function Registers (SFR). SFR
yang ditandai dengan (…) hanya terdapat pada 89C52,
tetapi tidak terdapat pada 89C51. Tidak semua alamat
ditempati, alamat yang kosong tidak diimplementasikan
pada chip. Melakukan pembacaan pada alamat yang kosong,
akan menghasilkan data random, sedangkan penulisan
tidak berpengaruh. Fungsi dari masing-masing register
dijelaskan pada bagian berikut : |
|
Register
B
Register B digunakan pada operasi perkalian dan pembagian.
Pada instruksi-instruksi yang lain berfungsi seperti register
umumnya.
Program Status Word (PSW)
PSW berisi informasi status program
Stack Pointer (SP)
Stack Pointer terdiri dari 8 bit. Alamat SP ditambah / dinaikkan
sebelum data disimpan pada eksekusi instruksi PUSH dan CALL.
SP dapat diletakkan pada alamat manapun di on- |
|
Mikrokontroler
89C51
- Halaman 1
|
chip
RAM, SP diinisialisasi pada alamat 07H setelah reset.
Hal ini mengakibatkan stack dimulai pada lokasi 08H.
Data Pointer (DPTR)
DPTR terdiri dari high byte (DPH) dan low byte (DPL).
Fungsi utamanya adalah sebagai tempat alamat 16 bit.
Register ini bisa juga dimanipulasi sebagai sebuah
register 16 bit atau 2 buah register 8 bit yang berdiri
sendiri. |
|
Register
Control
SFR IP, IE, TMOD, TCON, T2CON, SCON, dan PCON berisi bit
kontrol dan status untuk sistem interupt, timer / counter,
dan port serial.
Struktur dan Cara Kerja Port
89C51 mempunyai 4 port bidirectional (Port 0 - Port 3),
yang masing-masing terdiri dari 8 bit. Setiap port terdiri
dari sebuah latch |
Gambar
3. Pemetaan Special Function Registers (SFR)
|
Port
0 - 3
P0, P1, P2, dan P3 adalah SFR latch dari Port 0, 1,
2, dan 3.
Serial Data Buffer
Serial Data Buffer sebenarnya merupakan 2 register
yang terpisah, transmit buffer (untuk mengirim data
serial) dan receive buffer (untuk menerima data serial).
Ketika data dipindahkan ke SBUF, maka data akan menuju
ke transmit buffer di mana data ditampung untuk pengiriman
serial. Memindahkan data ke SBUF berarti menginisialisasi
/ memulai transmisi data secara serial. Sebaliknya
bila data dipindahkan dari SBUF, data tersebut berasal
dari receive buffer.
Register Timer
Pasangan register (TH0 & TL0), (TH1 & TL1), serta
(TH2 & TL2) adalah register 16 bit untuk proses perhitungan
Timer / Counter 0, 1, dan 2. |
|
(Special
Function Registers P0 sampai P3), sebuah output driver,
dan sebuah input buffer. Output driver Port 0 dan Port 2,
serta input buffer Port 0 digunakan untuk mengakses memori
eksternal. Untuk aplikasi yang menggunakan memori eksternal,
maka Port 0 mengeluarkan 'low order byte' alamat memori
eksternal (A0-A7), yang dimultipleks dengan data (1 byte)
yang dibaca atau ditulis. Port 2 mengeluarkan 'high order
byte' alamat memori eksternal (A8-A15) bila alamat yang
diperlukan sebanyak 16 bit. Bila alamat yang diperlukan
hanya A0-A7 maka output Port 2 sama dengan isi SFR (Special
Function Registers). Semua pin Port 3 mempunyai fungsi alternatif
selain sebagai port. Fungsi alternatif tersebut ditunjukkan
pada tabel 2. |
|
Mikrokontroler
89C51
- Halaman 2
|
|
Pin
|
Fungsi Alternatif
|
| P3.0 |
RXD (Port input serial) |
| P3.1 |
TXD (Port output serial) |
| P3.2 |
INT0 (interupt eksternal) |
| P3.3 |
INT1 (interupt eksternal) |
| P3.4 |
T0 (input Timer/Counter 0 eksternal) |
| P3.5 |
T1 (input Timer/Counter 1 eksternal) |
| P3.6 |
WR (sinyal tulis data memory eksternal) |
| P3.7 |
RD (sinyal baca data memory eksternal) |
Tabel
2 Fungsi Alternatif Port 3
|
Fungsi
alternatif hanya akan aktif bila bit-bit yang bersesuaian
pada port SFR berisi '1'. Bila tidak maka output port
akan terkunci pada low.
Konfigurasi I/O
Gambar 4 menunjukkan diagram latch dan I/O buffer
tiap bit dari Port 0 - Port 3. Port 1,2, dan 3 mempunyai
pull-up internal. Sedangkan Port 0, konfigurasi outputnya
adalah open drain. Setiap bit I/O ini berdiri sendiri,
jadi dapat berfungsi sebagai input atau output tanpa
tergantung satu sama lain. Port 0 dan 2 tidak dapat
dipakai sebagai I/O bila digunakan sebagai jalur alamat
/ data. Bila port-port tersebut ingin difungsikan
sebagai input, maka bit latch harus berisi '1', yang
akan mematikan output driver FET. Sehingga pin-pin
Port 1,2, dan 3 akan 'ditarik' ke high oleh pull-up
internal, tetapi bila diinginkan dapat juga 'ditarik'
ke low dengan sumber eksternal. |
|
Port
0 agak berbeda, karena tidak menggunakan pull-up internal.
FET pull-up pada output driver P0 (lihat gambar 4A) hanya
digunakan pada saat Port mengeluarkan '1' selama akses memori
eksternal, selain keadaan ini FET pull-up tidak aktif. Akibatnya
bila bit-bit P0 berfungsi sebagai output maka bersifat open
drain. Penulisan logika '1' ke bit latch menyebabkan kedua
FET tidak bekerja, sehingga pin dalam keadaan mengambang
(floating). Pada kondisi ini pin dapat berfungsi sebagai
high impedance input. Port 1,2, dan 3 sering disebut dengan
'quasi-bidirectional' karena mempunyai pull-up internal.
Saat berfungsi sebagai input maka mereka akan 'ditarik'
ke high dan akan bersifat sebagai sumber arus bila 'ditarik'
ke low secara eksternal. Port 0 sering disebut sebagai 'true-bidirectional',
karena bila dikonfigurasikan sebagai input maka pin-pinnya
akan mengambang. Pada saat reset semua port latch akan berlogika
'1'. |
Gambar
4. Bit Latch dan I/O Buffer 89C51
|
|
Mikrokontroler 89C51
- Halaman 3
|
|