Membuat program dengan bahasa pemrograman C untuk menampilkan rotasi data pada peraga LED. Pada software microprocessor board 68HC !E" Micro# terdapat C compiler $ang berfungsi untuk menter%emahkan &'ource Code( dengan program C ke dalam kode mesin !He)adesimal#. Dengan fasilitas C compiler ini bisa dibuat beberapa program aplikasi diantaran$a adalah untuk men$alakan LED. Pemakaian C pada percobaan kali ini digunakan untuk merotasi data $ang akan ditampilkan pada peraga LED. Dimana alamat memori untuk men$alakan LED adalah *++,,. Dalam teknik pemrograman agar data $ang dirotasi dapat ditampilkan dan dapat diamati pada media peraga LED- salah satu caran$a adalah dengan memberikan waktu tunda.dela$. Sub Routine Delay Contoh penulisan program subroutine dela$ adalah sebagai berikut/ void LCD_DELAY(void) { int m; m=0; while(m<1000){ m++; } } 6 Pada contoh subroutine dela$ didalam program C diatas 0ariabel dela$ mempun$ai %enis data integer dan mempun$ai nilai kurang dari ,,,- nilai ini bisa diubah1ubah tergantung kebutuhan berdasarkan pengamatan terhadap n$ala LED $ang tampil bisa diamati dengan %elas atau tidak. Penulisan fungsi delay() langsung dimulai dengan kepala fungsi dan diteruskan dengan statement1statement $ang membangun definisin$a. 2enis.t$pe data $ang digunakan pada subroutine dela$ $aitu 3nteger !int#- $ang mempun$ai pan%ang data 4 b$te dengan %angkauan mulai dari 154668 sampai dengan 54668. 7erikut ini contoh lain cara memberi waktu tunda dalam pemrograman C dengan menggunakan penambahan nilai sebuah 0ariabel satu demi satu hingga mencapai nilai batas $ang ditentukan. for(=0;<!0000;++); Blok diagram ambar 8!1" 7lok diagram s$stem CP8 68HC beserta program C dengan LED !3.9# pada E"1M3C:9 ;8;9: ;M board. 1 Microprocessor 7oard 68HC 1 PC beserta software E"1M3C:9 1 <C <daptor = 0olt 1 >abel 'erial 1" Hard#are 64 68HC11 $ C program E"1M3C:9 ;8;9: ;M board %&D D1!D' 1 Hubungkan C9M atau C9M4 pada PC dengan kabel serial ke board mikroprosesor 68HC 1 Hubungkan catu data = ?olt <C adaptor pada board mikroprosesor 68HC 1 Diteriman$a tegangan ditandai dengan LED D= men$ala dan pada LCD tertera tulisan &E" Micro ;utor @:9M <M'(. (" So)t#are 1 <ktifkan E"1M3C:9 ;8;9: Manager 4., 1 >lik File pada baris menu- pilih Create Source kemudian tulislah nama file baru dengan e)tension [namafile].C kedalam direktori !folder# ezmicro dan pilih open. 1 ;ulislah program percobaan pada editor Aotepad dari Create Source tersebut. 1 Program . file baru tersebut- simpan kembali dalam direktori !folder# eBmicro. 1 Compile file baru dengan klik menu File kemudian C Compile File- pilih nama file $ang baru dibuat dengan e)tension "C. 1 Maka akan terbentuk file he)adecimal !file *.s19#- dan file *.lst disamping itu %uga muncul pesan- bahwa file $ang telah dicompile tersebut terdapat kesalahan atau tidak- untuk melihat letak kesalahan buka file *.lst. 1 8ntuk memperbaiki kesalahan !error#- klik menu File kemudian Edit Source baik untuk bahasa assembler !file C.asm# maupun untuk bahasa C !file C.C#. 2angan lupa disimpan kemudian dicompile kembali. *" Do#nload program 1 8ntuk mendownload program $ang telah sukses dicompile- maka gunakan menu File kemudian Load S-Record pilih [nama file].s19. 1 'etelah proses download selesai- akan muncul dialog bo) $ang menan$akan alamat awal dari program. '" Run program 1 8ntuk men%alankan program klik menu Run kemudian Go lalu muncul dialog bo) untuk memasukkan alamat awal dari program. 1 'etelah program sudah di%alankan- amati keluaran $ang ditampilkan pada LED !D sampai D+#. 65 - Program Menuliskan data pada LED menggunakan Pointer A. Rotasi Kiri #define LEDS 0x4400 main() { char val; int i,a; for(;;) { val=0x07; out(val,LEDS); for(a=0;a!"0000;a##); val=0x0$; out(val,LEDS); for(a=0;a!"0000;a##); val=0x0D; out(val,LEDS); for(a=0;a!"0000;a##); val=0x0E; out(val,LEDS); for(a=0;a!"0000;a##); % % B. Rotasi kanan #define LEDS 0x4400 main() { char val; int i,a; for(;;) { val=0x0E; out(val,LEDS); for(a=0;a!"0000;a##); val=0x0D; out(val,LEDS); for(a=0;a!"0000;a##); val=0x0$; out(val,LEDS); for(a=0;a!"0000;a##); val=0x07; out(val,LEDS); for(a=0;a!"0000;a##); % % C. Lompat 2 data (LED) #define LEDS 0x4400 main() { char val; int &; 6+ for(;;) { val=0x0E; out(val,LEDS); for(&=0;&!'"000;&##); val=0x0$; out(val,LEDS); for(&=0;&!'"000;&##); % % D. Penumla!an 2 data #define LED()**SE+ 0x0400 char ext,a-e void main() { char val,val.,val"; char /.; int i; .=0ext,a-e; 1hile(.) { val.=0x0.; val"=0x0"; val=val. # val"; for(i=0; i!=22; i=i#.); /(.#LED()**SE+)=val; % % . 7uat program dalam bahasa C untuk men$alakan LED putar kiri dan kanan- dalam satu listing program dan t$pe datan$a adalah integer (int)- gunakan perintah for dan perintah outp untuk men$alakan dan rotasi LED. 4. Dua data dengan t$pe integer masing1masing disimpan pada 0ariable a dan b- dari kedua data tersebut buatlah program pen%umlahan- dan pengurangan menggunakan bahasa C dan hasiln$a ditampilkan pada LED D sampai dengan D+. 6D