Anda di halaman 1dari 23

MODUL VIII

278

BAB I PENDAHULUAN
I.1 LATAR BELAKANG Pemrograman pada microkontroler bisa dilakukan dengan menggunakan bahasa C. Pada pemrograman bahasa C lebih mudah dipahami karena sudah memiliki perintah sendiri untuk port-port dan lainnya.Bahasa pemrograman C merupakan salah satu bahasa pemrograman komputer. Dibuat pada tahun 1972 oleh Dennis Ritchie untuk Sistem Operasi Unix di Bell Telephone Laboratories.Meskipun C dibuat untuk memprogram sistem dan jaringan komputer namun bahasa ini juga sering digunakan dalam mengembangkan software aplikasi. C juga banyak dipakai oleh berbagai jenis platform sistem operasi dan arsitektur komputer, bahkan terdapat beberepa compiler yang sangat populer telah tersedia.Seorang programmer dari Bell laboratory yang juga bekerja untuk IBM bernama Bjarne Stroustrap merasakan adanya kesulitan ketika bahasa C dipakai untuk menulis program yang sangat besar maka ia lalu membuat perluasan yang dapat lebih memudahkan pemrogram dalam membuat program besar dengan konsep OOP (Object Oriented Program). Kemudian, lahirlah C++ sekitar tahun 1983. Akibatnya, banyak software yang ditulis dengan C kemudian turut dikembangkan menjadi program C++ sehingga lebih efisien dan efektif.Pada era visual saat ini, versi dari C dan C++ muncul pula dengan nama Visual C atau Visual C++, C Builder, bahkan telah ada versi baru dari C yaitu C#. I.2 TUJUAN PRATIKUM Pratikum dapat menggunakan bahasa C sebagai bahasa pemograman pada mikrokontoler keluarga MCS-51. Praktikan dapat menggunakan bahasa Basic sabagai bahasa pemrograman mikrokonteoler keluarga MCS-51 I.3. ALAT-ALAT PERCOBAAN KIT Pratikum Mikrokontroler dengan kabel dan jumper. PC software SDCC dan Bascom 8051 software flash programmer (Plant, Siatem minuman dan Downloadr) lengkap pada

279

BAB II TEORI

2.1 C COMPILER UNTUK MCS-51 Pemrograman mikrokontroler dapan dilakukkan menggunakan bahasa tingkat rendah ( assembler ), ataupun bahasa tingkat tinggi (C, Basic, Pascal). Pada pratikum ini akan digunakan bahasa C dan Basic yang lebih mudah dipahami untuk membuat program pada mikrokontroler AT89S52. Sebelumnya anda harus sudah mengerti pemrograman dasar menggunakan bahasa C dan Basic untuk PC. Pada bahasa C dan Basic diperlukan pengarah preprosesor untuk menyisipkan suatu file. Pada bahas C kita menggunakan #include<at89x 52.h> dan pada bahasa Basic kita menggunakan $regfile= 8052.dat sebagai preprosesor jika kita menggunakan at89s52. Sejak akhir tahun 1980-an, telah banyak dibuat C Cross-Compiler yang bekerja pada IBM-PC untuk MCS-51, artinya C Compiler tersebut bekerja di IBM-PC tapi kode mesin yang dihasilkan bukan untuk IBM-PC melainkan untuk MCS-51 C Compiler untuk MCS-51 YANG CUKUP DIKENAL ANTARA LAIN ADALAH Micro-C buatan Dunfield Development Systems, Franklin C buatan Franklin Software Inc dan C51 buatan Keil Software harga perangkat lunak tersebut tidak murah. Selain priduk komersil tersebut di atas, ada pula C Compile gratis, yang dikenal sabagai SDCC- small Device C Compiler, yang akan digunakan pada pratikum ini. Dengan tersedia Ulya Freeware SDDC kita dapat memprogram mikrikontroler AT89XX menggunakan bahasa C tanpa harus membeli C compiler yang harganya relatif mahal. Selain itu SDCC juga

mempunyai omtimisasi yang bagus sehingga tidak kalah dengan compiler komersial lainnya, dan cukup layak untuk kita gunakan, pemrograman dengan bahasa C akan sangat memudahkan kita dibandingkan menggunakan bahasa assembly karena program yang kita buat akan sangat mudah untuk dibaca, dan pembuatan algoritma sangat mudah untul dilakukan.

280

SMALL DEVICE C COMPILER-SDCC SDCC, buatan Sandeep Dutta (sandeep@users.sourceforge.net), sejak semula memang dibuat sebagai software gratis ( freeware),kemudian project mulia ini digabungkan dengan

