Percobaan 8 INTERFACE MIKROKONTROLER DAN KOMPUTER SECARA SERIAL I. Tujuan 1. Memahami komunikasi serial. 2. Memahami cara mengggunakan interrupt serial pada mikrokontroller 8051. 3. Memahami cara kerja transfer data lewat komunikasi serial RS-232 . 4. Mampu membuat serta mengembangkan program bagi transfer data antar mikrokontroller 8051 dengan Personal Computer. II . Ruang Lingkup A . Teori Singkat Komunikasi serial merupakan komunikasi data dengan pengiriman data secara satu per satu dengan menggunakan satu jalur kabel data. Sehingga komunikasi serial hanya menggunakan 2 kabel data yaitu kabel data untuk pengiriman yang disebut transmit (Tx) dan kabel data untuk penerimaan yang disebut receive (Rx). Kelebihan dari komunikasi serial adalah jarak pengiriman dan penerimaan dapat dilakukan dalam jarak yang cukup jauh dibandingan dengan komunikasi parallel tetapi kekurangannya adalah kecepatan lebih lambat daripada komunikasi parallel, untuk saat ini sedang dikembangkan teknologi serial baru yang dinamakan USB (Universal Serial Bus) yang memiliki kecepatan pengiriman dan penerimaan data lebih cepat disbanding serial biasa. Beberapa contoh : komunikasi Serial RS-232 dan RS-485. Berikut ini merupakan gambar rangkaian dari RS-232 dan RS-485 yang digunakan untuk melakukan komunikasi serial: 0,1µF 0,1µF 5V Transmit 1 C 1+ 0,1µF 6,3 V 3 C 4 C 12+ 0,1µF 5 C 2- TTL CMOS INPUT 16 V+ 2 RO '1' RE/DE 5 V To 10 V V- A -10 V 0,1µF 11 T1IN T1 T1OUT 14 10 T2IN T2 T2OUT 7 R1OUT R2OUT DATA RS 232 OUTPUT R2IN 8 DI DATA A '0' B 0V DI NC RO NC Receive DATA RO A RS 232 INPUT RO 5V RE/DE B R1IN 13 5K TTL CMOS OUTPUT NC '0' 5K A RE/DE RE/DE B NC 5V DI 0V '1' B DI DATA RS 485 RS 232 Gambar 8.1 Gambar rangkaian RS-232 dan RS-485 Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing Percobaan 8 UPT Perangkat Keras Halaman : 1 dari 10 AT89C51 mempunyai On Chip Serial Port yang dapat digunakan untuk komunikasi data serial secara Full Duplex sehingga Port Serial ini masih dapat menerima data pada saat proses pengiriman data terjadi. Untuk menampung data yang diterima atau data yang akan dikirimkan, AT89C51 mempunyai sebuah register yaitu SBUF yang terletak pada alamat 99H di mana register ini berfungsi sebagai buffer sehingga pada saat mikrokontroler ini membaca data yang pertama dan data kedua belum diterima secara penuh, maka data ini tidak akan hilang. Gambar 8.2 Blok Diagram Port Serial Pada serial terdapat 4 mode, yaitu mode 0,1,2, dan 3. Kita akan membahas satu persatu dari mode mode tersebut. Mode serial port : 1. Pada mode 0, Pin TX mengeluarkan shift clock, dan pin RX dapat menerima maupun mengirim data, dengan format 8 bit data dimulai dengan LSB dulu yang dikirim. Jadi pada saat dikirim data melalui RX maka sekalian pin TX mengirimkan signal clock secara berbarengan. Baud ratenya fix yaitu 1/12 frekuensi osilatornya. 2. Pada mode 1, Pin TX berfungsi untuk mengirim data dan RX berfungsi untuk menerima data, data yang dikirim formatnya 8 bit data dengan LSB dikirim dahulu, serta 1 start bit( berlogika 0 ) dan 1 stop bit( berlogika 1 ). Baud ratenya variabel tergantung dari nilai yang ada pada register timer 1 maupun timer 2. 3. Pada mode 2, Pin TX berfungsi untuk mengirim data dan RX untuk menerima data, format datanya sama dengan mode 1 hanya saja terdapat parity bitnya sehingga total bit yang terkirim sebanyak 11 bit. Bit paritynya dapat diset melalui TB8( lihat pada SCON ). Baud ratenya hanya ada 2 pilihan yaitu 1/32 atau 1/64 dari frekuensi osilatornya. 4. Pada mode 3 identik dengan mode 2, hanya saja Baud ratenya variabel tergantung nilai yang terdapat pada register dari timer 1 dan timer 2. Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing Percobaan 8 UPT Perangkat Keras Halaman : 2 dari 10 Cara Menset Mode serial ialah melalui Register SCON : Dalam coding serial dalam MCS, terdapat 2 konsep yaitu secara polling maupun secara interrupt. Seperti yang sudah dijelaskan diatas mengenai TI dan RI, maka dalam menerima data RI akan terset secara hardware sedangkan TI diset pada saat data hampir selesai dikirim, dan dalam hal transmisi data sangat perlu untuk “CEK” kondisi TI. Bila TI sudah berlogika 1 berarti data yang ditaruh dalam SBUF sudah selesai dikirim dan harus diclear secara software( secara program ), sebab bila tidak dicek apakah TI sudah ‘1’ atau belum maka mungkin saja terjadi SBUF sudah direload dengan data baru sedangkan data yang lama belum selesai dikirim sehingga terjadi apa yang disebut dengan data corruption. Maka sebelum mengirim byte data yang selanjutnya sangatlah perlu untuk mengecek TI dulu. Bila coding serial dengan konsep polling maka codenya harus terus menerus mengecek flag TI dan RI, apakah berlogika ‘1’, bila berlogika ‘1’ maka langsung lompat ke procedure yang bersangkutan, dengan jangan lupa secepatnya mengclear flag TI atau RI, agar tidak lompat ke int. veltor dari serial. Keuntungan konsep polling adalah codenya yang simple, tetapi menghabiskan cpu time sebab selalu mengecek flag TI dan RI terus menerus tanpa dapat melakukan tugas yang lain, sebab bila melakukan yang lain maka pada saat salah satu flag tersebut menjadi satu maka akan langsung lompat ke int. vektor serial sehingga program akan menjadi kacau. Bila coding serial dengan konsep interrupt, maka program serialnya hanya ada pada subroutine dari int. serial saja, dimana hanya mengecek oleh flag mana interrupt serial terpanggil? Oleh TI atau RI? Bila oleh TI maka taruh datanya ke SBUF TI utk dikirim, dan bila karena RI maka selamatkan datanya ke suatu variabel dari SBUF RI. Keuntungannya code kita dapat melakukan tugas yang lainnya, kerugiannya adalah code yang cukup kompleks ( walaupun sebetulnya masalah kompleks relatif bagi setiap orang ). Data transfer rate dinyatakan dalam baud rate, yaitu kecepatan perubahan data per waktu. Cara menset serial serta BAUD yang dibutuhkan hanya cukup menset register IE, SCON (mengatur mode Serial), TCON, TMOD. Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing Percobaan 8 UPT Perangkat Keras Halaman : 3 dari 10 SCON SM0: Serial Port Mode bit 0, bit Pengatur Mode Serial SM1: Serial Port Mode bit 1, bit Pengatur Mode Serial SM2: Serial Port Mode bit 2, bit untuk mengaktifkan komunikasi multiprosesor pada kondisi set. REN: Receive Enable, bit untuk mengaktifkan penerimaan data dari Port Serial pada kondisi set. Bit ini di set dan clear oleh perangkat lunak. TB8: Transmit bit 8, bit ke 9 yang akan dikirimkan pada mode 2 atau 3. Bit ini diset dan clear oleh perangkat lunak RB8: Receive bit 8, bit ke 9 yang diterima pada mode 2 atau 3. Pada Mode 1 bit ini berfungsi sebagai stop bit. TI: Transmit Interrupt Flag, bit yang akan set pada akhir pengiriman karakter. Bit ini diset oleh perangkat keras dan di clear oleh perangkat lunak RI: Receive Interrupt Flag, bit yang akan set pada akhir penerimaan karakter. Bit ini diset oleh perangkat keras dan di clear oleh perangkat lunak Selain variabel-variabel di atas, masih terdapat sebuah variabel lagi yang menjadi pengatur baud rate serial yaitu Bit SMOD pada Register PCON. Apabila bit ini set maka faktor pengali 32 pada formula 3.1 akan berubah menjadi 16. Oleh karena itu dapat disimpulkan formula untuk baud rate serial untuk Mode 1 dan Mode 3 adalah: Mode Baud Rate 1 0 12 1 2 3 SMOD = 0 f osc Baud rate = 12 x(256 − TH 1) x32 1 f osc 32 Baud rate = f osc 12 x(256 − TH 1) x32 f osc SMOD = 1 f osc Baud rate = 12 x (256 − TH 1) x16 1 f osc 64 Baud rate = f osc 12 x (256 − TH 1) x16 Pada serial sebelum menerima maupuin mengirim data, data tersebut ditampung pada buffer serial atau yang disebut SBUF(serial buffer). Sebetulnya pada serial MCS terdapat 2 serial buffer dengan nama SBUF. Jika demikian maka bagaimana caranya MCS dapat membedakan SBUF mana untuk kirim dan untuk terima? Jawabannya MCS dapat mengetahui SBUF mana yang mau diakses melalui instruksi dari programnya. Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing Percobaan 8 UPT Perangkat Keras Halaman : 4 dari 10 Contoh : MOV SBUF,A à berarti SBUF transmit MOV A,SBUF à berarti SBUF receive Dalam coding serial dalam MCS, terdapat 2 konsep yaitu secara polling maupun secara interrupt. Seperti yang sudah dijelaskan diatas mengenai TI dan RI, maka dalam menerima data RI akan terset secara hardware sedangkan TI diset pada saat data hampir selesai dikirim, dan dalam hal transmisi data sangat perlu untuk “CEK” kondisi TI. Bila TI sudah berlogika 1 berarti data yang ditaruh dalam SBUF sudah selesai dikirim dan harus diclear secara software( secara program ), sebab bila tidak dicek apakah TI sudah ‘1’ atau belum maka mungkin saja terjadi SBUF sudah direload dengan data baru sedangkan data yang lama belum selesai dikirim sehingga terjadi apa yang disebut dengan data corruption. Maka sebelum mengirim byte data yang selanjutnya sangatlah perlu untuk mengecek TI dulu. Bila coding serial dengan konsep polling maka codenya harus terus menerus mengecek flag TI dan RI, apakah berlogika ‘1’, bila berlogika ‘1’ maka langsung lompat ke procedure yang bersangkutan, dengan jangan lupa secepatnya mengclear flag TI atau RI, agar tidak lompat ke int. veltor dari serial. Keuntungan konsep polling adalah codenya yang simple, tetapi menghabiskan cpu time sebab selalu mengecek flag TI dan RI terus menerus tanpa dapat melakukan tugas yang lain, sebab bila melakukan yang lain maka pada saat salah satu flag tersebut menjadi satu maka akan langsung lompat ke int. vektor serial sehingga program akan menjadi kacau. Bila coding serial dengan konsep interrupt, maka program serialnya hanya ada pada subroutine dari int. serial saja, dimana hanya mengecek oleh flag mana interrupt serial terpanggil? Oleh TI atau RI? Bila oleh TI maka taruh datanya ke SBUF TI utk dikirim, dan bila karena RI maka selamatkan datanya ke suatu variabel dari SBUF RI. Keuntungannya code kita dapat melakukan tugas yang lainnya, kerugiannya adalah code yang cukup kompleks ( walaupun sebetulnya masalah kompleks relatif bagi setiap orang ). Gambar berikut ini menggambarkan pin-pin konektor serial yang diperlukan untuk melakukan komunikasi sederhana ke computer : Tx Rx Ground 1 2 6 3 7 4 8 5 9 Connector FEMALE Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing Percobaan 8 UPT Perangkat Keras Halaman : 5 dari 10 B . Daftar Alat 1. Modul Aplikasi & Interfacing kode : III . Referensi • Manual Book Serial Interfacing INex CITS NX-2000 • Anonim, Architectural Overview of The MCS-51 Family of Microcontrollers, Intel Inc. • Hall, Douglas V. (1991), Microprocessors And Interfacing : Programming and Hardware. McGraw-Hill Inc. • http://lab.binus.ac.id/pk/databook/atmel/89c51.pdf • http://lab.binus.ac.id/pk/download/aplikasi/Timer.pdf • http://lab.binus.ac.id/pk/download/aplikasi/serial.pdf • http://www.lammertbies.nl/comm/info/RS-232_uart.html • http://www.maxim-ic.com/MAX232.pdf • http://www.maxim-ic.com/appnotes.cfm/appnote_number/2020 IV . Urutan Instruksi Kerja A . Prosedur Port MCS Sebagai Output • Hubungkan Modul 8051 dengan Modul Led Display Board dengan menggunakan data bus seperti gambar 8.1 di bawah ini Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing Percobaan 8 UPT Perangkat Keras Halaman : 6 dari 10 Gambar 8.3 Koneksi antara modul 8051 dengan Led Display Board • Ketiklah program (Assembly) dibawah ini pada Notepad : Program mengirim sebuah karakter dengan Bahasa Assembler 51 DATA_TX EQU 30H DATA_RX EQU 31H BR EQU 0FDH FLAG_RX EQU 20H.0 TXREADY EQU 20H.1 ORG 00H AJMP START ORG 23H AJMP SERIAL ORG 40H START: MOV SP,#60H MOV TMOD,#20H MOV SCON,#50H MOV TL1,#BR MOV TH1,#BR SETB TR1 SETB ES SETB EA CLR FLAG_RX SETB TXREADY LOOPING: JNB FLAG_RX,TIDAK_ADA ADA: CLR FLAG_RX MOV A,DATA_RX MOV DATA_TX,A ACALL SEND_BYTE TIDAK_ADA: AJMP LOOPING SEND_BYTE: JNB MOV MOV CLR RET TXREADY,$ A,DATA_TX SBUF,A TXREADY SERIAL: PUSH ACC Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing Percobaan 8 UPT Perangkat Keras Halaman : 7 dari 10 KIRIM: TERIMA: DONE: JB TI,KIRIM JB RI,TERIMA CLR TI SETB TXREADY AJMP DONE CLR RI MOV A,SBUF MOV DATA_RX,A SETB FLAG_RX POP ACC RETI END Program mengirim sebuah karakter dengan Bahasa C 51 #include <at89x52.h> #define BR 0xFD //setting baudrate char Data_Rx; char Data_Tx; bit flag_Rx; bit TxReady; void initSerial() { SCON = 0x50; TMOD = 0x20; TH1 = BR; TL1 = BR; TR1 = 1; ES = 1; EA = 1; TxReady = 1; flag_Rx = 0; } void int_Serial() if(RI) { RI = 0; Data_Rx flag_Rx } if(TI) { TI = 0; TxReady } } interrupt 4 { = SBUF; = 1; = 1; void sendByte() { Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing Percobaan 8 UPT Perangkat Keras Halaman : 8 dari 10 while(!TxReady); SBUF = Data_Tx; TxReady = 0; } void main() { initSerial(); while(1) { if(flag_Rx) { flag_Rx = 0; Data_Tx = Data_Rx; sendByte(); } } } • Compile-lah dan write dengan WINISP.EXE ke dalam IC • Perhatikanlah apa yang terjadi. Tugas : Buatlah program komunikasi serial antara PC dan MCS-52 agar PC dapat menyalakan 8 buah led. Status dari nyala Led ditampilkan pada program Microsoft Visual Basic 6.0 Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing Percobaan 8 UPT Perangkat Keras Halaman : 9 dari 10 B. Tugas Laporan 1. Komunikasi Serial MCS dan PC 2. Keuntungan/kerugian menggunakan komunikasi serial 3. Perhitungan Baud Rate 4. Flowchart semua program 5. Kesimpulan C. Tugas Pendahuluan 1. Menurut anda apa manfaat komunikasi serial pada MCS-52? 2. Apa yang dimaksud dengan baud rate pada komunikasi serial? 3. Mengapa IC MAX232 diperlukan pada modul praktikum? 4. Sebutkan dan jelaskan mode-mode serial yang terdapat pada MCS-52! Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing Percobaan 8 UPT Perangkat Keras Halaman : 10 dari 10
© Copyright 2024 Paperzz