Anda di halaman 1dari 6

A.

Tujuan
Setelah menyelesaikan modul 2, yang didapat adalah:
Dapat menjelaskan kegunaan dari file header
Dapat membuat file header dari sebuah project
Dapat memodifikasi program berstruktur
B. Teori Singkat
Sebagai ilustrasi yang ditunjukkan oleh Gambar 1. Anda akan memecah-mecah sebuah
program dalam satu file utuh menjadi kelas-kelas yang lebih kecil.

Gambar 1. Memecah sebuah program menjadi kelas yang lebih kecil


C. Setting Percobaan

Koneksi

PC
Arduino MEGA2560

Gambar 2 . Hubungan PC dengan board arduino Mega2560

Gambar 3. Scematic board arduino mega2560


1. Hubungkan port serial board mega 2560 ke PC
2. Beri tegangan board mega 2560 7-12 volt
3. Jalankan dan setting software eclipsc pada PC

D. Prosedur percobaan
1. Siapkan board mega 2560 untuk praktikum.
2. Hubungkan beberapa peralatan I/O berikut:
3Switch, terhubung ke port-H 1 switch terhubung ke port B
2LED terhubung ke port B, dan LED bar terhubung ke portA
3. Jalankan aplikasi eclipsc dan gunakan eclipsc untuk melakukan seting pada Chip.
Tipe IC yang digunakan beserta frekuensi kristal yang digunakan
Port-A sebagai output dengan nilai awal nol
4. Simpan file yang dihasilkan
Buatlah file baru (menu: file sourch file isi kolom sourch file), ketikkan program
berikut, simpan dengan nama main.c
#include
#include
#include
#include
#include

<avr/io.h>
"utility.h"
"io.h"
"sensor.h"
"counter.h"

//unsigned char counter=0;


int main(void)
{
DDRA=0xFF;
SETInputPullup(pushButton1);
SETInputPullup(pushButton4);
while(1)
{
CounterShow();
if (sensorDetected()){
CounterUpdate();
}
if(!isCheckPIN(pushButton4)){
resetnya();
}
}
}

Buatlah file baru (menu: file sourch file isi kolom sourch file), ketikkan program
berikut, simpan dengan nama sensor.c
* sensor.c
#include "utility.h"
#include <avr/io.h>
#include <util/delay.h>
#include "sensor.h"
#include "counter.h"
#include "io.h"
unsigned char sensorDetected(void){
unsigned char flagDetection=0;
if (!isCheckPIN(pushButton1)){
_delay_ms(40);
if(!isCheckPIN(pushButton1))
{
while(!isCheckPIN(pushButton1));
flagDetection=1;
}
}

_delay_ms(40);
return flagDetection;
}

Buatlah file baru (menu: file sourch file isi kolom sourch file), ketikkan program
berikut, simpan dengan nama counter.c
* counter.c
#include <avr/io.h>
#include "counter.h"
#include "io.h"
#include "utility.h"
unsigned char counter=0;

void CounterShow(void){
PORTA = ~counter;
}

//tampilkan nilai counter ke LED

void CounterUpdate(void){
counter++;
}
void resetnya(void){
counter=0;
PORTA = ~counter;
}

Buatlah file baru (menu: file header file isi kolom header file), ketikkan program
berikut, simpan dengan nama counter.h
* counter.h
#ifndef COUNTER_H_
#define COUNTER_H_

void CounterShow(void);
void CounterUpdate(void);
void resetnya(void);
#endif /* COUNTER_H_ */

Buatlah file baru (menu: file header file isi kolom header file), ketikkan program
berikut, simpan dengan nama sensor.h
* sensor.h
#ifndef SENSOR_H_
#define SENSOR_H_
unsigned char sensorDetected(void);
#endif /* SENSOR_H_ */

Buatlah file baru (menu: file header file isi kolom header file), ketikkan program
berikut, simpan dengan nama I/O.h
* io.h

#ifndef IO_H_
#define IO_H_
//DeviceIO
#define ledBar PORTA
#define pushButton1 B,4
#define pushButton2 H,6
#define pushButton3 H,5
#define pushButton4 H,4
#define ledMerah B,7
#define ledHijau B,6
#define buzzer
B,5
#endif /* IO_H_ */

Buatlah file baru (menu: file header file isi kolom header file), ketikkan program
berikut, simpan dengan nama utility.h
*utility.h
#ifndef UTILITY_H_
#define UTILITY_H_
//utility
#define checkbit(address,bit) (address & (1<<bit))
#define setbit(address,bit) (address |=(1<<bit))
#define clrbit(address,bit) (address &=~(1<<bit))
#define flipbit(address,bit) (address ^=(1<<bit))
//temporary
#define _set(address,bit) (PORT##address |=(1<<bit))
#define _clr(address,bit) (PORT##address &=~(1<<bit))
#define _flip(address,bit) (PORT##address ^=(1<<bit))
#define _setInputPullup(address,bit) (DDR##address &=~(1<<bit));
(PORT##address |=(1<<bit))
#define _setOutput(address,bit) (DDR##address |=(1<<bit))
#define _Checkbit2(address,bit) (PIN##address &(1<<bit))
//final
#define SET(address) _set(address)
#define CLR(address) _clr(address)
#define FLIP(address) _flip(address)
#define SETInputPullup(address) _setInputPullup(address)
#define SETOutput(address)_setOutput(address)
#define isCheckPIN(x) _Checkbit2(x)
//end utility

#endif /* UTILITY_H_ */

E. Hasil Percobaan

Gambar 4. Hasil percobaan counter 0x09


Gambar diatas menujukan bahwa ketika switch ditekan microkontroler akan
mencounter naik. Dan diindikasikan oleh LED berwarna hijau

Gambar 5. Hasil percobaan counter reset


Gambar diatas menujukan bahwa ketika switch ditekan maka microkontroler akan
reset. Dari gambar diatas ditujukan led berwana hijau mati.

F. Analisa
Pada kasus diatas adalah bagaimana cara membuat alat penghitung barang pada modul
menjadi lebih terstruktur. Dalam merealisasikannya dibuat partisi program. Program pada
modul 1akan dipartisi sesuai ketentuan. Berikut blok diagram beserta nama-nama partisi dan

tipe file.

Dari blok diagram diatas terdapat dua jenis file. Yaitu, file header dengan format (.h) dan file
source dengan format (.c) . Menggunakan header pada project membuat program kita lebih
mudah untuk dibaca, setidaknya orang lain yang membaca akan mengerti dimana untuk
mencari informasi kuncinya, seperti model mikrokontroler dan port-port yang digunakan.
Penggunaan header pada project juga membuat program Anda lebih portabel. Penambahan
atau perubahan informasi penting hanya dilakukan pada file header. File header juga berguna
bila Anda ingin membuat sebuah library misalnya.

G. Kesimpulan
1. Ketentuan mempartisi program : (1) listing program pd projeck yang ingin dipartisi harus
sesuai dengan tipe file. (2) pastikan library pada masing2 partisi file source tidak
terlewatkan
2. Agar informasi error saat meng compile bisa lebih jelas, compile satu partisi terlebih
dahulu hingga selesai, setelah itu baru ke partisi lain.
3. Indakator sukses dalam mepartisi adalah. Listing program akan berjalan sama seperti
semula (listing program sebelum dipartisi) tanpa ada perubahan.

Anda mungkin juga menyukai