project GNU, yakni project ramai-ramai insane internet yang melahirkan Linux. Dengan demikian, kini program SDCC bias diambil pada situs http://sdcc.sourceforge.net. Dalam rancangannya, SDCC dipersiapkan untuk berbagai macam mikroprosesor

mikrokontroler, hal ini sesuai dengan sifat bahasa C yang mudah diadaptasikan ke berbagai macam prosesor. Sampai saat ini, SDCC sudah bias dipakai untuk mikroprosesor Z80,

mikrokontroler MCS-51, dalam waktu dekat akan segera bias dipakai untuk mikrokontroler AVR buatan Atmel, dan mikrokontroler PIC buatan MicroChip, dan beberapa prosesor lainnya akan segera menyusul. Hal ini membuat SDCC menjadi sangat menarik. Setelah terbiasa memakai SDCC untuk project-project dengan MCS-51 , kelak satu sat bermaksud memakai mikrokontroler AVR karena memerlukan mikrokontroler yang kemampuannya lebih, maka tidak banyak

hambatan untuk beralih prosesor , bahkan program-programn yang sudah dikembangkan untuk MCS-51 dengan SDCC, dengan sedikit pembahan bias dipakai di system yang memakai AVR. MENGGUNAKAN SDCC Instalansi SDCC Sebelum anda bereksperimen dengan SDCC maka sebelumnya anda harus menginstal SDCC pada computer anda. Langkah-langkah Instalansi SDCC : 1. Download Win 32 SDCC Setup file pada situs sdcc.sourceforge.net 2. Jalankan file setup yang telah anda download tadi 3. Ikuti langkah yang muncul pada dialog yang muncul , dan gunakan nilai defaultnya, terakhir ketika installer menanyakan untuk menambah path ke system path, pilih yes sehingga anda akan dapat meng-compile dari sembarang folder. 4. Setelah selesai restart computer anda. 5. Test apakah SDCC sudah terinstall dengan benar , dengan masuk ke command prompt ketik sdcc v untuk menampilkan versi sdcc yang anda install, berikut langkahnya :

281

Gambar 141

1. Klik Start -> Run kemudian ketik cmd, klik Ok maka akan muncul window command prompt 2. Ketik sdcc v, jika tampil versi SDCC maka SDCC telah terinstal dengan benar. IN LINE ASSEMBLER Anda dapat menyisipkan kode assembler MCS-51 dalam program c anda ( in line Assembler), dengan dimulai keyword_asm dan di akhiri oleh keyword_endasm; contoh: #include <at89x51.h> // header, definisi port ada pada file ini _asm mov mov nap nap _endasm; I/O PORT ACCESS I/O Port access dapat langsung dilakukan dengan memberikan nilai pada nama port yang ingin anda akses, port yang tersedia disesuaikan mikrokontroler yang digunakan.Nama port haruslah huruf kapital mis: PO, P1, P2, P3 sesuai dengan file header, penggunaan huruf kecil akan menimbulkan kesalahan, contoh: #include <at89x51.h> // header, definisi port ada pada file ini P1 = 0xF0 ; // memberikan nilai 0x kepada port 1 P2 = 200 ; // memberikan nilai 200 kepada port 2 i = P2 ; // membaca nilai pada P2 dan nilainya di berikan ke variabel i akses port secara bit dilakukan dengan cara menggunakan keyword PX_Y, sesuai dengan definisi di file headernya, X diganti dengan port yang akan diakses, sedangkanY diganti dengan Pl,#200 P2,#255

282

dengan bit yang akan di akses, mis: Pl_ 0 artinya Port 1 bit ke 0 (P1.0), bit hanya mempunyai dua keadaan logika yaitu on(l)/off(0).Berikut contoh pengaksesan port secara bit: #include <at89x51.h> // header, definisi port ada pada file ini bit i; P1_0 = 1 ; II memberikan nilai I kepada port PI.O P1_1 = 0 ; II memberikan nilai 0 kepada port Pl.I i = P1_0 ; II membaca nilai pada PI.O dan nilainya di berikan ke variabel i BASIC COMPILER UNTUK MCS-51 Compiler bahasa basic untuk MCS-51 salah satunya adalah Bascom 8051 dari MCS electronics. Terdapat versi demo yang dapat di-download secara gratis. Versi demo dibatasi untuk program sebesar 2 kbyte saja. Berikut tampilan dari Bascom8051:

Gambar 142

