Tampilkan postingan dengan label Interfacing. Tampilkan semua postingan
Tampilkan postingan dengan label Interfacing. Tampilkan semua postingan

Komunikasi Serial















Penulisan ini ditulis untuk berbagi ilmu tentang Komunikasi Serial yang sedang saya pelajari di praktikum Interfacing. Nah, kalau begitu langsung saja ke materi. Ok

Sebelumnya apa itu komunikasi serial, komunikasi serial adalah komunikasi dimana pengiriman data dilakukan per bit, sehingga lebih lambat dibandingkan komunikasi parallel seperti pada port printer yang mampu mengirim 8bit sekaligus dalam sekali detak. Beberapa contoh komunikasi serial adalah mouse, scanner dan system akuisisi data yang terhubung ke port COM1 / COM2.

MCS-51 memiliki kemampuan untuk berkomunikasi secara serial melalui pin RXD dan TXD. Kalau tidak tahu apa itu pin RXD dan TXD bisa dilihat di data sheet mikrokontroller AT89S51. Satu hal yang perlu diingat adalah tingkat ketegangan komunikasi kedua pin serial menggunakan tingkat tegangan TTL. Pada prinsipnya, komunikasi serial adalah komunikasi dimana transmisi data dilakukan per bit. Interface serial hanya membutuhkan jalur yang sedikit (umumnya hanya 2 jalur), sehingga lebih menghemat pin jika dibandingkan dengan interface parallel. Komunikasi serial ada 2 macam, asynchronous serial dan synchronous serial :
1. Synchronous serial adalah komunikasi dimana hanya ada satu pihak (pengirim dan penerima) yang menghasilkan clock dan mengirimkan clock tersebut bersama-sama dengan data. Contoh penggunaan synchronous serial terdapat pada transmisi data keyboard.
2. Asynchronous serial adalah komunikasi dimana kedua pihak (pengirim dan penerima) masing-masing menghasilkan clock namun hanya data yang ditransmisikan, tanpa clock. Agar data yang dikirim sama dengan data yang diterima, maka kedua frekuensi clock harus sama dan harus terdapat sinkronisasi. Setelah ada sinkronisasi, pengirim akan mengirimkan datanya sesuai dengan frekuensi clock penerima. Contoh penggunaan asynchronous serial adalah pada Universal Asynchronous Receiver Transmitter (UART) yang digunakan pada serial port (COM) computer. MCS-51 mendukung komunikasi secara asinkron, bahkan 3 dari 4 serial mode yang dimiliki MCS-51 kompatibel dengan UART.

MCS-51 memiliki 4 mode komunikasi serial. Mode 0 berupa synchronous serial (shift register), sedangkan tiga mode yang lain berupa asynchoronous serial (UART). Pada semua mode, pengiriman dilakukan jika ada instruksi yang mengisi nilai register SBUF. Sedangkan pada saat pengiriman, data yang diterima akan disimpan pada register SBUF.

MODE 0
Mode 0 adalah 8 bit shift register dimana data dikirimkan dan diterima melalui pin RXD sedangkan clock dikirimkan dan diterima melalui pin TXD. Pengiriman data 8 bit dilakukan dengan mengirimkan Least Significant Bit (LSB) terlebih dahulu. Pada mode 0, baudrate yang digunakan adalah sebesar 1/12 dari frekuensi osilator.

MODE 1
Pada mode 1, jumlah data yang dikirimkan sebanyak 10 bit yang terdiri dari start bit, 8 bit data ( LSB terlebih dahulu ) , dan stop bit. Ada proses penerimaan, nilai stop bit akan dimasukkan ke RB8 secara otomatis. Pada proses pengiriman, stop bit akan diberi nilai “1” secara otomatis. Pada mode 1, baudrate yang digunakan dapat diatur melalui Timer 1.

MODE 2
Pada mode 2, jumlah data yang dikirimkan sebanyak 11 bit yang terdiri dari start bit, (LSB terlebih dahulu), bit ke-9, dan stop bit. Pada proses pengiriman, nilai bit ke-9 dapat diatur dengan mengisi nilai TB8. Pada proses penerimaan, bit ke-9 akan dimasukkan ke RB8 secara otomatis. Pada mode 2, baudrate yang dapat digunakan adalah sebesar 1/64 frekuensi osilator atau 1/32 frekuensi osiliator jika SMOD bernilai “1”.

MODE 3
Mode 3 hampir sama dengan mode 2, perbedaannya terdapat pada baudrate yang digunakan. Jika mode 2 menggunakan baudrate yang pasti, mode 3 menggunakan baudrate yang dihasilkan oleh Timer 1.
Baudrate adalah frekuensi clock yang digunakan dalam pengiriman dan penerimaan data. Satuan baudrate pada umumnya adalah bps (bit per second), yaitu jumlah bit yang dapat ditransmisikan per detik. Baudrate untuk mode 0 bernilai tetap dengan rumus yang terdapat pada persamaan 1.

