II
MIRZA ALVIAN N
3 D4 ELEKTRO INDUSTRI A
1310141003
FARID DWI
29 MARET 2017
PRAKTIKUM I
INTERFACE MIKROKONTROLER DAN
KOMPUTER SECARA SERIAL
(Receiver)
I. TUJUAN
a. Memahami komunikasi serial.
b. Memahami cara mengggunakan interrupt serial pada
mikrokontroller 8051.
c. Memahami cara kerja transfer data lewat komunikasi serial RS-
232 .
d. Mampu membuat serta mengembangkan program bagi transfer
data antar mikrokontroller 8051 dengan Personal Computer.
Bit ke-7 sampai bit ke-4 pada SCON merupakan bit konfigurasi. Seperti
tampak pada Tabel 10.2, setting bit SM0 dan bit SM1 memungkinkan
kita memilih 1 dari 4 mode komunikasi. Mode 0 berarti komunikasi
asinkron dengan kecepatan transfer 1/12 kali frekuensi osilator. Jika
kita menggunakan osilator 12 MHZ, berarti kecepatan transfernya 1
Mbaud. Mode 1 adalah mode yang palign sering dipilih. Pada mode ini,
komunikasi dilakukan secara asinkron dengan baudrate ditentukan
berdasarkan setting pada Timer 1. Jika mode 1 ini dipilih, Timer 1
harus diset pada mode 8-bit autoreload. Pengisian register TH1 dan bit
SMOD pada register PCON menentukan baudrate yang akan berlaku
pada komunikasi serial tipe ini.
Mode 2 dan 3 adalah mode komunikasi serial dengan bingkai atau
frame berukuran 9-bit. Karena 1-byte data hanya terdiri dari 8-bit, bit
kesembilan diambil dari bit TB8 atau RB8 pada register SCON. Bit TB8
adalah bit yang ditambahkan ketika dilakukan transmit atau
pengiriman data, sedangkan bit RB8 ditambahkan ketika prosesor
sedanga menerima atau receive data.
Bit SM2 hanya digunakan untuk komunikasi multiprosesor. Biasanya,
jika prosesor sedang berperan sebagai penerima data, saat SBUF
penuh, bit RI akan berubah menjadi HIGH. Tetapi jika SM2 diset HIGH,
maka perubahan RI menjadi HIGH ini bergantung pada bit ke-9 yang
diterima, jika bit ke-9 ini HIGH, maka RI juga ikut menjadi HIGH.
Meskipun SBUF telah penuh, jika bit ke-9 LOW, maka bit indikator RI
tidak akan berubah menjadi HIGH. Hal seperti ini berguna pada
aplikasi tertentu yang melibatkan beberapa prosesor untuk
berkomunikasi antar mereka. Dengan kata lain setting SM2 bisa
membuat prosesor bersangkutan menjadi tuli, tidak menghiraukan
datangnya data pada SBUF karena memang data tersebut bukan
untuknya tetapi untuk prosesor lainnya yang ada pada jalur
komunikasi serial yang sama.
Bit REN atau Receive Enable diset jika kita ingin komunikasi
berlangsung 2 arah, prosesor juga dapat menerima data selain dapat
mengirim data melalui saluran serial. Jika bit ini diset LOW, maka
prosesor menjadi tuli, sama sekali tidak dapat menerima data.
Empat bit LSB pada register SCON merupakan bit-bit operasional. Bit
TB8 dan bit RB8 terkait dengan komunikasi serial mode 2 dan 3
seperti telah dijelaskan sebelumnya. Sedangkan bit RI dan TI
merupakan bit indikator yang menyatakan SBUF telah dalam keadaan
penuh atau kosong. Jika prosesor mengirim data, data tsb cukup
diletakkan di register SBUF, pengiriman bit demi bit dilakukan oleh
internal USART. Saat SBUF kosong karena semua bit telah dikirimkan
ke saluran serial TxD, maka bit indikator TI (transmit interrupt) akan
berubah menjadi HIGH. Sedangkan bit indikator RI bekerja sebaliknya.
Ketika prosesor sedang menerima data bit demi bit dari saluran serial
RxD, bit indikator RI (receive interrupt) akan berubah menjadi HIGH
saat SBUF telah dipenuhi 8-bit data.
Perlu dicatat bahwa sebenarnya bit TI diset HIGH pada pertengahan
pengiriman stop bit, sedangkan bit RI diset pada pertengahan
penerimaan stop bit. Untuk komunikasi dengan standard RS-485
programmer tidak boleh melakukan disable saluran komunikasi terlalu
cepat, ia harus menunggu paling tidak selama setengah periode stop
bit setelah RI atau TI berubah menjadi HIGH, jika tidak, maka akan
terjadi transmission error.
Jika kita ingin mengambil 8-byte data dari saluran serial RxD kemudian
meletakkannya di RAM mulai alamat 30H, maka potongan programnya sebagai
berikut,
$MOD51
DSEG
ORG 30H
Buffer: DS 10 ;pesan tempat 10-byte pada RAM mulai 30H
Loop: DS 1 ;sebagai counter pengulangan
CSEG
ORG 0H
LJMP START
ORG 30H
START:
MOV SCON,#01010000B
MOV TMOD,#00100001B
MOV PCON,#10000000B
MOV TH1,#253
MOV TL1,#253
SETB TR1
MOV R1,#buffer
MOV Loop,#8
Ulang:
JNB RI,$
MOV @R1,SBUF ;copy data dari SBUF ke RAM internal
CLR RI
INC R1
DJNZ Loop,ulang
END
5. Menghubungkan pin TxD dan RxD dengan konektor DB9.
Untuk melakukan komunikasi serial dengan standar RS-232, harus
dilakukan penyesuaian level sinyal dari level TTL menjadi level RS-232
menggunakan IC tertentu, misalnya DS 275 atau MAX232. Gambar
5.1. di bawah ini merupakan contoh penggunaan IC MAX232 untuk
menyesuaikan tegangan dari prosesor dengan tegangan standar RS-
232 yang melalui konektor DB9. Pin TxD dari prosesor dihubungkan
dengan pin T1IN pada MAX232, sedangkan pin RxD dari prosesor
dihubungkan dengan pin R1OUT pada MAX232.
Keterangan
Pin 1 = Data Carrier Detect (DCD)
Pin 2 = Received Data (RxD)
Pin 3 = Transmitted Data (TxD)
Pin 4 = Data Terminal Ready (DTR)
Pin 5 = Signal Ground (common)
Pin 6 = Data Set Ready (DSR)
Pin 7 = Request To Send (RTS)
Pin 8 = Clear To Send (CTS)
Pin 9 = Ring Indicator (RI)
Komunikasi Sinkron
Ditandai dg: Clok penerima disetting hanya pada awal komunikasi
clok pengirim.
Terdapat dua bentuk realisasi:
1. Menyediakan 3 penghantar ( untuk data yang dikirim, data
yang diterima dan external clok). Dengan bantuan penghantar
clok, penerima dapat mengendalikan proses pengambilan data
(sampling data).
2. Interface serial terdiri hanya satu penghantar atau
pasangan penghantar, dimana diawal paket data dikirimkan bit
preamble sebagai bit sinkronisasi. Clok penerima akan
mengalami settingan selama bit preamble berjalan.
Interupsi 8051
Pada Metode Interupt, kapan saja device butuh layanan, maka
CPU akan sedapat mungkin untuk segera melayani, device akan
memberitahukan pada CPU dengan mengirim sinyal interupsi. Setelah
sinyal interupsi ini diterima, CPU akan berhenti mengerjakan tugasnya
dan segera melayani device tadi. Program (instruksi-instruksi) dimana
yang berisi layanan interupsi, disebut dengan Interupt Service Routine
( ISR )atau juga Interupt Handler. Sedang pada polling, CPU secara terus
menerus akan memonitor status yang diberikan oleh device-device,
saat kondisi tertentu di mana nampak device membutuhkan layanan,
maka CPU akan mulai mengerjakan layanannya. Setelah CPU selasai
dengan layanan, maka CPU akan kembali mengerjakan pekerjaan
semula yaitu memmonitor device selanjutnya sampai ketemu device
yang meminta layanan.
Harap dicatat, isi dari STACK adalah sangat penting bagi hal ke 5.
Sehingga kita harus hati-hati untuk memodifikasi STACK. Yaitu hati-hati
dalam penggunaan CALL serta jumlah POP dan PUSH yang harus sama
dalam sebuah ISR.
Sebenarnya ada 5 interupsi yang bisa kita gunakan pada 8051. Namun
beberapa datasheet menyebutkan dengan 6 interupsi. Itu karena
datasheet memasukkan reset sebagai interupsi. Adapun ke-enam
interupsi ini dialokasikan sebagai berikut.
1. RESET. Saat pin reset diaktifkan, PC menjadi 0000h (Awal
program). Semua isi register dihapus menjadi 00h. Semua port
menjadi FFh. Sehingga dengan reset ini, CPU benar-benar
memulai dari awal. (sebagaimana yang dibahas pada BAB 4)
2. Dua interupt lainnya adalah Timer. Salah satunya adalah Timer-0
dan satunya lagi adalah Timer-1. Lokasi memory pada Interupt
Vector Table dari Timer ini masing-masing adalah 000Bh dan
001Bh.
3. Dua Interupt lainnya lagi adalah eksternal hardware interupt. Pin
12 (P3.2) dan pin 13 (P3.3) pada port 3 digunakan sebagai
Interupsi Hardware Ekternal masing-masing INT0 dan INT1. Lokasi
memory untuk kedua interupsi ini adalah 0003h dan 0013h.
4. Komunikasi serial juga memiliki satu Interupsi yang digunakan
oleh kedua mode transfer data, baik itu pengiriman (melibatkan
TI) dan penerimaan (melibatkan RI). Lokasi dari ISR interupsi ini
adalah 0023h.
Harap dilihat pada tabel 11.1 bahwa ada batasan jumlah byte diantara
tiap-tiap interupt vektor Table. Misalnya untuk INT-0, interupt hardware
eksternal 0, total hanya memiliki 8-byte mulai dari 0003h 000Ah. Hal
yang sama juga ada pada alamat-alamat yang lain. Bagaimana kalau
ternyata besar ISR lebih dari 8-byte. Oleh karena itu buatlah ISR
ditempat lain yang aman. Dan berikanlah instruksi Ajmp atau LJmp
pada Interupt Vektr Table tersebut, sehingga CPU dapat menunjuk pada
ISR yang lokasinya lebih jauh dan aman.
Dari tabel 11-1, pada kenyataannya hanya ada 3 byte yang disediakan
untuk RESET. Yaitu alamat 0000, 0001 dan 0002. Sedang 0003 sudah
menjadi milik INT0. Dengan alasan ini pembuat program selalu
menggunakan alamat tersebut untuk diisi instruksi LJMP atau AJMP
sebagai instruksi pertama. Sehingga progam dapat melompati Interupt
Vector Table. Tapi jika kita memang tidak menggunakan interupsi
apapun, tentu saja alamat pada Interupt Vector Table dapat digunakan
secara bebas.
4. Pilih USART yang akan digunakan (Misal USART1 mode Asynchronous) dan
tentukan RCC HSE Crystal
8. Bila tahapan diatas telah dilakukan, maka program akan Generate Code, yang
selanjutnya akan dialihkan ke program Keil uVision 5 untuk pemrograman C.