Penggunaan Bascom 8051 lebih praktis daripada SDCC pada bahasa C, karena penulisan dan compiling program dapat dilakukan sekaligus pada program tersebut. Bascom80S1 juga menyediakan fasilitas simulator untuk.menguji program yang telah dibuat dengan babasa basic tentunya. Syntax bahasa Basic hampir mirip dengan C dan Pascal sehingga akan lebih mudah dipahami daripada assembler. Pada Bascom 8051, kita juga dapat menyisipkan bahasa assembler dengan menuliskan $asm diakhiri dengan $end.asm

283

BAB III PROSEDUR PERCOBAAN


III.1 Bahasa C:

1. Buka teks editor yang anda miliki, misal notepad kemudian ketik program di bawah ini #include <at89x52.h> void delay(void) { int i; for(i=O i i<1OOOO;i++); } void main(void) { while(l) { Pl = 0; delay(); PI = 255; delay() ; } }

284

2.Simpan file dengan ekstensi c (*.c).

Gambar 143 3. Klik Start Menu Run , ketikkan command untuk masuk ke command prompt.

Gabar 144 4. Masuk ke folder tempat anda meuyimpan file diatas , misal c:\tutorial dengan perintah cd c:\tutorial 5. Periksa bahwa SDCC sudah terinstal pada komputer anda dengan perintah sdcc-v, jika SDCCsudah terinstaUmaka akan tampil versi SDCC yang terinstal pada komputer. Apabila SDCC belum terinstal maka akan muncul pesan kesalahan dan anda harus menginstall SDCC terlebih dahulu

285

Gambar 145 6. Compile ledl.c dengan perintah sdcc ledl.c, jika tidak ada pesan kesalahan berarti bahwa program anda sudah benar

Gambar 146 7. Ketik perintah dir untuk melihat file yang ada pada direktori, maka akan dapat dilihat beberapa file yang muncul setelah proses compile antara lain: ledl.asm , merupakan file assembly yang di dihasiIkan dari ledl.c led.lst , merupakan file listing program ledl.ihx merupakan file hex yang terbentuk dari proses compile dan akan diprogramkan ke dalam mikrokontroller. Sebelumnya ekstensi *.ihx harus diubah menjadi *.hex menggunakan perintah: packihx led.ihx > led1.hex

286

Gambar 147 8. File led1.hex sudah siap uutuk diprogramkan ke dalam mikrokoutroller III.2 BAHASA BASIC

1. Buka program Bascom8051. 2. Tu1iskan program berikut ini: $regfile = 8052.dat $crystal = 12000000 '$sim A: P1 = &h00 Waitms 500 P1 = &h0ff Waitms 500 Goto A 3. Compile program (F7), jika masih ada keslahan akan muncul pesan tanda error. Syntax dihighlight merah.

287

Gambar 148 4. Anda dapat melihat apa jenis kesalahan yang terjadi dengan meng-klik errors pada pojok kiri bawah. Lalu akan muncul pesan error yang terjadi.

Gambar 149

5. Jika sudah tidak ada kesalahan, masukkan file *.hex ke mikrokontroller.


288

BAB IV TUGAS PRAKTIKUM

IV.I TUGAS AKHIR 2. program menampilkan karakter pada sevent segment dan LCD karakter 0 - 9 pada sevent segment $regfile = "8052.dat" $crystal = 12000000 Main: P2 = &H01 P1 = &H0C0 Wait 1 P2 = &H01 P1 = &H0F9 Wait 1 P2 = &H01 P1 = &H0A4 Wait 1 P2 = &H01 P1 = &H0B0 Wait 1 P2 = &H01 P1 = &H99 Wait 1 P2 = &H01 P1 = &H92 Wait 1 289

P2 = &H01 P1 = &H82 Wait 1 P2 = &H01 P1 = &H0F8 Wait 1 P2 = &H01 P1 = &H80 Wait 1 P2 = &H01 P1 = &H90 Wait 1 P2 = &H00 Waitms 500 Goto Main End

karakter (someone bergeser pada baris 1 dan I U pada baris 2)

Deflcdchar 1 , 32 , 32 , 27 , 21 , 17 , 10 , 4 , 32 $regfile = "8052.dat" $crystal = 12000000 Config Lcd = 16 * 2 Dim X As Word Main: Cls X=1 Locate 1 , 1

290

Lcd "some one" If X = 1 Then While X <= 16 Shiftlcd Right X=X+1 Waitms 10 Wend Else End If Waitms 30 Cls Locate 2 , 1 Lcd "<===" Locate 2 , 13 lcd "===>" Locate 2 , 6 Lcd "I" Locate 2 , 8 Lcd Chr(1) Locate 2 , 10 Lcd "U" Waitms 100 Locate 2 , 8 Lcd " " Waitms 50 Locate 2 , 8 Lcd Chr(1)

