BAB PORT
INPUT/OUTPUT MIKROKONTROLER MCS-51
9. Umum. Mikrokontroler MCS-51
memiliki 2 jenis port input/output, yaitu port
I/O parallel dan port I/O serial.
Port I/O parallel sebanyak 4 buah
dengan nama P0,P1,P2 dan P3. Masing-masing port ini bersifat bidirectional (dua-arah), memiliki latch (dengan ini maka data output akan
tetap berada pada statusnya hingga ada pengiriman data baru), memiliki buffer output sehingga setiap
pin-nya dapat dibebani dengan 4 buah gerbang IC TTL standar (kecuali Port 0
sebanyak 8) dan memiliki buffer input.
Port
serialnya bersifat full-duplex (dalam
satu saat bisa menerima sekaligus mengirim data), bisa digunakan untuk shift register, atau Universal Aynchronous Receiver and
Transmitter (UART) dengan data terkirim sepanjang 8 atau 9 bit.
10. Port
I/O Parallel.
a. Fungsi
Port. Port I/O parallel P0,P1,P2 dan P3 memiliki fungsi khusus terutama jika
digunakan untuk mengakses peralatan di luar chip
mikrokontroler.
Fungsi
khusus tersebut adalah :
1) P0 dan P2. Port 0 memiliki address 80h sedangkan Port 2 addressnya 0A0h. Port-port ini digunakan
untuk mengakses eksternal memori. Address
eksternal memori yang digunakan bisa selebar 8 bit atau 16 bit. Pada akses address 8 bit, maka dipergunakan Port 0
sebagai bus address yang
dimultipleks-waktu dengan data bus.
Untuk akses address 16 bit dibutuhkan
dua buah port 8 bit, yaitu Port 0 dan Port 2. Port 0 berfungsi untuk
mengeluarkan data byte rendah address eksternal emori, yang
dimultipleks-waktu dengan byte data yang sedang dibaca atau ditulis. Port 2
digunakan untuk mengeluarkan data byte tinggi address eksternal memori.
Untuk eksekusi instruksi yang memerlukan address eksternal memori selebar 8 bit, maka yang berfungsi
hanyalah Port 0, sedangkan Port 2 mengerluarkan data sebagaimana terletak pada register P2 pada special function register (SFR).
Proses multiplexing data dengan address pada Port ) membutuhkan sebuah chip latch eksternal dan sebuah tri-state bidirectional
buffer yang diakses melalui sinyal
kendali ALE dan -RD serta -WR.
Pada saat akses address 16 bit,
isi register P0 berubah menjadi 0FFh, sedangkan
isi register P2 adalah tetap seperti semula.
Contoh akses address memori
eksternal 16 bit adalah melalui instruksi MOVX
A,@DPTR. Pada instruksi ini address 16 bit untuk eksternal memori dipegang oleh register DPTR.
Pada instuksi tersebut data yang ada
pada memori eksternal dengan address sebagaimana
nilai DPTR dipindahkan/disalin ke register Accumulator.
Akses eksternal memori melalui address 8 bit misalnya pada instruksi MOVX
A,@R0. Pada instruksi ini address 8 bit untuk eksternal memori dipegang
oleh register R0.. Pada instuksi tersebut data yang ada pada memori eksternal
dengan address sebagaimana nilai R0 dipindahkan/disalin ke register Accumulator.
2) P3. Port ini memiliki address
0B0h dimana tiap pin nya memiliki fungsi khusus sebagai berikut:
Tabel 5.1 Fungsi alternatif pin-pin Port 3
Simbol
|
Posisi
|
Nama dan Arti
|
-RD
|
P3.7
|
external data memory read strobe
|
-WR
|
P3.6
|
external data memory write strobe
|
T1
|
P3.5
|
timer/counter 1 external input
|
T0
|
P3.4
|
timer/counter 0 external input
|
-INT1
|
P3.3
|
external interrupt 1
|
-INT0
|
P3.2
|
external interrupt 0
|
TXD
|
P3.1
|
serial data output port
|
RXD
|
P3.0
|
serial data input port
|
Fungsi-fungsi alternatif di atas
hanya bisa berfungsi jika bit-bit yang
bersangkutan pada register P3 diberi
status '1'.
3) P1. Port
ini memiliki address 090h, dan
biasanya digunakan untuk penggunaan paralel port secara umum. Khusus pada seri
8052 ada pin yang memiliki fungsi
khusus yaitu :
Tabel 5.2 Fungsi alternatif pin-pin Port 1
Simbol
|
Posisi
|
Nama dan Arti
|
T2EX
|
P1.1
|
Timer/counter 2 capture/reload
trigger
|
T2
|
P1.0
|
Timer/counter 2 eksternal input
|
Pin dengan fungsi khusus ini memiliki karakteristik yang sama dengan Port
3.
b. Pembacaan
dan Penulisan Port Paralel. Dengan melihat konstruksi port paralel yang kesemuanya
memiliki latch, maka ada dualisme
proses pembacaan port, antara pembacaan latch
dengan pembacaan pin. Ada
beberapa instruksi yang melakukan pembacaan
latch, dan sebagian lain
melakukan pembacaan pin. Instruksi yang membaca latch adalah instruksi yang fungsinya membaca suatu nilai, mungkin
mengubahnya dan kemudian menuliskannya kembali. Sedangkan instruksi yang hanya melakukan
pembacaan suatu
nilai saja, maka pembacaanya adalah pembacaan pin.
Contoh instruksi yang membaca latch adalah
:
1) ANL
(logical AND),
2) ORL
(logical OR),
3) XRL
(logical XOR),
4) JBC
(jump if bit = 1 and clear bit),
5) CPL
(compelement bit),
6) INC
(increment),
7) DEC
(decrement),
8) DJNZ
(decrement and jump if not zero),
9) MOV
(move),
10) CLR
(clear),
11) SETB
(set bit).
Penulisan ke port paralel
dapat dilakukan dengan cara menuliskan ke register
port yang bersangkutan, baik secara bit maupun byte. Yang perlu diperhatikan ialah fungsi Port 0 dan
Port 2 yang digunakan untuk akses memori
eksternal. Data yang ditulis pada Port 0 akan berubah menjadi 0FFh jika terjadi akses ke memori
eksternal. Data pada Port 2 akan berubah menjadi
data address byte tertinggi pada saat
akses ke memori eksternal, dan kembali pada isinya yang semula setelah proses
akses tersebut selesai. Penulisan ke Port 3 menentukan aktif tidaknya pin-pin
dengan fungsi khusus sebagaimana
pada tabel 5.1. Penulisan '1' pada suatu bit mengaktifkan fungsi alternatif
pada pin pada bit tersebut.
11. Port
I/O Serial. Port I/O serial yang dimiliki oleh MCS-51 memiliki karakteristik
full duplex (dapat menerima sekaligus
mengirimkan data secara simultan), dan receive-buffered (dapat memulai
penerimaan data yang kedua sebelum data yang pertama dibaca dari register
pembacaan).
a. Fungsi
Port.
Port serial dapat bekerja dalam 4 mode :
1) Mode 0. Pada
mode ini data serial diterima dan dikirim lewat pin RXD, sedangkan pin TXD berfungsi untuk
mengirimkan shift clock. Data yang diterima dan dikirim
adalah selebar 8 bit dengan bit terendah dikirimkan/diterima pertama
kali. Kecepatan pengiriman (baud rate) adalah tetap sebesar 1/12 frekuensi osilator.
2) Mode 1.Pada mode ini
data 8 bit dikirim/diterima dengan 2 bit tambahan, dengan urutan :
a) start bit (logika 0),
b) 8 bit data (dengan bit terendah di depan),
c) 1 stop bit (logika 1).
Pada saat penerimaan, stop bit masuk pada bit RB8 pada
register SCON (salah satu special
function register). Baud rate pada mode ini adalah variabel.
3) Mode 2. Pada mode ini data
8 bit dikirim/diterima dengan 3 bit tambahan
dengan urutan :
a) start bit (logika 0),
b) 8 bit data (dengan bit terendah di depan),
c) 1 bit tambahan yang dapat diprogram,
d) 1 stop bit (logika 1).
Pada saat pengiriman,
bit yang dapat diprogram adalah bit
yang terdapat pada bit TB8 pada register SCON. Pada saat penerimaan,
bit yang dapat diprogram masuk pada bit RB8 pada register SCON
(salah satu
special function register). Baud rate pada
mode ini adalah 1/32 atau 1/64 frekuensi osilator.
4) Mode 3. Pada
mode ini data 8 bit dikirim/diterima dengan 3 bit tambahan dengan urutan :
a) start bit (logika 0),
b) 8 bit data (dengan bit terendah di depan),
c) 1 bit tambahan yang dapat diprogram,
d) 1 stop bit (logika 1).
Mode ini persis sama dengan
mode 2 kecuali baud rate-nya yang
variabel.
b. Pembacaan
dan Penulisan Port Serial. Pengiriman data pada port serial dapat dilakukan dengan cara menuliskan data tersebut ke
register SBUF (salah satu special function register - SFR).
Penerimaan data serial adalah melalui
pembacaan register SBUF.
12. Pengaturan Baud Rate. Baud rate adalah kecepatan transmisi data serial, berupa banyaknya
transisi logika pada saluran data serial tiap detik. Semakin besar nilai baud rate, maka semakin cepat proses
pengiriman/ penerimaan data serial.
Pada mode 0, baud
rate adalah tetap sebesar 1/12 frekuensi osilator. Bit SMOD pada register
PCON menentukan baud rate pada Mode 2. Untuk
SMOD=1 baud rate adalah 1/32
frekuensi osilator, dan jika SMOD = 0 maka baud
rate adalah 1/64 frekuensi osilator.
Baud rate untuk mode 1 dan 3 ditentukan oleh kecepatan overflow pada Timer 1
atau Timer 2 (satu timer untuk
pengiriman dan satu lagi untuk penerimaan). Dengan demikian dimungkinkan
penerimaan dan pengiriman data dengan kecepatan yang berbeda. Namun perlu
diingat bahwa fasilitas ini hanya dipunyai oleh type 8052 karena tipe 8051
tidak memiliki Timer 2.
Baud
rate untuk mode 1 dan 3
ditentukan oleh persamaan :
Baud
rate = 22^SMOD / 32 x (Timer 1 overflow rate)
Konfigurasi timer
1 yang diperlukan untuk menjalankan fungsi di atas adalah :
a. timer dijalankan pada operasi "timer" atau
"counter", dengan mode 1, 2
atau 3.
b. timer
1 interrupt dibuat tidak bekerja (disabled)
Kombinasi baud rate
yang mungkin adalah sebagaimana pada tabel berikut :
Tabel 5.3 Kombinasi Pemilihan Baud Rate
Baud
Rate
|
fOSC
|
SMOD
|
Timer 1
|
||
C/-T
|
Mode
|
Reload
|
|||
Mode 0 Max : 1 Mhz
|
12 MHz
|
X
|
X
|
X
|
X
|
Mode 2 Max : 375K
|
12 MHz
|
1
|
X
|
X
|
X
|
Mode 1,3 : 62,5K
|
12 MHz
|
1
|
0
|
2
|
FFh
|
19,2k
|
11.059 MHz
|
1
|
0
|
2
|
FDh
|
9,6k
|
11.059 MHz
|
0
|
0
|
2
|
FDh
|
4,8k
|
11.059 MHz
|
0
|
0
|
2
|
FAh
|
2,4k
|
11.059 MHz
|
0
|
0
|
2
|
F4h
|
1,2k
|
11.059 MHz
|
0
|
0
|
2
|
E8h
|
137,5k
|
11.968 MHz
|
0
|
0
|
2
|
1Dh
|
110k
|
6 MHz
|
0
|
0
|
2
|
72h
|
110k
|
12 MHz
|
0
|
0
|
1
|
FEEBh
|
Konfigurasi Timer
2 yang berfungsi sebagai baud rate generator
adalah :
a. bit TCLK dan/atau RCLK pada register T2CON diset. Jika
RCLK=1 maka serial port
menggunakan pulsa Timer 2 overflow untuk
baud rate penerimaan data. Sebaliknya
jika RCLK=0 maka serial port menggunakan pulsa
Timer 1 overflow.
Jika TCLK=1
maka serial port menggunakan pulsa Timer 2 overflow untuk baud rate pengiriman data. Sebaliknya
jika TCLK=0 maka serial port menggunakan
pulsa Timer 1 overflow.
b. Mode untuk baud rate generator seperti pada mode auto-reload, yaitu adanya overflow pada register timer TH2 menyebabkan dimuatnya kembali data 16-bit yang ada register RCAP2H dan
RCAP2L ke TH2 dan TL2. Baud rate yang dihasilkan mengikuti
persamaan
Baud
Rate =
x (Timer 2 overflow
rate)
![](file:///C:/Users/aljabar/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif)
c. Timer 2 interrupt tidak perlu dinon-aktifkan
13. Komunikasi dengan Banyak Prosessor. Serial Port yang dimiliki oleh mikrokontroler MCS-51 memungkinkan
dijalankannya komunikasi dengan dengan lebih dari dua mikrokontroler pada jalur
kabel komunikasi yang sama (multiprocessor
communication). Fasilitas yang unik ini dimungkinkan oleh adanya bit ke-9
pada komunikasi serial port dengan mode 2 dan 3 yang dapat diprogram lewat bit
TB8 (bit yang terkirim) atau RB8(bit yang diterima) pada register SCON.
Mikrokontroler MCS-51 dapat dikonfigurasikan agar mengaktifkan sinyal interupsi
jika bit ke-9 ini (bit RB8) adalah '1'. Hal ini diperoleh dengan cara
memberikan nilai '1' pada bit SM2 di register SCON. Cara kerja komunikasi
dengan banyak prosesor ini adalah sebagai berikut :
a. Sebuah mikrokontroler pusat
dapat mengirimkan data atau address
ke mikrokontroler-mikrokontroler lainnya pada jalur data serial port. Untuk membedakan antara data dengan address, maka pada bit ke-9 ditentukan
'0' untuk data dan '1' untuk address.
b. Andaikan ada 5 buah
mikrokontroler dengan address
masing-masing 1,2,3,4 dan 5.
Mikrokontroler pusatnya adalah yang ber-address
1. Jika mikrokontroler pusat ingin berkomunikasi dengan mikrokontroler lain,
dia cukup mengawalinya dengan mengirimkan 8 bit address mikrokontroler yang
ingin dihubungi dan bit ke-9 di set '1'.
c. Dengan adanya bit ke-9 yang
berharga '1' dan karena SM2 pada masing-masing
register SCON-nya diset '1', maka pada semua mikrokontroler bawahan akan terbangkit sinyal
interrupt.
d. Program pelayanan interrupt
dibuat sedemikian rupa untuk mengecek data
address yang masuk apakah menunjuk
pada mikrokontroler yang bersangkutan.
Jika demikian maka mikrokontroler tersebut diaktifkan oleh
mikrokontroler pusat, selanjutnya menunggu pengiriman data selanjutnya
dan
menjalankan proses sesuai dengan perintah dari mikrokontroler pusat.
Jika addressnya bukan menunjuk mikrokontroler
yang bersangkutan, maka pengiriman data selanjutnya diabaikan dan program
pelayanan interrupt selesai.sumber:http://mjalaluddinjabbar.blogspot.com/2012/04/belajar-sendiri-mikrokontroler-lengkap_10.html?showComment=1394036043104#c8426219603465148047
EmoticonEmoticon