Sebelum melangkah lebih lanjut kita harus mengetahui bagaimana arsitektur serial port MCS-51, serial port memiliki beberapa register antara lain SBUF ,SCON, SMOD, untuk kecepatan transfer data di tentukan oleh clock yang di berikan ke serial port yang di generate oleh Timer1 atau oleh Timer2 yang ada pada family dengan akhiran 52 mis: AT89S52, oleh karena itu kecepatan transfer data akan ditentukan oleh nilai yang di programkan ke Timer1/Timer2 ini. Family dengan akhiran 52 dapat memilih clock source untuk serial portnya apakah dari Timer1/Timer2, Timer yang tidak dipakai dapat digunakan untuk aplikasi lainnya. Tapi yang dibahas disini adalah yang menggunakan clock source dari Timer1, berikut penjelasan register serial port :
1. SBUF, berfungsi sebagai register untuk menerima dan mengirim data, jadi data yang diterima akan disimpan di SBUF, dan data yang dikirim ditulis ke SBUF, sebenarnya SBUF merupakan dua register yang terpisah untuk penerimaan dan pengiriman data.
2. SCON, berfungsi untuk mengontrol serial port, isi dari register ini akan menentukan mode dari serial port(SM2,SM1,SM0), pengaktifan penerimaan data (REN), penerimaan dan pengiriman bit ke 9 pada mode 2 dan 3(TB8,RB8), dan bit status dari penerimaan (RI) dan pengiriman data (TI). Bit RI akan bernilai "1" jika suatu data di terima oleh serial port, bit TI akan bernilai "1" jika pengiriman data sudah selesai dilaksanakan.
3. SMOD, SMOD merupakan bit yang ada pada register PCON yang mana bila nilainya di set (1) maka kecepatan data (baud rate) akan dikalikan 2.
Untuk penjelasan lebih lanjut anda dapat membaca data sheet mikrokontroller yang digunakan
read more...

Two Pass Assembler









Bahasa assembler adalah sebuah program komputer untuk menterjemahkan bahasa assembly, intinya sebuah representasi mnemonic dari bahasa mesin menjadi kode objek. Selain menterjemahkan instruksi assembly mnemonic menjadi opcode, assembler juga menyediakan kemampuan untuk menggunakan nama simbolik untuk lokasi memori (menghindari perhitungan rumit dan pembaruan alamat secara manual ketika sebuah program diubah sedikit), dan fasilitas makro untuk melakukan penggantian textual yang artinya digunakan untuk menggantikan suatu urutan instruksi yang pendek untuk dijalankan perbaris dan bukan dalam sebuah subrutin..

Bahasa assembly dikategorikan sebagai tingkat rendah (low level language). Ini untuk menggambarkan kekhususannya sebagai bahasa yang berorientasi pada machine dependent. Untuk membandingkan bahasa mesin dan assembly, kita dapat melihatnya dari 3 karakteristik berikut :
1. Mnemonic operation code : sebagai pengganti numeric operation code (opcodes) yang digunakan pada bahasa mesin, digunakanlah mnemonic code pada bahasa assembly. Selain kemudahan dalam penulisannya dibandingkan dari bahasa mesin juga mendukung pelacakan kesalahan seperti kesalahan penulisan operation code.
2. Symbol operand specification : Penamaan simbol sebagai suatu data atau instruksi. Operand lebih menunjukkan symbolic reference dibandingkan dengan alamat mesin suatu data atau instruksi. Hal ini akan mempermudah pada saat harus dilakukan modifikasi program.

3. Declaration of data/storage area : Data dapat dinyatakan dalam notasi desimal. Ini dilakukan untuk mencegah konversi secara manual dari konstanta ke dalam representasi internal mesin.

A. Multi-Pass Translation
     Multi pass translation dalam program bahasa assembly dapat menangani masalah forward reference. Unit pada source program digunakan untuk tujuan mentranslasi semua bagian program. Ketika fase analisis statement program pertama kali dilakukan, proses LC akan dikerjakan dan simbol yang didefinisikan dalam program dimasukkan ke dalam simbol table.Selama second pass, statement diproses dengan tujuan mensintesa target form. Semua simbol dan alamat yang dapat ditemukan dalam simbol table tidak akan menimbulkan forward reference pada assembly.
      Kalimat "equivalent representasion" digunakan pada translasi yang membutuhkan elaborasi. Sering kali ketika proses pemisahan field label, mnemonic opcode dan operand field terjadi duplikasi. Untuk mengurangi duplikasi tersebut, hasil analisa source atatement dari first pass direpresentasikan dalam internal form pada source statement. Bentuk ini disebut intermediate code. Ilustrsi dari skema two pass assembler dengan menggunakan intermediate code form dapat dilihat pada gambar berikut ini.










 
Selain membangun intermediate code, suatu assembler pass juga membangun dan/atau mengganti database yang digunakan sebsequent pass. Karena kebutuhan untuk membangun dan memproses intermediate code, suatu multi pass translator menjalankan fungsinya lebih lambat dibandingkan dengan single pass translation.
Nah...itulah bahasan sekilas tentang assembler dah pemahamannya yang bisa saya bagikan kepada teman-teman semua. Terimakasih sudah membaca.

read more...