291

Waitms 200 Goto Main End 3. Program untuk memutar motor steper dan motor servo program memutar motor steper dr 0 - 1800 dan kembali lagi ke 0 $regfile = "8052.dat" $crystal = 12000000 Dim X As Word Main: Gosub Kanan Waitms 100 Gosub Kiri Waitms 100 Goto Main Kiri: X = 50 Do P0 = &B00001000 Waitms 50 P0 = &B00000100 Waitms 50 P0 = &B00000010 Waitms 50 P0 = &B00000001 Waitms 50 X=X-1 Loop Until X = 0 Return

292

Kanan: X = 50 Do P0 = &B00000001 Waitms 50 P0 = &B00000010 Waitms 50 P0 = &B00000100 Waitms 50 P0 = &B00001000 Waitms 50 X=X-1 Loop Until X = 0 Return End Program menjalankan motor servo dr 0 180 dengan kenaikan 30 $regfile = "8052.dat" $crystal = 12000000 Dim Y As Word Main: Gosub X_0 Waitms 100 Gosub X_30 Waitms 100 Gosub X_60 Waitms 100 Gosub X_90 Waitms 100

293

Gosub X_135 Waitms 100 Gosub X_180 Waitms 100 Gosub X_135 Waitms 100 ' Gosub X_90 ' Waitms 100 Goto Main

X_0: Y=0 Do P0.4 = 1 Waitms 400 P0.4 = 0 Waitms 9000 Y=Y+1 Loop Until Y = 100 Return X_30: Y=0 Do P0.4 = 1 Waitms 687 P0.4 = 0 Waitms 9000

294

Y=Y+1 Loop Until Y = 100 Return X_60: Y=0 Do P0.4 = 1 Waitms 974 P0.4 = 0 Waitms 9000 Y=Y+1 Loop Until Y = 100 Return X_90: Y=0 Do P0.4 = 1 Waitms 1260 P0.4 = 0 Waitms 9000 Y=Y+1 Loop Until Y = 100 Return X_135: Y=0 Do P0.4 = 1

295

Waitms 1690 P0.4 = 0 Waitms 9000 Y=Y+1 Loop Until Y = 100 Return X_180: Y=0 Do P0.4 = 1 Waitms 2120 P0.4 = 0 Waitms 9000 Y=Y+1 Loop Until Y = 100 Return End

296

BAB V PENUTUP

V.1

ANALISA
pada bahasa basic menggunakan bascom 8051, kita tidak perlu terlalu pusing dengan alur bahasa mesin dr mikrokontroler. Seperti misalnya : penggunaan LCD yang pada bahasa asembly kita direpotkan dengan perintah initialisasi, pengiriman data, dan pembacaan data. Tetapi pada bahasa basic kita tinggal menggunakannya saja, tanpa harus pusing memikirkan proses penginitialisasiannya. Pada perhitungan delay yang digunakan pada bascom 8051 tidak pasti akurat seperti jika kita menggunakan modul timer. Pada penggunaan bascom 8051 kita harus melakukan penginisialisasian mikrokontroler yang digunakan dan crystal.

297

V.2

KRITIK Pada saat praktikum alat-alatnya kadang tidak berjalan sesuai dengan

keinginan.apakah sudah ada pengecekan alat sebelumnya?? Karena ini juga bisa membuat praktikum semakin lama.mengingat jadwal praktikum selanjutnya dan presentasi yang akan dilaksanakan setelahnya. V.3 SARAN
Semoga alat-alat yang digunakan untuk praktikum bisa lebih baik .

298

V.4

KESIMPULAN
pada bahasa basic menggunakan bascom 8051, kita tidak perlu terlalu pusing dengan alur bahasa mesin dr mikrokontroler. Seperti misalnya : penggunaan LCD yang pada bahasa asembly kita direpotkan dengan perintah initialisasi, pengiriman data, dan pembacaan data. Tetapi pada bahasa basic kita tinggal menggunakannya saja, tanpa harus pusing memikirkan proses penginitialisasiannya.

299

V.5

DAFTAR PUSTAKA

- Modul Praktikum VC mikroprosesor dan kendali - GOOGLE, http://www.docstoc.com/docs/7488491/Belajar-Pemrograman-Bahasa-C---BAB-I, http://www.immanuelmb.com/2009/02/26/sejarah-singkat-bahasa-pemrograman-c/, http://id.wikipedia.org/wiki/C_(bahasa_pemrograman)#Versi_Bahasa_C, http://ilmukomputer.org/category/pemrograman-c/

300