Anda di halaman 1dari 74

CE3019SK

Praktikum Mikroprosesor Dan Mikrokontroler

Robotics And Embedded System Laboratory


Jurusan Sistem Komputer
Universitas Andalas
2018
KATA PENGANTAR

Alhamdulillah dengan mengucapkan rasa syukur penulis ucapkan atas kehadirat


ALLAH SWT yang telah memberikan rahmat dan karunia-Nya serta kesehatan, sehingga
MODUL PRAKTIKUM SISTEM MIKROKONTROLER DAN MIKROPROSESOR ini
dapat terselesaikan dengan baik tanpa kendala yang berarti, yang mana modul ini
diharapakan bisa menjadi panduan bagi praktikan untuk melaksanakan praktikum.
Shalawat beserta salam tercurahkan kepada Nabi Muhammad SAW yang membawa kita
kea lam yang diterangi oleh ilmu pengetahuan.

Tim penyusun mengucapkan terima kasih kepada dosen pengampuh mata


kuliah atas bimbingan dan bantuannya dalam menyusun modul ini baik secara
material maupun spiritual. Modul ini diharapkan bisa menjadi panduan bagi praktikan
untuk melaksanakan praktikum dengan sebaik-baiknya. Akhir kata tim penyusun
berharap agar praktikan dapat mengikuti praktikum sesuai panduan dari modul ini
dan terlaksana dengan sebaik-baiknya.

Padang, 4 Oktober 2017

Penulis
Daftar Kontributor
Penulis menghargai semua pihak yang telah membantu dan berkonstribusi pada
penyusunan petunjuk pratikum. Berikut ini daftar nama yang berkonstribusi pada
penyusunan petunjuk pratikum ini

Dody Ichwana Putra, MT

Nefy Puteri, MT

Dian Zulfi Nanda

Muhammad Azmi Riyan

Fitri Ardiani

Stevanus Setianto

Engky Lawara Yayan

Marreza Rifa Saputra


PERATURAN PRATIKUM

LABORATORIUM RESLAB

1. TATA TERTIB PRAKTIKUM

a. Setiap praktikan diwajibkan mengikuti semua prosedur penyelenggaraan praktikum


(asistensi, response, praktikum dan laporan) dengan tertib dan disiplin
b. Waktu toleransi praktikum 10 menit keterlambatan jika melebihi dari waktu toleransi
maka praktikan dinyatakan gagal modul yang bersangkutan.
c. Praktikan hanya dapat melaksanakan praktikum pada jadwal yang telah ditentukan.
d. Dalam satu (1) shift pratikum hanya dilaksanakan untuk satu mata kuliah pratikum.
e. Praktikan menggunakan PDH HME (rapih dan sopan, celana panjang/rok dan kemeja)
f. Modul praktikum di print dan dibawa saat praktikum dilaksanakan.
g. Wajib membawa laptop yang telah di install software pendukung sesuai
h. dengan instruksi asisten dan kebutuhan praktikum (jika dibutuhkan)
i. Tidak membawa senjata tajam dan menciptakan keributan.
j. Selama praktikum berlangsung, praktikan dilarang :
1. Menggunakan dan mengoperasikan peralatan tanpa seizin teknisi dan asisten yang
bersangkutan.
2. Melakukan hal-hal yang tidak diinstruksikan oleh asisten yang bersangkutan.
3. Makan, minum, membuat keributan, dan hal-hal yang dapat mengganggu
pelaksanaan praktikum.
k. Setelah praktikum, meja praktikum harus bersih dan semua hal harus dikembalikan ke
tempatnya.
l. Bagi praktikan yang melanggar tata tertib ini maka praktikumnya digagalkan modul
bersangkutan.

2. Pergantian Jadwal

Dilakukan apabila praktikan tidak dapat melaksanakan praktikum sesuai dengan jadwal atau
melanggar tata tertib praktikum, syarat dan ketentuan:

a. Bagi praktikan yang tidak bisa mengikuti praktikum pada waktu yang telah
dijadwalkan karena sakit dan atau alasan lain, maka praktikan harus membuat surat
izin yang diketahui oleh Asisten Koordinator Praktikum dan diserahkan paling lambat
sebelum jadwal praktikumnya.
b. Segera setelah praktikan memungkinkan mengikuti kegiatan akademik, praktikan
dapat mengikuti praktikum pengganti setelah mendapatkan konfirmasi dari asisten
Koordinasi mata kuliah bersangkutan dengan melampirkan surat keterangan dokter
bagi yang sakit atau surat terkait untuk yang memiliki urusan pribadi.
c. Praktikum pengganti dilaksanakan pada shift praktikum yang akan melaksanakan
modul yang akan yang di ganti(disisip).
d. Maksimal pergantian 1 Modul praktikum.
e. Jika tidak mengikuti pergantian modul maka nilai modul bersangkutan diberikan D

3. FORMAT PENULISAN LAPORAN

a. Margin : Top = 4 cm, Bottom = 3 cm Left = 4 cm, Right = 3cm


b. Kertas A4
c. Judul Times New Roman 14 Pt, Bold
d. talic untuk penggunaan bahasa inggris
e. Isi Times New 12 Pt text-align justify
f. Spasi 1,5 tidak ada space setelah dan sebelum paragraf
g. Gambar

Gambar 1 Stabilitas Relatif

Gambar dan nama gambar harus proporsional, jelas dengan ukuran yang tidak berlebihan,
letak center, diberikan sumber referensi dari mana diperoleh gambar tersebut, berlaku
untuk persamaan, dan bunyi hokum

h. Setiap bab berisi

BAB I PROSEDUR PERCOBAAN


Berisi langkah kerja atau prosedur percobaan pada saat praktikum minimal 2 lembar.
BAB II TUGAS
Berisi tugas pendahuluan, tambahan, dan modul minimal 2 lembar.

BAB III ANALISIS


Berisi analisis atau penjelasan praktikum yang dilakukan didasari teori yang berasal dari
sumber yang terpercayaminimal 3 lembar.

BAB IV PENUTUP
Berisi kesimpulan dari percobaan yang dilakukan, merupakan jawaban dari tujuan pada
saat praktikum minimal 1 lembar.

DAFTAR PUSTAKA
Berisi daftar rujukan atau pustaka yang telah digunakanpada laporan praktikum. Rujukan
yang diperbolehkan meliputi jurnal ilmiah, prosiding seminar, textbook, majalah ilmiah
dan sumber lain yang dapat dipertanggungjawabkan.Adapun tata cara penulisan referensi
tergantung pada style penulisan sitasi yang digunakan.

1.) Bagi yang menggunakan style APA


Feit, S. (1998). TCP/IP: architecture, protocols, and implementation with IPv6 and IP
security. United States of America: The McGrawHill Companies, Inc.

Jin,H.-W.,and Yoo, C. (2007). Impact of Protocol Overheads on Network Throughput


Over High-Speed Interconnects: Measurement, Analysis, and Improvement. The Journal
of Supercomputing. Vol.41, No. 1, pp. 17 – 40.

2) Bagi yang menggunakan style numbered (angka)


1. Feit, S., TCP/IP : architecture, protocols, and implementation with IPv6 and IP
security. 1998, United States of America: The McGraw-Hill Companies, Inc.
2. Jin, H.-W., & Yoo, C. Impact of Protocol Overheads on Network Throughput Over
High-Speed Interconnects: Measurement, Analysis, and Improvement. The Journal of
Supercomputing. 2007.Vol. 41, No. 1, pp. 17 – 40.

4. PRESENTASI TUGAS AKHIR

Merupakan ujian yang bersifat aplikatif dari materi yang telah dipraktikkan, setiap
kelompok mempresentasikan sebuah program dalam bentuk aplikasi serta
mendemonstrasikannya.
5. RESPONSI

Merupakan review dari awal sampai dengan akhir praktikum dalam bentuk test tertulis
yang dilaksanakan sebelum praktikum dan diberikan oleh dosen pengampu praktikum.
Bagi yang tidak mengikuti responsi maka praktikan dianggap gugur atau tidak mengikuti
praktikum tersebut dan nilai maksimal yang diberikan D.

6. JADWAL PRAKTIKUM
a. Waktu yang diberikan sesuai dengan hari kerja (senin s/d jumat)
b. Batas jam yang diberikan dari jam 8.00 WIB sampai dengan 16.00 WIB
c. Jadwal diberikan sesuai dengan kesepakatan antara asisten dan praktikan, selama
tidak mengganggu jam kuliah.

7. SANKSI

TABEL SANKSI PRAKTIKUM


Kasus Sanksi Pengurangan nilai
per modul
Semua bentuk plagiat (mencontek) laporan Gugur modul
pratikum, tugas pendahuluan bersangkutan
Sengaja tidak mengikuti pratikum
Tidak hadir pratikum Gugur modul
Terlambat hadir pratikum
Tugas pendahuluan tidak 10% dari nilai
dikerjakan/hilang/tertinggal laporan
Kartu pratikum tertinggal/hilang Melapor pada asisten
yang bertugas
Kartu pratikum tidak lengkap data dan foto 5 poin nilai laporan
Tidak minta paraf asisten di kartu pratikum 5 poin nilai laporan
Terlambat mengumpulkan laporan 25% dari nilai
laporan
Kerusakan alat pratikum karena kelalaian Penggantian alat
praktikan praktikum

Catatan :

1. Praktikan yang terkena sanksi gugur modul nilai praktokum modul


bersangkutan dinyatakan D.
2. Setiap pelanggaran berat dan ringan dicatat/diberikan tanda di kartu pratikum
3. Sanksi yang tercantum ditabel adalah sanksi minimum
4. Sanksi yang belum tercantum akan ditentukan kemudian
Panduan Umum dan Keselamatan dan Penggunaan Laboratorium

Keselamatan

Pada prinsipnya untuk mewujudkan pratikm yang aman diperlukan partisipasi seluruh pratikan
dan asisten pada pratikum yang bersangkutan. Dengan demikian, kepatuhan setiap pratikan
terhadap uraian pada bagian ini akan sangat membantu mewujudkan pratikum yang aman.

Bahaya Listrik

Perhatikan dan pelajari tempat-tempat sumber listrik (stop-kontak dan circuit breaker) dan cara
menyalkan-mematikannya. Jika melihat ada kerusakan yang berpotensi menimbulkan bahaya,
laporkan pada asistem

Hindari daerah atau benda yang berpotensi menimbulkan bahaya listrik (sengatan listrik/
strum) secara tidak sengaja, misalkan kabel jala-jala yang terkelupas dll.
Tidak melakukan sesuatu yang dapat menimbulkan bahaya listrik pada diri sendiri atau
orang lain
Keringkan bagian tubuh yang basah karena, misalkan keringat dll
Selalu waspada terhadapa bahaya listrik pada setiap aktivitas pratikum

Kecelakaan akibat bahaya listrik yang sering terjadi adalah tersengat arus listrik. Berikut ini
adalah hal-hal yang harus diikuti pratikan jika hal itu terjadi :

Jangan panic,
Matikan semua peralatan elektronik dan sumber listrik di meja masing-masing dan di
meja pratikan yang tesengat arus listrik,
Bantu pratikan yang tersengat arus listrik untuk melepaskan diri dari sumber listrik,
Beritahu dan minta bantuan asisten, pratikan lain dan orang di sekitar anda tentang
terjadinya kecelakaan akibat bahaya listrik

Bahaya Api atau Panas Berlebih

Jangan membawa benda-benda mudah terbakar (korek api, gas dll) ke dalam ruangan
pratikum bila tidak disyaratkan dalam modul pratikum
Jangan menimbulkan sesuatu yang dapat menimbulkan api, percikan api atau panas
berlebih
Selalu waspada pada bahaya api atau panas berlebih pada aktivitas pratikum

Berikut ini adalah hal-hal yang harus diikuti pratikan jika menghadapi bahaya panas berlebih :

Jangan panik,
Matikan semua peralatan elektronik dan sumber listrik di meja masing-masing
Beritahu dan minta bantuan asisten, pratikan lain dan orang di sekitar anda tentang
terjadinya bahaya api atau panas berlebih
Menjauh dari ruangan pratikum

Bahaya Lain

Untuk menghindari terjadinya hal-hal yang tidak diinginkan selama pelaksanaan percobaan
perhatikan juga hal-hal berikut :

Jangan membawa benda tajam (pisau, gunting dan sejenisnya) ke ruangan pratikum bila
tidak diperlukan untuk pelaksanaan percobaan
Jangan memakai perhiasan dari loga, misalnya cincin, kalung, gelang dll
Hindari daerah atau logam yang memiliki daerah tajam yang dapat melukai
Hindari melakukan sesuatu yang dapat menimbulkan luka pada diri sendiri atau orang
lain, misalnya bermain-main saat pratikum

Lain-Lain

Pratikan dilarang membawa makanan dan minuman ke dalam ruangan pratikum

Penggunaan Peralatan Pratikum

Berikut adalah panduan yang harus dipatuhi ketika menggunakan alat-alat pratikum

Sebelum menggunakan alat-alat pratikum, pahami petunjuk penggunaan alat itu.


Perhatikan dan patuhi peringatan (warning) yang biasa tertera pada badan alat
Pahami fungsi atau peruntukan alat-alat pratikum dan gunakanlah alat-alat tersebut hanya
untuk aktivitas yang sesuai fungsi atau peruntukannya. Menggunakan alat pratikum di
luar fungsi atau peruntukannya dapat menimbulkan kerusakan pada alat tersebut dan
bahaya keselamatan pratikan
Pahami rating dan jangkauan kerja alat-alat pratikum dan gunakanlah alat-alat tersebut
sesuai dengan rating dan jangkauan kerjanya. Penggunaan alat-alat pratikum di luar
rating kerjanya dapat menimbulkan kerusakan pada alat tersebut dan bahaya keselamatan
pratikan
Pastikan seluruh peralatan pratikum yang digunakan aman dari benda/logam tajam,
api/panas berlebih atau laiinnya yang dapat mengakibatkan kerusakan pada alat tersebut
Tidak melakukan aktivitas yang dapat menyebabkan kotor, coretan , goresan atau
sejenisnya pada badan alat-alat pratikum yang digunakan
Kerusakan instrumentasi pratikum menjadi tanggung jawab bersama rombongan
pratikum ybs. Alat yang rusak harus diganti oleh rombongan tersebut.

Sanksi

Pengabaian uraian panduan di atas dapat dikenakan sanksi tidak lulus mata kuliah yang
bersangkutan.
PERCOBAAN I
ASSEMBLY 1

1.1 TUJUAN
1 Mengenal dan memahami pemrograman ARM dengan menggunakan bahasa Assembly.
2 Memahami tipe data dan register dalam processor ARM.
3 Memahami instruction set dalam processor ARM.
4 Memahami instruksi LDR (Load Register) atau STR (Store Register) memory dalam
processor ARM.

1.1 PERSIAPAN
Pelajari kembali modul praktikum dan bahan kuliah yang berkaitan dengan pemrograma n
Assembly, kemudian kerjakan Tugas Pendahuluan dan kumpulkan sesuai ketentuan yang
berlaku.

1.2 DASAR TEORI


As s embly adalah low-level programming language pada komputer atau pada perangkat lain yang dapat di
program. Keunggulan dari Assembly adalah bahasa ini Power Full yang berarti dengan menggunakan
program ini, langsung bermain dalam komunikasi antar register. Bahasa Assembly berbeda -beda
tergantung arsitektur prosessor dan instruksi set yang digunakan. Agar dapat dieksekusi, program yang
ditulis dalam bahasa Assembly harus di compile ke dalam bentuk bahasa mesin. Bahasa Assembly
menggunakan mnemonic untuk merepresentasikan low-level machine instruction atau opcode.

Raspberry Pi adalah sebuah SBC (Single Board Computer) yang menggunakan processor ARM.
ARM merupakan Processor dengan insruction set RISC (Reduced Instuction Set Computing)
yang berarti instruksinya kurang dari 100 instruksi. RISC memiliki beberapa kelebihan dan
kekurangan. Salah satu kelebihannya adalah instruksi dapat di eksekusi lebih cepat karena sistem
RISC memperpendek waktu esekus dengan mengurangngi clock cycles. Kekurangannya adalah
mengurangi evesiensi penulisan software.

Tabel 1.1 Register Pada Prosesor ARM


# Alias Purpose

R0 – General purpose

R1 – General purpose

R2 – General purpose

1 | ASSEMBLY I
# Alias Purpose

R3 – General purpose

R4 – General purpose

R5 – General purpose

R6 – General purpose

R7 – Holds Syscall Number

R8 – General purpose

R9 – General purpose

R10 – General purpose

R11 FP Frame Pointer

Special Purpose Registers

R12 IP Intra Procedural Call

R13 SP Stack Pointer

R14 LR Link Register

R15 PC Program Counter

CPSR – Current Program Status Register

Perbandingan Register Antara ARM dengan x86

ARM Description x86

2 | ASSEMBLY I
# Alias Purpose

General
R0 Purpose EAX

General
R1-R5 Purpose EBX, ECX, EDX, ESI, EDI

General
R6-R10 Purpose –

R11 (FP) Frame Pointer EBP

Intra
Procedural
R12 Call –

R13 (SP) Stack Pointer ESP

R14 (LR) Link Register –

<-Program
Counter /
Instruction
R15 (PC) Pointer -> EIP

Current
Program State
CPSR Register/Flags EFLAGS

Instruksi assembly pada prosessor ARM adalah seperti tabel di bawah ini :

Tabel 1.2. Instruksi Pada Prosessor ARM


Instruction Description

MOV Move data

3 | ASSEMBLY I
Ins truction Description

MVN Move 2’s complement

ADD Addition

SUB Subtraction

MUL Multiplication

LSL Logical Shift Left

LSR Logical Shift Right

ASR Arithmetic Shift Right

ROR Rotate Right

CMP Compare

AND Bitwise AND

ORR Bitwise OR

EOR Bitwise XOR

LDR Load

STR Store

LDM Load Multiple

STM Store Multiple

PUSH Push on Stack

4 | ASSEMBLY I
Ins truction Description

POP Pop off Stack

B Branch

BL Branch with Link

BX Branch and eXchange

BLX Branch with Link and eXchange

SWI/SVC System Call

1.3 TUGAS PENDAHULUAN

1. Lakukan instalasi Putty untuk SSH pada laptop anda, buka aplikasi lalu screenshoot
2. Jelaskan Apa itu Mikroprocessor
3. Jelaskan Apa itu Raspberry
4. Jelaskan Fitur dan Port-port yang ada pada Raspberry Pi 1 Model B+
5. Jelaskan General Purpose register yang ada pada Processor ARM RISC 32 bit
6. Sebutkan Bagaimana Sumber daya optimal yang dibutuhkan pada Mini Komputer Raspberry Pi

1.4 PERCOBAAN

A. ALAT YANG DIGUNAKAN


1) 1 unit Raspberry Pi
2) 1 unit SD card (min 2 GB) dengan OS RASBIAN
3) 1 unit SD Adapter
4) 1 unit Kabel UTP
5) 1 unit Laptop
6) 1 unit Kabel data USB to Micro USB

B. PROSEDUR PERCOBAAN

MEMULAI PERCOBAAN

1. Hidupkan Laptop
2. Masukkan SD Card kedalam slot SD Card Raspberry Pi
3. Hidupkan Raspberry Pi (gunakan kabel USB to Micro USB)
4. Hubungkan laptop dengan Raspberry Pi menggunakan kabel UTP
5. Lakukan komunikasi SSH ke Raspberry Pi melalui Laptop dengan Mengetikka n
command berikut di terminal Laptop : ssh pi@<ip-raspberry-pi> -p 22
1. PERCOBAAN 1A : Register dan Aritmatik Sederhana Dalam Assambly

1) Ketikkan Program berikut dengan menggunakan command : nano <nama file>.s


: nama file yang digunakan adalah nama_nobp_latihan1.s

7 | ASSEMBLY I
1
2 /* -- latihan1.s */
.global main
3
4
5
main:
mov r1, #3 /* r1 ← 3 */
6
7 mov r2, #4 /* r2 ← 4 */
add r0, r1, r2 /* r0 ← r1 + r2 */
8
bx lr

2) Setelah selesai, jalankan command : as –o <nama-file .o> <nama-file .s> di terminal.


3) Lalu ketikkan command gcc –o <nama-file> <nama-file .s>
4) Lalu ketikkan command ./<nama-file> untuk mengeksekusi program dan melihat hasilnya.
5) Analisa Program di atas.
6) Ketikkan Program berikut dan simpan dengan nama latihan2 kemudian lakukan langkah
9, 10 dan 11 diatas untuk compile dan menjalankan program.

1
2 /* -- latihan2.s */
.global main
3
4
main:
5
6 mov r0, #3 /* r0 ← 3 */
7 mov r1, #4 /* r1 ← 4 */
8 add r0, r0, r1 /* r0 ← r0 + r1 */ bx
lr

7) Analisa Program di atas.


8) Jalankan program pada Raspberry Pi dengan dan lakukan debugging dengan perintah :
gdb ./<nama-file>
9) Di dalam cli gdb, lalukan perintah :
(gdb) break *main
(gdb) run
(gdb) info register
(gdb) stepi

10) Tekan tombol c pada keyboard untuk menjalankan program hingga breakpoint
11) Jalankan perintah :
(gdb) info register
12) Lakukan Screenshoot pada hasil percobaan dan buat analisa jalannya program pada
laporan

2. PERCOBAAN 1B: Operasi Load / Store sederhana Assambly

1) Ketikkan Program berikut dan simpan dengan latihan3 kemudian ikuti langkah 9,10 dan 11.

1 /* -- latihan3.s */
2
3 /* -- Data section */
4 .data
5
6 /* Ensure variable is 4-byte aligned */
7 .balign 4
8 /* Define storage for myvar1 */
9 myvar1:
10 /* Contents of myvar1 is just 4 bytes containing value '3' */
11 .word 3
12

8 | ASSEMBLY I
13 /* Ensure variable is 4-byte aligned */
14 .balign 4
15 /* Define storage for myvar2 */
16 myvar2:
17 /* Contents of myvar2 is just 4 bytes containing value '4' */
18 .word 4
19
20 /* -- Code section */
21 .text
22
23 /* Ensure code is 4 byte aligned */
24 .balign 4
25 .global main
26 main:
27 ldr r1, addr_of_myvar1 /* r1 ← &myvar1 */
28 ldr r1, [r1] /* r1 ← *r1 */
29 ldr r2, addr_of_myvar2 /* r2 ← &myvar2 */
30 ldr r2, [r2] /* r2 ← *r2 */
31 add r0, r1, r2 /* r0 ← r1 + r2 */
32 bx lr
33
34 /* Labels needed to access data */
35 addr_of_myvar1 : .word myvar1
36 addr_of_myvar2 : .word myvar2

2) Ketikkan Program berikut dan simpan dengan nama latihan4 :

1 /* -- latihan4.s */
2
3 /* -- Data section */
4 .data
5
6 /* Ensure variable is 4-byte aligned */
7 .balign 4
8 /* Define storage for myvar1 */
9 myvar1:
10 /* Contents of myvar1 is just '3' */
11 .word 0
12
13 /* Ensure variable is 4-byte aligned
14 */ .balign 4
15 /* Define storage for myvar2 */
16 myvar2:
17 /* Contents of myvar2 is just '3' */
18 .word 0
19

9 | ASSEMBLY I
20 /* -- Code section */
21 .text
22
23 /* Ensure function section starts 4 byte aligned */
24 .balign 4
25 .global main
26 main:
27 ldr r1, addr_of_myvar1 /* r1 ← &myvar1 */
28 mov r3, #3 /* r3 ← 3 */
29 str r3, [r1] /* *r1 ← r3 */
30 ldr r2, addr_of_myvar2 /* r2 ← &myvar2 */
31 mov r3, #4 /* r3 ← 4 */
32 str r3, [r2] /* *r2 ← r3 */
33
34 /* Same instructions as above */
35 ldr r1, addr_of_myvar1 /* r1 ← &myvar1 */
36 ldr r1, [r1] /* r1 ← *r1 */
37 ldr r2, addr_of_myvar2 /* r2 ← &myvar2 */
38 ldr r2, [r2] /* r2 ← *r2 */
39 add r0, r1, r2
40 bx lr
41
42 /* Labels needed to access data */
43 addr_of_myvar1 : .word myvar1
44 addr_of_myvar2 : .word myvar2

1) Analisa Program di atas.

1.5 MENGAKHIRI PERCOBAAN


1. Sebelum keluar dari ruang praktikum, rapikan meja praktikum. Letakkan Raspberi pi
pada tempat yang telah di tentukan
2. Letakkan kursi pada tempat yang telah ditentukan
3. Pastikan asisten telah menandatangani lembar kehadiran praktikum pada kartu
praktikum. Lembar kehadiran yang tidak ditandatangani oleh asisten pada praktikum
tertentu tidak akan di nilai.

1.6 REFERENSI
https://www.raspberrypi.org/documentation/installation/installing-
images/ https://arzeria- labs.com
https://etcher.io/
http://thinkingeek.com/2013/01/09/arm-assembler-raspberry-pi-chapter-1/

10 | ASSEMBLY I
PERCOBAAN II
ASSEMBLY 2

1.1 TUJUAN
1. Memahami dan mengetahui cara Load atau Store Array di assembly ARM.
2. Mengenal dan memahami conditional execiut dan branching dalam assembly ARM.
3. Mengenal stack dan function dalam assembly ARM
1.1 PERSIAPAN
Pelajari kembali modul praktikum dan bahan kuliah yang berkaitan dengan Arsitektur Sistem
Komputer I, kemudian kerjakan Tugas Pendahuluan dan kumpulkan sesuai ketentuan yang
berlaku.

1.2 DASAR TEORI


Array merupakan sebuah variabel yang menyimpan lebih dari 1 buah data yang memiliki tipe data yang
sama. Jadi dapat dikatakan bahwa array merupakan kumpulan dari data -data tunggal yang dijadikan dalam
1 variabel array yang alamat memorinya berbeda yang selanjutnya disebut elemen-elemen array yang bisa
kita akses berdasarkan indeks. Contoh deklarasi array pada bahasa assembly:

array_buff:
.word 0x00000000
.word 0x00000000
.word 0x00000000
.word 0x00000000

Stack adalah bagian dari memori yang digunakan untuk menyimpan nilai dari register secara
sementara. Operasi-operasi langsung yang berhubungan langsung dengan stack yaitu oerasi-
operasi PUSH and POP; PUSHF and POP. Stack menggunakan pasangan SS:SP untuk
menunjukkan lokasi dari stack itu sendiri. Sedangkan pasangan register CS:IP digunakan untuk
mengetahui letak dari program.

PUSH merupakan operasi yang digunakan ketika kita hendak memasukkan ada yang ada pada general
purpose register ke lokasi stack, sedangkan perintah POP merupakan perintah yang digunakan untuk
mengeluarkan data yang ada pada stack ke general purpose register untuk dieksekusi. PUSHF merupakan
perintah yang digunakan untuk memasukkan atau menyimpan nilai dari flags register pada stack.
Sedangkan POPF digunakan untuk mengambil nilai pada stack dan disimpan pada flags register.

1.3 TUGAS PENDAHULUAN

1. Tuliskan pengertian tentang array, dan cara pendeklarasian array dalam assembly.
2. Tuliskan program assambly ketika nilai r1 = 4 maka r1 = r1 + 3,

11 | ASSEMBLY II
3. Jika tidak r1 = r1-3.
4. Bgaimana cara kerja stack (gambarkan), dan jelaskan fungsi dari instuksi Push dan Pop
dalam Stack.
1.4 PERCOBAAN

A. ALAT YANG DIGUNAKAN


1) 1 unit Raspberry Pi
2) 1 unit SD card (min 2 GB) dengan OS RASBIAN
3) 1 unit SD Adapter
4) 1 unit Kabel UTP
5) 1 unit Laptop
6) 1 unit Kabel data USB to Micro USB

B. PROSEDUR PERCOBAAN

MEMULAI PERCOBAAN

1. Hidupkan Laptop
2. Masukkan SD Card kedalam slot SD Card Raspberry Pi
3. Hidupkan Raspberry Pi (gunakan kabel USB to Micro USB)
4. Hubungkan laptop dengan Raspberry Pi menggunakan kabel UTP
5. Lakukan komunikasi SSH ke Raspberry Pi melalui Laptop dengan Mengetikkan
command berikut di terminal Laptop : ssh pi@<ip-raspberry-pi> -p 22

1. PERCOBAAN 1A : Register dan Aritmatik Sederhana Dalam Assambly

1) Ketikkan Program berikut dengan menggunakan command : echo <sintaks assambly per
baris> > <nama file .s>. untuk mengetikkan baris berikutnya dapat menggunakan command
: echo <sintaks assambly per baris> >> <nama file .s>. nama file yang digunakan
adalah latihan1.s

1 .data
2
3 array_buff:
4 .word 0x00000000 /* array_buff[0] */
5 .word 0x00000000 /* array_buff[1] */
6 .word 0x00000000 /* array_buff[2]. This element has a
7 relative address of array_buff+8 */
8 .word 0x00000000 /* array_buff[3] */
9 .word 0x00000000 /* array_buff[4] */

12 | ASSEMBLY II
10
11 .text
12 .global _start
13
14 _start:
15 adr r0, words+12 /* address of words[3] -> r0 */
16 ldr r1, array_buff_bridge /* address of array_buff[0] -> r1 */
17 ldr r2, array_buff_bridge+4 /* address of array_buff[2] -> r2 */
18 ldm r0, {r4,r5} /* words[3] -> r4 = 0x03; words[4] ->
19 r5 = 0x04 */
20 stm r1, {r4,r5} /* r4 -> array_buff[0] = 0x03; r5 ->
21 array_buff[1] = 0x04 */
22 ldmia r0, {r4-r6} /* words[3] -> r4 = 0x03, words[4] ->
23 r5 = 0x04; words[5] -> r6 = 0x05; */
24 stmia r1, {r4-r6} /* r4 -> array_buff[0] = 0x03; r5 ->
25 array_buff[1] = 0x04; r6 -> array_buff[2] = 0x05 */
26 ldmib r0, {r4-r6} /* words[4] -> r4 = 0x04; words[5] ->
27 r5 = 0x05; words[6] -> r6 = 0x06 */
28 stmib r1, {r4-r6} /* r4 -> array_buff[1] = 0x04; r5 ->
29 array_buff[2] = 0x05; r6 -> array_buff[3] = 0x06 */
30 ldmda r0, {r4-r6} /* words[3] -> r6 = 0x03; words[2] ->
31 r5 = 0x02; words[1] -> r4 = 0x01 */
32 ldmdb r0, {r4-r6} /* words[2] -> r6 = 0x02; words[1] ->
33 r5 = 0x01; words[0] -> r4 = 0x00 */
34 stmda r2, {r4-r6} /* r6 -> array_buff[2] = 0x02; r5 ->
35 array_buff[1] = 0x01; r4 -> array_buff[0] = 0x00 */
36 stmdb r2, {r4-r5} /* r5 -> array_buff[1] = 0x01; r4 ->
37 array_buff[0] = 0x00; */
38 bx lr
39
40 words:
41 .word 0x00000000 /* words[0] */
42 .word 0x00000001 /* words[1] */
43 .word 0x00000002 /* words[2] */
44 .word 0x00000003 /* words[3] */
45 .word 0x00000004 /* words[4] */
46 .word 0x00000005 /* words[5] */

13 | ASSEMBLY II
47 .word 0x00000006 /* words[6] */
48
49 array_buff_bridge:
50 .word array_buff /* address of array_buff, or in other
51 words - array_buff[0] */
52 .word array_buff+8 /* address of array_buff[2] */
53

2) Setelah selesai, jalankan command : as –o <nama-file .o> <nama-file .s> di terminal.


3) Lalu ketikkan command gcc –o <nama-file> <nama-file .s>
4) Lalu ketikkan command ./<nama-file> untuk mengeksekusi program dan melihat hasilnya.
5) Analisa Program di atas.

2. PERCOBAAN 1B: Conditional Execution and Branches

1) Ketikkan Program berikut dengan menggunakan command : echo <sintaks


assambly per baris> > <nama file.s>. untuk mengetikkan baris berikutnya dapat
menggunaka n command : echo <sintaks assambly per baris> >> <nama file.s>.
nama file yang digunakan adalah latihan1.s.

1 .text
2 .global _start
3
4 _start:
5 mov r0, #2
6 mov r1, #2
7 add r0, r0, r1
8 cmp r0, #4
9 beq func1
10 add r1, #5
11 b func2
12 func1:
13 mov r1, r0
14 bx lr
15 func2:

14 | ASSEMBLY II
16 mov r0, r1
17 bx lr
18

2) Setelah selesai, jalankan command : as –o <nama-file .o> <nama-file .s> di terminal.


3) Lalu ketikkan command gcc –o <nama-file .o> <nama-file .s>
4) Lalu ketikkan command ./<nama-file> untuk mengeksekusi program dan melihat hasilnya.
5) Analisa Program di atas.

3. PERCOBAAN 2C : Stack
1) Ketikkan Program berikut dengan menggunakan command : echo <sintaks
assambly per baris> > <nama file.s>. untuk mengetikkan baris berikutnya dapat
menggunakan command : echo <sintaks assambly per baris> >> <nama file.s>.
nama file yang digunakan adalah latihan1.s

1 .global main
2
3 main:
4 mov r0, #2 /* set up r0 */
5 push {r0} /* save r0 onto the stack */
6 mov r0, #3 /* overwrite r0 */
7 pop {r0} /* restore r0 to it's initial state */
8 bx lr /* finish the program */

3. Setelah selesai, jalankan command : as –o <nama-file .o> <nama-file .s> di terminal.


4. Lalu ketikkan command gcc –o <nama-file .o> <nama-file .s>
5. Lalu ketikkan command ./<nama-file> untuk mengeksekusi program dan melihat
hasilnya.
6. Analisa Program di atas.
7. Jalankan program pada Raspberry Pi dengan dan lakukan debugging dengan perintah
: gdb ./<nama-file>
8. Di dalam cli gdb, lalukan perintah :
(gdb) break *main
(gdb) run
(gdb) info register
(gdb) stepi

9. Tekan tombol c pada keyboard untuk menjalankan program hingga breakpoint


10. Jalankan perintah :
(gdb) info register
11. Lakukan Screenshoot pada hasil percobaan dan buat analisa jalannya program pada
laporan

4. PERCOBAAN 2D: Stack and Function


1) Ketikkan Program berikut dengan menggunakan command : echo <sintaks
assambly per baris> > <nama file.s>. untuk mengetikkan baris berikutnya dapat
menggunakan command : echo <sintaks assambly per baris> >> <nama file.s>.
nama file yang digunakan adalah latihan1.s

1 .global main
2

15 | ASSEMBLY II
3 main:
4 push {r11, lr} /* Start of the prologue. Saving Frame
5 Pointer and LR onto the stack */
6 add r11, sp, #0 /* Setting up the bottom of the stack frame
7 */
8 sub sp, sp, #16 /* End of the prologue. Allocating some
9 buffer on the stack */
10 mov r0, #1 /* setting up local variables (a=1). This
11 also serves as setting up the first parameter for the max function */
12 mov r1, #2 /* setting up local variables (b=2). This
13 also serves as setting up the second parameter for the max function */
14 bl max /* Calling/branching to function max */
15 sub sp, r11, #0 /* Start of the epilogue. Readjusting the
16 Stack Pointer */
17 pop {r11, pc} /* End of the epilogue. Restoring Frame
18 pointer from the stack, jumping to previously saved LR via direct load
19 into PC */
20
21 max:
22 push {r11} /* Start of the prologue. Saving Frame
23 Pointer onto the stack */
24 add r11, sp, #0 /* Setting up the bottom of the stack frame
25 */
26 sub sp, sp, #12 /* End of the prologue. Allocating some
27 buffer on the stack */
28 cmp r0, r1 /* Implementation of if(a<b) */
29 movlt r0, r1 /* if r0 was lower than r1, store r1 into r0
30 */
31 add sp, r11, #0 /* Start of the epilogue. Readjusting the
32 Stack Pointer */
33 pop {r11} /* restoring frame pointer */
34 bx lr /* End of the epilogue. Jumping back to main
35 via LR register */

2) Setelah selesai, jalankan command : as –o <nama-file .o> <nama-file .s> di terminal.


3) Lalu ketikkan command gcc –o <nama-file .o> <nama-file .s>

16 | ASSEMBLY II
4) Lalu ketikkan command ./<nama-file> untuk mengeksekusi program dan melihat
hasilnya.
5) Analisa Program di atas.

1.5 MENGAKHIRI PERCOBAAN


1. Sebelum keluar dari ruang praktikum, rapikan meja praktikum. Letakkan Raspberi pi
pada tempat yang telah di tentukan.
2. Letakkan kursi pada tempat yang telah ditentukan
3. Pastikan asisten telah menandatangani lembar kehadiran praktikum pada kartu praktikum.
Lembar kehadiran yang tidak ditandatangani oleh asisten pada praktikum tertentu tidak
akan di nilai.

1.6 REFERENSI
https://arzeria- labs.com
http://www.science.smith.edu/dftwiki/index.php/Tutorial:_Assembly_Language_with_th
e_Raspberry_Pi
http://thinkingeek.com/2013/01/09/arm-assembler-raspberry-pi-chapter-1/

17 | ASSEMBLY II
PERCOBAAN III
PENGENALAN NUVOTON 1

1.1 TUJUAN
1. Memahami arsitektur dan fitur mikrokontroler ARM CORTEX M0 NuMicro NUC140
2. Dapat melakukan instalasi software development tools yang diperlukan untuk
pemrograman mikrokontroler ARM
3. Dapat menggunakan software development tools mikrokontroler ARM untuk menulis,
melakukan kompilasi, dan memasukkan program ke dalam chip mikrokontroler ARM
4. Dapat melakukan pemrograman mikrokontroler ARM untuk obyek input/output dasar
1.1 PERSIAPAN
Pelajari kembali modul praktikum dan bahan kuliah mengenai dasar algoritma dan
pemrograman terutama dengan bahasa C serta elektronika analog & digital, kemudian
kerjakan Tugas Pendahuluan dan kumpulkan sesuai ketentuan yang berlaku.

1.2 DASAR TEORI


Mikrokontroler adalah mikrokomputer kecil dalam satu chip, di dalamnya berisi prosessor,
memori dan peripheral I/O yang bisa diprogram. ARM adalah arsitektur prosesor 32 bit yang
dibuat oleh ARM Holding dan dilisensikan untuk diproduksi oleh berbagai vendor di dunia
termasuk AMD, Atmel, Freescale, Nuvoton, Nvidia, NXP, Samsung, ST Micro, dan TI. Prosesor
ARM digunakan pada perangkat smartphone, tablet, dan embedded system. Kini ARM menjadi
arsitektur prosesor yang paling banyak diproduksi di dunia.

Seri arsitektur ARM terbaru terdiri dari 3 lini kelas penggunaan yaitu:

1. ARM CORTEX A untuk prosesor aplikasi

2. ARM CORTEX R untuk prosesor real time

3. ARM CORTEX M untuk prosesor

mikrokontroler Belajar ARM berarti :

1. Learn for the most used architecture


Belajar arsitektur prosesor yang paling banyak dikembangkan & didukung industry saat ini
2. Learn for the lates technology
Belajar untuk mempersiapkan diri dengan teknologi dan tools yang terkini dan
menjadikannya sebagai suatu keunggulan
3. Learn one for all lines
Belajar prosesor dengan arsitektur yang memiliki keuntungan dalam hal kesamaan yang luas
dari lini prosesor untuk berbagai kelas penggunaan, dari kelas mikrokontroller

18 | PENGENALAN NUVOTON 1
4. Learn with ease of support
Belajar dengan banyak dukungan dari pembuat ARM dan para vendor/partner, serta
dukungan komunitas yang luas

Gambar 5.1 Kelebihan Mikrokontroler ARM

Dengan harga yang relatif sama, prosesor ARM memberikan kinerja jauh lebih tinggi dengan
konsumsi daya yang rendah.

Gambar 5.2 Nuvoton Mikrokontroler ARM Cortex M0 Nuc140

19 | PENGENALAN NUVOTON 1
Gambar 5.3 Blok Diagram Numicro ARM Cortex M0 Nuc140

Gambar 5.4 Learning Board Nuc140 Tampak Depan

20 | PENGENALAN NUVOTON 1
Gambar 5.4 Learning Board Nuc140 Tampak Depan

1.3 TUGAS PENDAHULUAN

1. Lakukan instalasi software CoSmart dan CoIDE sesuai dengan langkah-langkah berikut
pada laptop anda!
Langkah 1 : Instalasi NUC100SeriesBSP_CMSIS.exe.
1) Perhatikan path destination folder. Defaultnya adalah C:\Nuvoton\BSP Library\

Langkah 2 : Lakukan instalasi Software Compiler GCC ARM.

1) Perhatikan lokasi path folder tempat instalasi software.

21 | PENGENALAN NUVOTON 1
Langkah 3 : Lakukan instalasi Software Editor CoIDE.
1) Sesudah selesai, panggil software CoIDE, lakukan setting compiler yang
digunakan melalui menu Project > Select Toolchain Path.
2) Browse ke folder tempat instalasi software GCC ARM pada sub folder bin.

3) Tutup CoIDE jika sudah selesai.

Langkah 4 : Lakukan instalasi Software Pin Configurator CooCox CoSmart.

1) Sesudah selesai, panggil software CoSmart, lakukan setting compiler yang


digunakan melalui menu Project > Config GCC Path.
2) Browse ke lokasi file arm-none -eabi-gcc.exe di folder tempat instalasi software
GCC ARM pada sub folder bin lalu klik OK

22 | PENGENALAN NUVOTON 1
Langkah 5 : Hubungkan Kabel USB ke jalur USB Nu-Link di board sebelah atas.

1) Lalu hubungkan kabel USB ke komputer. Board akan mendapat power dari USB.
Pastikan LED merah indikator power menyala.

1.4 PERCOBAAN

A. ALAT YANG DIGUNAKAN


1) 1 unit komputer
2) Software CoSmart
3) Software CoIDE
4) 1 unit modul NUVOTON Nu-LB-NUC140
5) Kabel mini USB

B. PROSEDUR PERCOBAAN

1. PERCOBAAN 3A : FLIP – FLOP

1) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu
konfigurasi pin.
2) Klik tombol New Chip di tengah layar.
3) Pilih Nuvoton, lalu pilih NUC140VE3CN
4) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya.

Langkah ke 2: Set Pin Pushbutton


1) Contreng GPIOC pada gambar chip.
2) Di jendela Configuration pilih GPIOC
3) Di bawahnya, klik pada Pin 12 s/d 15 agar Enable
4) Scroll ke bawah, atur Pin Config 12 s/d 15:
 
Mode Control: Output
Langkah ke 3: Generate Project
1) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama
file, misal konfigurasi01.
2) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama
project, misal praktikum01.
3) CoSmart akan membuatkan file project dan membukanya otomatis di Windows
Explorer.

Langkah ke 4: Buka Project


1) Klik dua kali file praktikum01 untuk membuka project dengan CoIDE.

23 | PENGENALAN NUVOTON 1
2) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i
memprogram.

LISTING PROGRAM:

#include "DrvGPIO.h"
#include "DrvSYS.h"
void Init();
int main(void)
{
Init();
while(1)
{
DrvGPIO_ClrBit(E_GPC,12);
DrvSYS_Delay(1000000);
DrvGPIO_SetBit(E_GPC,12);
DrvSYS_Delay(1000000);
}
}

Langkah ke 5: Build dan Download program


1) Klik icon Build (F7) di toolbar untuk melakukan compile program. Pastikan Build
Successful, tidak ada error.
2) Klik icon Download Code to Flash di toolbar untuk memasukkan program ke chip.
Pastikan Done, tidak ada error.

2. PERCOBAAN 3B: Bell (Push Button dan Buzzer)

Langkah ke 1: Pilih Chip


1) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu
konfigurasi pin.
2) Klik tombol New Chip di tengah layar.
3) Pilih Nuvoton, lalu pilih NUC140VE3CN
4) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya.

Langkah ke 2: Set Pin Buzzer


1) Di jendela Configuration pilih GPIOB.
2) Di bawahnya, klik pada Pin 11 agar Enable.
3) Scroll ke bawah, atur Pin Config 11:
 
Mode Control: Output

24 | PENGENALAN NUVOTON 1
Langkah ke 3: Generate Project
1) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama
file, misal konfigurasi01.
2) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama
project, misal praktikum01.
3) CoSmart akan membuatkan file project dan membukanya otomatis di Windows
Explorer.

Langkah ke 4: Buka Project


1) Klik dua kali file praktikum01 untuk membuka project dengan CoIDE.
2) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i
memprogram.

LISTING PROGRAM

#include "DrvGPIO.h"
#include "DrvSYS.h"
void Init();
int main(void)
{
Init();
while(1)
{
if(DrvGPIO_GetBit(E_GPB,15)==0)
{
DrvGPIO_ClrBit(E_GPB,11);
}
else
{
DrvGPIO_SetBit(E_GPB,11);
}
}

Langkah ke 5: Build dan Download program


1) Klik icon Build (F7) di toolbar untuk melakukan compile program. Pastikan Build
Successful, tidak ada error.
2) Klik icon Download Code to Flash di toolbar untuk memasukkan program ke chip.
Pastikan Done, tidak ada error.

25 | PENGENALAN NUVOTON 1
3. PERCOBAAN 3C: KEY TONE

Langkah ke 1: Pilih Chip


5) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu
konfigurasi pin.
6) Klik tombol New Chip di tengah layar.
7) Pilih Nuvoton, lalu pilih NUC140VE3CN
8) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya.

Langkah ke 2: Set Pin Keypad

1) Contreng GPIOA pada gambar chip.


2) Di jendela Configuration pilih GPIOA.
3) Di bawahnya, klik pada Pin 0 s/d 5 agar Enable.

Langkah ke 3: Set Pin Buzzer

1) Di jendela Configuration pilih GPIOB.


2) Di bawahnya, klik pada Pin 11 agar Enable.
3) Scroll ke bawah, atur Pin Config 11:

Mode Control: Output
Langkah ke 4: Generate Project
1) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama
file, misal konfigurasi01.
2) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama
project, misal praktikum01.
3) CoSmart akan membuatkan file project dan membukanya otomatis di Windows
Explorer.

Langkah ke 5: Buka Project


1) Klik dua kali file praktikum01 untuk membuka project dengan CoIDE.
2) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i
memprogram.
Langkah ke 6: Pemrograman
Nuvoton telah menyediakan Board Support Package (yang sudah di-instal) yang berisi
banyak library yang dapat mempermudah kita memprogram objectobject di Learning Board.


 bisa coba pakai library dari BSP.
Untuk Keypad
 Langkah 1:
Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil\Include\NUC1 xx-
LB_002
Pilih file ScanKey.h

26 | PENGENALAN NUVOTON 1
Langkah 2:
Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src
\NUC1xxLB_002 Pilih file ScanKey.c
LISTING PROGRAM

#include "DrvGPIO.h"
#include "DrvSYS.h"
#include "ScanKey.h"
int key;
void Init();
int main(void)
{
Init();
while(1)
{
key=Scankey();
if(key!=0)
{
DrvGPIO_ClrBit(E_GPB,11);
}
Else
{
DrvGPIO_SetBit(E_GPB,11);
}
}
}

Langkah ke 7: Build dan Download program


3) Klik icon Build (F7) di toolbar untuk melakukan compile program. Pastikan Build
Successful, tidak ada error.
4) Klik icon Download Code to Flash di toolbar untuk memasukkan program ke chip.
Pastikan Done, tidak ada error.

TUGAS PRAKTIKUM
1. Buatlah program dengan output, saat keypad 1 ditekan, buzzer berbunyi 1 kali lalu led 1
menyala. Saat keypad 2 ditekan buzzer berbunyi 2 kali led 1 dan 2 menyala. Saat keypad
3 ditekan berbunyi 3 kali led 1,2,3 menyala, dan saat keypad 4 ditekan buzzer berbunyi 4
kali dan led 1,2,3, dan 4 menyala.

27 | PENGENALAN NUVOTON 1
1.5 MENGAKHIRI PERCOBAAN

1. Sebelum keluar dari ruang praktikum, rapikan meja praktikum. Masukkan Modul Nuvoton dan kabel
konektor kedalam kotak modul, kemudian letakkan pada tempat yang telah di tentukan
2. Letakkan kursi pada tempat yang telah ditentukan
3. Pastikan asisten telah menandatangani lembar kehadiran praktikum pada kartu praktikum. Lembar
kehadiran yang tidak ditandatangani oleh asisten pada praktikum tertentu tidak akan di nilai.

1.6 REFERENSI
Nuvoton. NuMicro Training Course. Nuvoton Technology Corporation, 2012.
Yiu, Joseph. The Definitive Guide to the ARM Cortex-M0. Elsevier Inc, 2011.
ARM. Cortex-M0 Technical Reference Manual. ARM Holding Limited, 2009.
Nuvoton. NuMicro NUC140 Data Sheet EN V3.02. Nuvoton Technology Corporation, 2012.
Nuvoton. Nu-LB-NUC140 User's Guide v2.0. Nuvoton Technology Corporation, 2010.
CooCox. 2013. CoIDE User Guide. http://CooCox.org/CooCox_CoIDE.htm. 1 Oktober 2017

28 | PENGENALAN NUVOTON 1
PERCOBAAN IV
NUVOTON 2

1.1 TUJUAN
1. Mengetahui cara menggunakan fungsi aritmatika pada pemrograman C.
2. Mengetahui cara kerja if bersarang
3. Menganalisa program Counter Up 7-Segment
4. Menganalisa program Number Key LCD

4.1 PERSIAPAN
Pelajari kembali modul praktikum dan bahan kuliah yang berkaitan dengan mikrokontro ler
ataupun sistem digital, kemudian kerjakan Tugas Pendahuluan dan kumpulkan sesuai
ketentuan yang berlaku.

4.2 DASAR TEORI


7-s egment display di Learning Board menggunakan metode scanning. Untuk memunculkan
angka di salah satu 7-segment maka berikan data selagi salah satu 7-segment yang dituju
diaktifkan, sementara 7-segment lain tidak diaktifkan.

Untuk menonaktifkan semua 7-segment bisa menggunakan perintah berikut:


close _seven_segment();
Untuk mengaktifkan dan memberi data salah satu 7-segment, gunakan perintah berikut:
show_seven_segment(Nomor_7segment,Data_angka);
Untuk bisa menggunakan perintah di atas, perlu memasukkan library
#include “Seven_Segment.h“

Keterangan : Nomor_7segment diisi dengan nomor urut 0-3, dihitung dari paling kanan.
Data_angka diisi dengan angka 0-9.

Pushbutton switch pada rangkaian hardware adalah digital input yang bersifat ACTIVE LOW,
yaitu jika ditekan memberikan logika LOW.

• Untuk mengambil nilai logika input digital gunakan perintah berikut:


DrvGPIO_GetBit(Nama_port, Nomor_pin);

Keterangan: Nama_port diisi E_GPA / E_GPB / E_GPC / E_GPD / E_GPE. Dalam hal ini
karena Pushbutton switch dihubungkan ke PORT B maka isi dengan E_GPB.
Nomor_pin diisi dengan angka pin kaki mikrokontroler di PORT yang terhubung Pushbutton
switch yang ingin dimainkan. Dalam hal ini empat buah Pushbutton switch sudah dihubungkan
ke pin 15. Fungsi DrvGPIO_GetBit menghasilkan nilai 0 jika logika LOW (pushbutton ditekan),
atau 1 jika logika HIGH (pushbutton tidak ditekan).

28 | NUVOTON 2
BUZZER pada rangkaian hardware adalah digital output yang bersifat ACTIVE LOW, yaitu
berbunyi jika diberi logika LOW, dan mati jika diberikan logika HIGH.

• Untuk memberikan logika HIGH gunakan perintah berikut:


DrvGPIO_SetBit(Nama_port, Nomor_pin);
• Untuk memberikan logika LOW gunakan perintah berikut:
DrvGPIO_ClrBit(Nama_port, Nomor_pin);
• Untuk membuat delay bisa menggunakan perintah berikut:
DrvSys_Delay(Lama_delay_dalam_cycle);
• Untuk bisa menggunakan perintah di atas, perlu memasukkan library
#include “DrvGPIO.h“ #include

“DrvSYS.h”

Keterangan : Nama_port diisi E_GPA / E_GPB / E_GPC / E_GPD / E_GPE. Dalam hal ini
karena BUZZER dihubungkan ke PORT B maka isi dengan E_GPB.
Nomor_pin diisi dengan angka pin kaki mikrokontroler. Dalam hal ini BUZZER dihubungkan ke
pin 11.

LCD Matrix Display pada rangkaian hardware dikontrol secara SPI, dan memiliki pin kontrol
backlight di port D pin 14 yang bersifat ACTIVE LOW, yaitu menyala jika diberi logika LOW,
dan mati jika diberikan logika HIGH.

• Untuk menulis karakter di LCD, bisa menggunakan perintah


berikut: print_lcd(Nomor_baris,Tulisan);
Show_Word(Nomor_baris,Nomor_kolom,Huruf);
• Untuk bisa menggunakan perintah di atas, perlu memasukkan library
#include “LCD_Driver.h“
• Driver LCD_Driver membutuhkan file Ascii_Table.c untuk menggambar huruf.
• Saat init pertama kali, perlu dipanggil perintah berikut:
Initialize _pannel();
• Untuk membersihkan display, bisa menggunakan perintah
berikut: clr_all_pannal();

Keterangan: Nomor_baris diisi angka 0-3, dihitung dari paling atas. Nomor_kolom diisi angka
0-15, dihitung dari paling kiri.
Keypad matrix di Learning Board menggunakan metode scanning. Proses scanning dengan cara
membaca logic di Row, ketika Column diberikan logic LOW. Jika tombol ditekan maka Column
dan Row yang bersesuaian menjadi terhubung, sehingga Row ikut menjadi LOW.
• Untuk membaca penekanan keypad, bisa menggunakan perintah berikut:
Scankey();
• Untuk bisa menggunakan perintah di atas, perlu memasukkan library
#include “ScanKey.h“
• Untuk menampung hasil pembacaan keypad, ada baiknya membuat suatu variabel, misal
bernama Key bertipe data integer:
int key;
29 | NUVOTON 2
Keterangan : Hasil pembacaan adalah 0 jika tidak ada yang ditekan, atau berupa angka 1 s/d
9 jika ada yang ditekan.

4.3 TUGAS PENDAHULUAN

1. Jelaskan datasheet dan konfigurasi pin 7-segment, disertai dengan gambar!


2. Sebutkan pin apa saja yang digunakan pada 7-segment, pushbutton, led dan keypad di
Nuvoton!

4.4 PERCOBAAN

A. ALAT YANG DIGUNAKAN


1) 1 unit komputer
2) Software CoSmart
3) Software CoIDE
4) 1 unit modul NUVOTON Nu-LB-NUC140
5) Kabel mini USB

B. PROSEDUR PERCOBAAN

1. PERCOBAAN 5A: Project 1 Counter Up (7-Segment)

1) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu
konfigurasi pin.
2) Klik tombol New Chip di tengah layar.
3) Pilih Nuvoton, lalu pilih NUC140VE3CN
4) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya.

Langkah ke 2: Set Pin Pushbutton


1) Contreng GPIOB pada gambar chip.
2) Di jendela Configuration pilih GPIOB.
3) Di bawahnya, klik pada Pin 15 agar Enable.
4) Scroll ke bawah, atur Pin Config 15:
  
Mode Control: Input
  
Digital Input: Enable
 
Input Signal Deb: Enable

Langkah ke 3: Set Pin Buzzer


1) Di jendela Configuration pilih GPIOB.
2) Di bawahnya, klik pada Pin 11 agar Enable.
3) Scroll ke bawah, atur Pin Config 11:
30 | NUVOTON 2
 
Mode Control: Output

Langkah ke 4a: Set Pin 7-Segment Data


1) Contreng GPIOE pada gambar chip.
2) Di jendela Configuration pilih GPIOE 3. Di bawahnya, klik pada Pin 0 s/d 7 agar
Enable 4.
3) Scroll ke bawah, atur Pin Config 0 s/d 7:
 
Mode Control: Output

Langkah ke 4b: Set Pin 7-Segment Select

1) Di jendela Configuration pilih GPIOC


2) Di bawahnya, klik pada Pin 4 s/d 7 agar Enable
3) Scroll ke bawah, atur Pin Config 4 s/d 7:
 
Mode Control: Output

Langkah ke 5: Generate Project


1) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama
file, misal konfigurasi04a.
2) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama
project, misal praktikum04a.
3) CoSmart akan membuatkan file project dan membukanya otomatis di Windows
Explorer.

Langkah ke 6: Buka Project


1) Klik dua kali file praktikum4a untuk membuka project dengan CoIDE.
2) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i
memprogram.

Langkah ke 7: Pemrograman
Nuvoton telah menyediakan Board Support Package (yang sudah di-instal) yang berisi
banyak library yang dapat mempermudah kita memprogram objectobject di Learning Board.
 
Untuk 7-segment kita bisa coba pakai library dari BSP.

Langkah 1:
Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP \NuvPlatform_Keil \Include \NUC1xx-
LB_002
Pilih file Seven_Segment.h

Langkah 2:
Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke

31 | NUVOTON 2
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src
\NUC1xxLB_002 Pilih file Seven_Segment.c

LISTING PROGRAM:

#include "DrvGPIO.h"
#include "DrvSYS.h"
#include "Seven_Segment.h"
int nilai=0,a=0;
void Init();
int main(void)
{
Init();

while(1)
{
if(DrvGPIO_GetBit(E_GPB,15)==0)
{
if(a==0)
{
DrvGPIO_ClrBit(E_GPB,11);
nilai=nilai+1;
close_seven_segment();
show_seven_segment(0,nilai%10+0);

a=1;
}
}
if(DrvGPIO_GetBit(E_GPB,15)==1)
{
DrvGPIO_SetBit(E_GPB,11);
DrvSYS_Delay(10000);
a=0;
}
}
}

Langkah ke 8: Build dan Download program


1) Klik icon Build (F7) di toolbar untuk melakukan compile program. Pastikan Build
Successful, tidak ada error.
2) Klik icon Download Code to Flash di toolbar untuk memasukkan program ke chip.
Pastikan Done, tidak ada error.

2. PERCOBAAN 5B: Project 2 Number Key (7-Segment)

Langkah ke 1: Pilih Chip


1) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu
konfigurasi pin.
2) Klik tombol New Chip di tengah layar.
32 | NUVOTON 2
3) Pilih Nuvoton, lalu pilih NUC140VE3CN
4) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya.

Langkah ke 3: Set Pin Buzzer


1) Di jendela Configuration pilih GPIOB.
2) Di bawahnya, klik pada Pin 11 agar Enable.
3) Scroll ke bawah, atur Pin Config 11:
 
Mode Control: Output

Langkah ke 3: Set Pin Keypad


1) Contreng GPIOA pada gambar chip.
2) Di jendela Configuration pilih GPIOA
3) Di bawahnya, klik pada Pin 0 s/d 5 agar Enable
Langkah ke 4a: Set Pin 7-Segment Data
1) Contreng GPIOE pada gambar chip.
2) Di jendela Configuration pilih GPIOE 3. Di bawahnya, klik pada Pin 0 s/d 7 agar
Enable 4.
3) Scroll ke bawah, atur Pin Config 0 s/d 7:
 
Mode Control: Output

Langkah ke 4b: Set Pin 7-Segment Select

4) Di jendela Configuration pilih GPIOC


5) Di bawahnya, klik pada Pin 4 s/d 7 agar Enable
6) Scroll ke bawah, atur Pin Config 4 s/d 7:
 
Mode Control: Output

Langkah ke 7: Generate Project


1) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama
file, misal konfigurasi01.
2) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama
project, misal praktikum01.
3) CoSmart akan membuatkan file project dan membukanya otomatis di Windows
Explorer.

Langkah ke 8: Buka Project


1) Klik dua kali file praktikum01 untuk membuka project dengan CoIDE.
2) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i
memprogram.

33 | NUVOTON 2
Lnagkah ke 9: Pemrograman
Nuvoton telah menyediakan Board Support Package (yang sudah di-instal) yang berisi
banyak library yang dapat mempermudah kita memprogram objectobject di Learning
Board.
 
Untuk 7-segment kita bisa coba pakai library dari BSP.

Langkah 1:
Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP \NuvPlatform_Keil \Include \NUC1xx-
LB_002
Pilih file Seven_Segment.h

Langkah 2:
Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src
\NUC1xxLB_002 Pilih file Seven_Segment.c

Langkah 3:
Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil\Include\NUC1 xx-
LB_002
Pilih file ScanKey.h

Langkah 4:
Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src
\NUC1xxLB_002 Pilih file ScanKey.c

34 | NUVOTON 2
LISTING PROGRAM
#include "DrvGPIO.h"
#include "DrvSYS.h"
#include "Seven_Segment.h"
#include "ScanKey.h"
int key;

void Init();
int main(void)
{
Init();
while(1)
{
key=Scankey();
if(key!=0)
{
close_seven_segment();
show_seven_segment(0,key);
}
if(key==1)
{
close_seven_segment();
show_seven_segment(0,1);
DrvGPIO_ClrBit(E_GPB,11);
delay(1000000);
DrvGPIO_SetBit(E_GPB,11);
delay(1000000);
}
else if(key==2)
{
close_seven_segment();
show_seven_segment(0,2);
DrvGPIO_ClrBit(E_GPB,11);
delay(1000000);
DrvGPIO_SetBit(E_GPB,11);
delay(1000000);
}
else if(key==3)
{
close_seven_segment();
show_seven_segment(0,3);
DrvGPIO_ClrBit(E_GPB,11);
delay(1000000);
DrvGPIO_SetBit(E_GPB,11);
delay(1000000);

35 | NUVOTON 2
elseif(key==4)
{
close_seven_segment();
show_seven_segment(0,4);
DrvGPIO_ClrBit(E_GPB,11);
delay(1000000);
DrvGPIO_SetBit(E_GPB,11);
delay(1000000);

}
elseif(key==5)
{
close_seven_segment();
show_seven_segment(0,5);
DrvGPIO_ClrBit(E_GPB,11);
delay(1000000);
DrvGPIO_SetBit(E_GPB,11);
delay(1000000);
}
elseif(key==6)
{
close_seven_segment();
show_seven_segment(0,6);
DrvGPIO_ClrBit(E_GPB,11);
delay(1000000);
DrvGPIO_SetBit(E_GPB,11);
delay(1000000);

}
elseif(key==7)
{
close_seven_segment();
show_seven_segment(0,7);
DrvGPIO_ClrBit(E_GPB,11);
delay(1000000);
DrvGPIO_SetBit(E_GPB,11);
delay(1000000);
}
elseif(key==8)
{
close_seven_segment();
show_seven_segment(0,8);
DrvGPIO_ClrBit(E_GPB,11);
delay(1000000);
DrvGPIO_SetBit(E_GPB,11);
delay(1000000);
}
elseif(key==9)
{
close_seven_segment();
show_seven_segment(0,9);
DrvGPIO_ClrBit(E_GPB,11);
delay(1000000);
DrvGPIO_SetBit(E_GPB,11);
delay(1000000);

36 | NUVOTON 2
}
DrvSYS_Delay(100000000);
}
}

Langkah ke 12: Build dan Download program


1) Klik icon Build (F7) di toolbar untuk melakukan compile program. Pastikan Build
Successful, tidak ada error.
2) Klik icon Download Code to Flash di toolbar untuk memasukkan program ke chip.
Pastikan Done, tidak ada error.

3. PERCOBAAN 4C: Project 3 Number Key (LCD)

Langkah ke 1: Pilih Chip


5) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu
konfigurasi pin.
6) Klik tombol New Chip di tengah layar.
7) Pilih Nuvoton, lalu pilih NUC140VE3CN
8) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya.

Langkah ke 2: Set Pin Buzzer


4) Di jendela Configuration pilih GPIOB.
5) Di bawahnya, klik pada Pin 11 agar Enable.
6) Scroll ke bawah, atur Pin Config 11:
 
Mode Control: Output

Langkah ke 3: Set Pin Keypad


1) Contreng GPIOA pada gambar chip.
2) Di jendela Configuration pilih GPIOA
3) Di bawahnya, klik pada Pin 0 s/d 5 agar Enable
Langkah ke 4a: Set Pin LCD Matrix
1) Contreng SPI3 pada gambar chip untuk mengaktifkan fitur komunikasi SPI ke LCD
Matrix.

Langkah ke 4b: Set Pin Backlight


1) Contreng GPIOD pada gambar chip.
2) Di jendela Configuration pilih GPIOD.
3) Di bawahnya, klik pada Pin 14 agar Enable.
4) Scroll ke bawah, atur Pin Config 14:
 
Mode Control: Output

37 | NUVOTON 2
Langkah ke 5: Generate Project
4) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama
file, misal konfigurasi01.
5) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama
project, misal praktikum01.
6) CoSmart akan membuatkan file project dan membukanya otomatis di Windows
Explorer.

Langkah ke 6: Buka Project


3) Klik dua kali file praktikum01 untuk membuka project dengan CoIDE.
4) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i
memprogram.

Langkah ke 7: Pemrograman
Nuvoton telah menyediakan Board Support Package (yang sudah di-instal) yang berisi
banyak library yang dapat mempermudah kita memprogram objectobject di Learning Board.
 
Untuk LCD Matrix Display bisa coba pakai library dari BSP.

Langkah 1:
Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil\Include\NUC1 xx-
LB_002
Pilih file LCD_Driver.h

Langkah 2:
Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src
\NUC1xxLB_002 Pilih file LCD_Driver.c
Langkah 3:
Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src
\NUC1xxLB_002 Pilih file Ascii_Table.c

Langkah 4:
Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil\Include\NUC1 xx-
LB_002
Pilih file ScanKey.h

Langkah 5:
Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src \NUC1xxLB_002

38 | NUVOTON 2
Pilih file ScanKey.c
#include"DrvGPIO.h"
#include"DrvSYS.h"
#include"LCD_Driver.h"
#include"ScanKey.h"
intkey;

voidInit();
int main(void)
{
Init();
while(1)
{
key=Scankey();
if(key!=0)
{
Initial_pannel();
DrvGPIO_ClrBit(E_GPD,14);
clr_all_pannal();
print_lcd(0,"Nomor:");
}

if(key==1)
{
Show_Word(0,8,'1');
}

elseif(key==2)
{
DrvGPIO_ClrBit(E_GPB,11);
DrvSYS_Delay(10000);
Show_Word(0,8,'2');
DrvGPIO_SetBit(E_GPB,11);
DrvSYS_Delay(10000);
}
elseif(key==3)
{
DrvGPIO_ClrBit(E_GPB,11);
DrvSYS_Delay(10000);
Show_Word(0,8,'3');
DrvGPIO_SetBit(E_GPB,11);
DrvSYS_Delay(10000);
}

elseif(key==4)
{
DrvGPIO_ClrBit(E_GPB,11);
DrvSYS_Delay(10000);
Show_Word(0,8,'4');
DrvGPIO_SetBit(E_GPB,11);
DrvSYS_Delay(10000);
}

39 | NUVOTON 2
else if(key==5)
{
DrvGPIO_ClrBit(E_GPB,11);
DrvSYS_Delay(10000);
Show_Word(0,8,'5');
DrvGPIO_SetBit(E_GPB,11);
DrvSYS_Delay(10000);

}
else if(key==6)
{
DrvGPIO_ClrBit(E_GPB,11);
DrvSYS_Delay(10000);
Show_Word(0,8,'6');
DrvGPIO_SetBit(E_GPB,11);
DrvSYS_Delay(10000);
}
else if(key==7)
{
DrvGPIO_ClrBit(E_GPB,11);
DrvSYS_Delay(10000);
Show_Word(0,8,'7');
DrvGPIO_SetBit(E_GPB,11);
DrvSYS_Delay(10000);
}
else if(key==8)
{
DrvGPIO_ClrBit(E_GPB,11);
DrvSYS_Delay(10000);
Show_Word(0,8,'8');
DrvGPIO_SetBit(E_GPB,11);
DrvSYS_Delay(10000);
}
else if(key==9)
{
DrvGPIO_ClrBit(E_GPB,11);
DrvSYS_Delay(10000);
Show_Word(0,8,'9');
DrvGPIO_SetBit(E_GPB,11);
DrvSYS_Delay(10000);
}

}
}

TUGAS PRAKTIKUM
1. Buatlah program Number Key dengan output pada led berupa bilangan biner sesuai
dengan keypad yang di tekan

40 | NUVOTON 2
4.5 MENGAKHIRI PERCOBAAN
1. Sebelum keluar dari ruang praktikum, rapikan meja praktikum. Masukkan Modul
Nuvoton dan kabel konektor kedalam kotak modul, kemudian letakkan pada tempat yang
telah di tentukan
2. Letakkan kursi pada tempat yang telah ditentukan
3. Pastikan asisten telah menandatangani lembar kehadiran praktikum pada kartu praktikum.
Lembar kehadiran yang tidak ditandatangani oleh asisten pada praktikum tertentu tidak
akan di nilai.

4.6 REFERENSI
Nuvoton. NuMicro Training Course. Nuvoton Technology Corporation, 2012.
Yiu, Joseph. The Definitive Guide to the ARM Cortex-M0. Elsevier Inc, 2011.
ARM. Cortex-M0 Technical Reference Manual. ARM Holding Limited, 2009.
Nuvoton. NuMicro NUC140 Data Sheet EN V3.02. Nuvoton Technology Corporation, 2012.
Nuvoton. Nu-LB-NUC140 User's Guide v2.0. Nuvoton Technology Corporation, 2010.
CooCox. 2013. CoIDE User Guide. http://CooCox.org/CooCox_CoIDE.htm. 1 Oktober 2017

41 | NUVOTON 2
PERCOBAAN V
NUVOTON 3

1.1 TUJUAN
1. Mengetahui cara menggunakan fungsi aritmatika pada pemrograman C.
2. Mengetahui cara kerja if bersarang
3. Menganalisa program Counter Up LCD
4. Menganalisa program Water Level

4.1 PERSIAPAN
Pelajari kembali modul praktikum dan bahan kuliah yang berkaitan dengan mikrokontro ler
ataupun sistem digital, kemudian kerjakan Tugas Pendahuluan dan kumpulkan sesuai
ketentuan yang berlaku.

4.2 DASAR TEORI


LED pada rangkaian hardware adalah digital output yang bersifat ACTIVE LOW, yaitu menyala
jika diberi logika LOW, dan mati jika diberikan logika HIGH.

• Untuk memberikan logika HIGH gunakan perintah berikut:


DrvGPIO_SetBit(Nama_port, Nomor_pin);
• Untuk memberikan logika LOW gunakan perintah berikut:
DrvGPIO_ClrBit(Nama_port, Nomor_pin);
• Untuk membuat delay bisa menggunakan perintah berikut:
DrvSys_Delay(Lama_delay_dalam_cycle);
• Untuk bisa menggunakan perintah di atas, perlu memasukkan library
#include “DrvGPIO.h“
#include “DrvSYS.h”

Nama_port diisi E_GPA / E_GPB / E_GPC / E_GPD / E_GPE. Dalam hal ini karena LED
dihubungkan ke PORT C maka isi dengan E_GPC.
Nomor_pin diisi dengan angka pin kaki mikrokontroler. Dalam hal ini empat buah LED sudah
dihubungkan ke pin 12 s/d 15.

Pushbutton switch pada rangkaian hardware adalah digital input yang bersifat ACTIVE LOW,
yaitu jika ditekan memberikan logika LOW.

• Untuk mengambil nilai logika input digital gunakan perintah berikut:


DrvGPIO_GetBit(Nama_port, Nomor_pin);

Keterangan: Nama_port diisi E_GPA / E_GPB / E_GPC / E_GPD / E_GPE. Dalam hal ini
karena Pushbutton switch dihubungkan ke PORT B maka isi dengan E_GPB.

41 | NUVOTON 3
Nomor_pin diisi dengan angka pin kaki mikrokontroler di PORT yang terhubung Pushbutton
switch yang ingin dimainkan. Dalam hal ini empat buah Pushbutton switch sudah dihubungkan
ke pin 15. Fungsi DrvGPIO_GetBit menghasilkan nilai 0 jika logika LOW (pushbutton ditekan),
atau 1 jika logika HIGH (pushbutton tidak ditekan).

BUZZER pada rangkaian hardware adalah digital output yang bersifat ACTIVE LOW, yaitu
berbunyi jika diberi logika LOW, dan mati jika diberikan logika HIGH.

• Untuk memberikan logika HIGH gunakan perintah berikut:


DrvGPIO_SetBit(Nama_port, Nomor_pin);
• Untuk memberikan logika LOW gunakan perintah berikut:
DrvGPIO_ClrBit(Nama_port, Nomor_pin);
• Untuk membuat delay bisa menggunakan perintah berikut:
DrvSys_Delay(Lama_delay_dalam_cycle);
• Untuk bisa menggunakan perintah di atas, perlu memasukkan library
#include “DrvGPIO.h“ #include

“DrvSYS.h”

Nama_port diisi E_GPA / E_GPB / E_GPC / E_GPD / E_GPE. Dalam hal ini karena BUZZER
dihubungkan ke PORT B maka isi dengan E_GPB.
Nomor_pin diisi dengan angka pin kaki mikrokontroler. Dalam hal ini BUZZER dihubungkan ke
pin 11.

LCD Matrix Display pada rangkaian hardware dikontrol secara SPI, dan memiliki pin kontrol
backlight di port D pin 14 yang bersifat ACTIVE LOW, yaitu menyala jika diberi logika LOW,
dan mati jika diberikan logika HIGH.

• Untuk menulis karakter di LCD, bisa menggunakan perintah berikut:


print_lcd(Nomor_baris,Tulisan);
Show_Word(Nomor_baris,Nomor_kolom,Huruf);
• Untuk bisa menggunakan perintah di atas, perlu memasukkan library
#include “LCD_Driver.h“
• Driver LCD_Driver membutuhkan file Ascii_Table.c untuk menggambar huruf.
• Saat init pertama kali, perlu dipanggil perintah berikut:

• Untuk membersihkan display, bisa menggunakan perintah


berikut: clr_all_pannal();

Keterangan: Nomor_baris diisi angka 0-3, dihitung dari paling atas. Nomor_kolom diisi angka
0-15, dihitung dari paling kiri.

Variabel Resistor pada rangkaian hardware yang memberikan masukan sinyal analog. ARM
NUC140 memiliki 8 channel pengkonversi sinyal analog ke nilai digital (ADC) dengan ketelitian
12 bit, yang dapat membaca level sinyal analog menjadi angka dalam range 0-4095. Clock ADC
dapat menggunakan internal 22MHz dengan divisor 2.

42 | NUVOTON 3
• Untuk membaca sinyal analog, bisa menggunakan perintah berikut:
DrvADC_StartConvert();
DrvADC_GetConversionData(Nomor_channel);
• Untuk bisa menggunakan perintah di atas, perlu memasukkan library
#include “DrvADC.h“
• Untuk menampung hasil pembacaan ADC, ada baiknya membuat
suatu variabel, misal bernama adc bertipe data integer.

Keterangan: Nomor_channel diisi angka 0-7, sesuai dengan pin tempat sinyal analog terhubung.
Dalam hal ini, Variabel Resistor ada di channel 7.

4.3 TUGAS PENDAHULUAN

1. Jelaskan datasheet dan fungsi dari komponen yang digunakan!


2. Jelaskan apa yang diketahui tentang ADC!
3. Tuliskan bentuk program if bersarang dalam bahasa C (Nuvoton)!

4.4 PERCOBAAN

A. ALAT YANG DIGUNAKAN


1) 1 unit komputer
2) Software CoSmart
3) Software CoIDE
4) 1 unit modul NUVOTON Nu-LB-NUC140
5) Kabel mini USB

B. PROSEDUR PERCOBAAN

1. PERCOBAAN 5A: Project 1 Counter Up (LCD)

1) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu
konfigurasi pin.
2) Klik tombol New Chip di tengah layar.
3) Pilih Nuvoton, lalu pilih NUC140VE3CN
4) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya.

Langkah ke 2: Set Pin Pushbutton


1) Contreng GPIOB pada gambar chip.
2) Di jendela Configuration pilih GPIOB.
3) Di bawahnya, klik pada Pin 15 agar Enable.

43 | NUVOTON 3
4) Scroll ke bawah, atur Pin Config 15:
  
Mode Control: Input
  
Digital Input: Enable
 
Input Signal Deb: Enable

Langkah ke 3: Set Pin Buzzer


1) Di jendela Configuration pilih GPIOB.
2) Di bawahnya, klik pada Pin 11 agar Enable.
3) Scroll ke bawah, atur Pin Config 11:
 
Mode Control: Output

Langkah ke 4a: Set Pin LCD Matrix


1) Contreng SPI3 pada gambar chip untuk mengaktifkan fitur komunikasi SPI ke LCD
Matrix.

Langkah ke 4b: Set Pin Backlight


1) Contreng GPIOD pada gambar chip.
2) Di jendela Configuration pilih GPIOD.
3) Di bawahnya, klik pada Pin 14 agar Enable.
4) Scroll ke bawah, atur Pin Config 14:
 
Mode Control: Output

Langkah ke 5: Generate Project


1) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama
file, misal konfigurasi01.
2) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama
project, misal praktikum01.
3) CoSmart akan membuatkan file project dan membukanya otomatis di Windows
Explorer.

Langkah ke 6: Buka Project


1) Klik dua kali file praktikum01 untuk membuka project dengan CoIDE.
2) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i
memprogram.

Langkah ke 7: Pemrograman
Nuvoton telah menyediakan Board Support Package (yang sudah di-instal) yang berisi
banyak library yang dapat mempermudah kita memprogram objectobject di Learning Board.
 
Untuk LCD Matrix Display bisa coba pakai library dari BSP.

Langkah 1:
Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke

44 | NUVOTON 3
C:\Nuvoton \BSP Library \NUC100SeriesBSP \NuvPlatform_Keil \Include \NUC1xx-
LB_002
Pilih file LCD_Driver.h

Langkah 2:
Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src
\NUC1xxLB_002 Pilih file LCD_Driver.c

Langkah 3:
Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src
\NUC1xxLB_002 Pilih file Ascii_Table.c
LISTING PROGRAM:
#include "DrvGPIO.h"
#include "DrvSYS.h"
#include "LCD_Driver.h"
int nilai=0,a=0;
void Init();
int main(void)
{
Init();
Initial_pannel();
DrvGPIO_ClrBit(E_GPD,14);
clr_all_pannal();
print_lcd(0,"0");
while(1)
{
if(DrvGPIO_GetBit(E_GPB,15)==0)
{
if(a==0)
{
DrvGPIO_ClrBit(E_GPB,11);
nilai=nilai+1;
Show_Word(0,0,nilai%10+'0');
a=1;
}
}
if(DrvGPIO_GetBit(E_GPB,15)==1)
{
DrvGPIO_SetBit(E_GPB,11);
DrvSYS_Delay(10000);
a=0;
} }

45 | NUVOTON 3
Langkah ke 8: Build dan Download program
1) Klik icon Build (F7) di toolbar untuk melakukan compile program. Pastikan Build
Successful, tidak ada error.
2) Klik icon Download Code to Flash di toolbar untuk memasukkan program ke chip.
Pastikan Done, tidak ada error.

2. PERCOBAAN 5B: Project 2 WATER LEVEL

Langkah ke 1: Pilih Chip


1) Panggil aplikasi CooCox Software > CoSmart dari Start Menu untuk membantu
konfigurasi pin.
2) Klik tombol New Chip di tengah layar.
3) Pilih Nuvoton, lalu pilih NUC140VE3CN
4) Akan muncul gambar chip NUC140VE3CN, dengan semua peripheralnya.

Langkah ke 2: Set Pin LED


1) Contreng GPIOC pada gambar chip.
2) Di jendela Configuration pilih GPIOC.
3) Di bawahnya, klik pada Pin 12 s/d 15 agar Enable.
4) Scroll ke bawah, atur Pin Config 12 s/d 15:
 
Mode Control: Output

Langkah ke 3: Set Pin Pushbutton


1) Contreng GPIOB pada gambar chip.
2) Di jendela Configuration pilih GPIOB.
3) Di bawahnya, klik pada Pin 15 agar Enable.
4) Scroll ke bawah, atur Pin Config 15:
  
Mode Control: Input
  
Digital Input: Enable
 
Input Signal Deb: Enable

Langkah ke 4: Set Pin VR


1) Contreng ADC pada gambar chip.
2) Di jendela Configuration pilih ADC.
3) Klik pada Channel 7 agar Enable.
4) Scroll ke atas, klik pada Clock Source, pilih INTERNAL 22M.
5) Klik pada Clock Divisor, isi dengan angka 2.

Langkah ke 5: Set Pin Buzzer


1) Di jendela Configuration pilih GPIOB.
2) Di bawahnya, klik pada Pin 11 agar Enable.

46 | NUVOTON 3
3) Scroll ke bawah, atur Pin Config 11:
 
Mode Control: Output

Langkah ke 6a: Set Pin LCD Matrix


1) Contreng SPI3 pada gambar chip untuk mengaktifkan fitur komunikasi SPI ke LCD
Matrix.

Langkah ke 6b: Set Pin Backlight


1) Contreng GPIOD pada gambar chip.
2) Di jendela Configuration pilih GPIOD.
3) Di bawahnya, klik pada Pin 14 agar Enable.
4) Scroll ke bawah, atur Pin Config 14:
 
Mode Control: Output

Langkah ke 7: Generate Project


1) Simpan konfigurasi dengan klik Project > Save lalu pilih folder dan ketikkan nama
file, misal konfigurasi01.
2) Lalu klik Generate > Generate CoIDE Project lalu pilih folder dan ketikkan nama
project, misal praktikum01.
3) CoSmart akan membuatkan file project dan membukanya otomatis di Windows
Explorer.

Langkah ke 8: Buka Project


1) Klik dua kali file praktikum01 untuk membuka project dengan CoIDE.
2) Terlihat bahwa file project sudah disiapkan, klik dua kali pada main.c untuk mula i
memprogram.

Lnagkah ke 9: Pemrograman
Nuvoton telah menyediakan Board Support Package (yang sudah di-instal) yang berisi
banyak library yang dapat mempermudah kita memprogram objectobject di Learning
Board.
 
Untuk LCD Matrix Display bisa coba pakai library dari BSP.

Langkah 1:
Klik kanan di cmsis_lib\Include \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil\Include\NUC1 xx-
LB_002
Pilih file LCD_Driver.h

Langkah 2:
Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src \NUC1xxLB_002

47 | NUVOTON 3
Pilih file LCD_Driver.c
Langkah 3:
Klik kanan di cmsis_lib\Src \Driver, lalu pilih Add Files. Browse ke
C:\Nuvoton \BSP Library \NUC100SeriesBSP\NuvPlatform_Keil \Src
\NUC1xxLB_002 Pilih file Ascii_Table.c

LISTING PROGRAM

#include "DrvGPIO.h"
#include "DrvSYS.h"
#include "LCD_Driver.h"
#include "DrvADC.h"
int adc,a=0;
void Init();
int main(void)
{
Init();
Initial_pannel();
DrvGPIO_ClrBit(E_GPD,14);
clr_all_pannal();
while(a==0)
{
print_lcd(0,"NUVOTON");
print_lcd(1,"DASAR MIKRO");
print_lcd(2,"TEKAN PUSH BTN");
print_lcd(3,"UNTUK MELANJUTKN");
if(DrvGPIO_GetBit(E_GPB,15)==0)
{
a=1;
clr_all_pannal();
}
}
while(a==1)
{
if(DrvGPIO_GetBit(E_GPB,15)==1)
{
print_lcd(0,"ADC=");
DrvADC_StartConvert();
adc=DrvADC_GetConversionData(7);
Show_Word(0,5,adc/1000+'0');
Show_Word(0,6,adc%1000/100+'0');
Show_Word(0,7,adc%100/10+'0');
Show_Word(0,8,adc%10+'0');

48 | NUVOTON 3
if(adc<=999)
{
DrvGPIO_SetBit(E_GPC,15);
DrvGPIO_SetBit(E_GPC,14);
DrvGPIO_SetBit(E_GPC,13);
DrvGPIO_SetBit(E_GPC,12);
DrvGPIO_ClrBit(E_GPB,11);
print_lcd(1,"LOW!!!");
}
if(adc>=1000)
{
if(adc<=1999)
{
DrvGPIO_ClrBit(E_GPC,15);
DrvGPIO_SetBit(E_GPC,14);
DrvGPIO_SetBit(E_GPC,13);
DrvGPIO_SetBit(E_GPC,12);
DrvGPIO_SetBit(E_GPB,11);
print_lcd(1,"NORMAL");
}
}
if(adc>=2000)
{
if(adc<=2999)
{
DrvGPIO_ClrBit(E_GPC,15);
DrvGPIO_ClrBit(E_GPC,14);
DrvGPIO_SetBit(E_GPC,13);
DrvGPIO_SetBit(E_GPC,12);
DrvGPIO_SetBit(E_GPB,11);
print_lcd(1,"NORMAL");
}
}
if(adc>=3000)
{
if(adc<=3999)
{
DrvGPIO_ClrBit(E_GPC,15);
DrvGPIO_ClrBit(E_GPC,14);
DrvGPIO_ClrBit(E_GPC,13);
DrvGPIO_SetBit(E_GPC,12);
DrvGPIO_SetBit(E_GPB,11);
print_lcd(1,"NORMAL");
}
}

49 | NUVOTON 3
if(adc>=4000)
{
DrvGPIO_ClrBit(E_GPC,15);
DrvGPIO_ClrBit(E_GPC,14);
DrvGPIO_ClrBit(E_GPC,13);
DrvGPIO_ClrBit(E_GPC,12);
DrvGPIO_ClrBit(E_GPB,11);
print_lcd(1,"HIGH!!");

}
}
}
}

Langkah ke 12: Build dan Download program


1) Klik icon Build (F7) di toolbar untuk melakukan compile program. Pastikan Build
Successful, tidak ada error.
2) Klik icon Download Code to Flash di toolbar untuk memasukkan program ke chip.
Pastikan Done, tidak ada error.

4.5 MENGAKHIRI PERCOBAAN


1. Sebelum keluar dari ruang praktikum, rapikan meja praktikum. Masukkan Modul Nuvoton dan kabel
konektor kedalam kotak modul, kemudian letakkan pada tempat yang telah di tentukan
2. Letakkan kursi pada tempat yang telah ditentukan
3. Pastikan asisten telah menandatangani lembar kehadiran praktikum pada kartu praktikum. Lembar
kehadiran yang tidak ditandatangani oleh asisten pada praktikum tertentu tidak akan di nilai.

4.6 REFERENSI
Nuvoton. NuMicro Training Course. Nuvoton Technology Corporation, 2012.
Yiu, Joseph. The Definitive Guide to the ARM Cortex-M0. Elsevier Inc, 2011.
ARM. Cortex-M0 Technical Reference Manual. ARM Holding Limited, 2009.
Nuvoton. NuMicro NUC140 Data Sheet EN V3.02. Nuvoton Technology Corporation, 2012.
Nuvoton. Nu-LB-NUC140 User's Guide v2.0. Nuvoton Technology Corporation, 2010.
CooCox. 2013. CoIDE User Guide. http://CooCox.org/CooCox_CoIDE.htm. 1 Oktober 2017

50 | NUVOTON 3
PERCOBAAN VI
PENGENALAN ARDUINO

1.1 TUJUAN

1. Mendesain rangkaian untuk basic arduino


2. Mendesain rangkaian untuk blink led

1.2 PERSIAPAN

Pelajari kembali modul praktikum dan bahan kuliah yang berkaitan dengan mikrokontroler
ataupun sistem digital, kemudian kerjakan Tugas Pendahuluan dan kumpulkan sesuai
ketentuan yang berlaku.

1.3 DASAR TEORI


Menurut Massimo Banzi:

Arduino is an open source physical computing platform based on a simple input/output (I/O) board and a
development environment that implements the Processing language (www.processing.org). Arduino can be
used to develop standalone interactive objects or can be connected to software on your computer (such as
Flash, Processing, VVVV, orMax/MSP). The boards can be assembled by hand or purchased preassembled; the
open source IDE (Integrated Development Environment) can be downloaded for free from www.arduino.cc.

Gambar 6.1 Arduino Uno


Pada Arduino terdapat dua buah jenis pin, yaitu analog dan digital. Pin digital memiliki dua buah nilai yang
dapat ditulis kepadanya yaitu High(1) dan Low(0). Logika high maksudnya ialah 5 Volt dikirim ke pin baik itu
oleh mikrokontroler atau dari komponen. Low berarti pin tersebut bertegangan 0 Volt. Dari logika ini, anda
dapat membayangkan perumpamaan: start/stop, siap/tidak siap, on/off, dsb.
Pin-pin analog memiliki karakteristik yang berbeda dari pin digital. Informasi yang dapat ditulis atau dibaca
sangat lebar.Misalnya saja untuk write, nilai dari 0-255 dapat ditulis(0V – 5V). Sedangkan untuk read, nilai dari
0-1023(0V – 5V dengan setiap kenaikan sebesar 0,005V) dapat direpresentasikan.
Pin-pin digital berada pada bagian atas. Pin-pin itulah yang nantinya dihubungkan ke berbagai kontrol yang
berkomunikasi dengan menggunakan nilai digital. Beberapa pin digital dapat digunakan sebagai Pulse Width
Modulation (PWM). Secara umum pin PWM ini dapat digunakan untuk mengirim nilai/informasi analog ke
komponen. Tanda ~ pada pin 3, 5, 6, 9, 10, 11 menandakan fungsi PWM. Fungsi PWM ini merupakan
tambahan dari fungsi digital. Artinya pinpin tersebut selain fungsi digital, dapat dikonfigurasi menjadi PWM.
Kemungkinan nilai dari dari pin-pin digital tersebut ialah IN (informasi masuk dari komponen ke kontrol) dan
sebaliknya OUT(informasi keluar dari kontrol ke komponen). Pada bagian bawah, terdapat pin-pin power.
Tersedia pin 5V, 3.3V, dua pin ground, Vin, dan reset.
Di sebelah kanan bagian bawah, anda akan melihat pin-pin analog input. Pin-pin ini dapat menerima masukan
informasi analog dari 0 hingga 5 Volt dengan kenaikan sebesar 0.005 V. Representasi 0 V ialah 0, dan 5V ialah
1023. Di atas pin-pin analog terdapat mikrokontroler AVR. Dan di atas AVR terdapat push button reset untuk
merestart program. Terdapat konetor ISP di sebelah kanan push button reset yang dapat digunakan untuk
memprogram kontroler Arduino dalam kondisi tertentu(chip erase akan mengakibatkan bootloader Arduino
ikut terhapus. Jadi hati-hati dalam menggunakannya).
PWM
PWM adalah singkatan dari Pulse Width Modulation. Pada Arduino, sinyal PWM adalah sinyal yang beroperasi
pada frekuensi 500Hz (ini akan kita bahas pada paragraf selanjutnya). Pada board arduino Uno, pin yang bisa
dimanfaatkan untuk PWM adalah pin yang diberi tanda tilde (~), yaitu pin 3, 5, 6, 9, 10, dan pin 11. Pin-pin
tersebut merupakan pin yang bisa difungsikan untuk input analog atau output analog. Oleh sebab itu, jika akan
menggunakan PWM pada pin ini, bisa dilakukan dengan perintah analogWrite();
Analog input dihasilkan oleh PWM atau Pulse Width Modulation. PWM memanipulasi keluaran digital
sedemikian rupa sehingga menghasilkan sinyal analog. Mikrokontroler mengeset output digital ke HIGH dan
LOW bergantian dengan porsi waktu tertentu untuk setiap nilai keluarannya. Durasi waktu untuk nilai HIGH
disebut pulse width atau panjang pulsa. Variasi nilai output analog didapatkan dari perubahan panjang pulsa
yang diberikan pada satu periode waktu dan dilakukan berulang-ulang.
Analog Input
Pin analog pada Arduino (dan mikrokontroller lain pada umumnya) dapat digunakan untuk input dan output
digital. Hanya saja pin analog memiliki fitur untuk dapat mengubah sinyal analog yang masuk menjadi nilai
digital yang mudah diukur. Pin digital hanya dapat mengenali sinyal 0 volt sebagai nilai LOW dan 5 volt sebagai
nilai HIGH. Sedangkan Pin analog dapat mengenali sinyal pada rentang nilai voltase tersebut.
Pin analog ini terhubung dengan converter pada mikrokontroller yang dikenal dengan istilah analog-to-digital
converter (disingkat ADC atau A/D). Converterini mengubah nilai analog berbentuk sinyal voltase ke dalam
bentuk digital/angka supaya nilai analog ini dapat digunakan dengan lebih mudah dan aplikatif. Pada Arduino
(mikrokontroller ATMega) converter ini memiliki resolusi 10 bit, artinya nilai hasil konversi berkisar dari 0
hingga 1023.
1.4 TUGAS PENDAHULUAN
1. Lakukan Instalasi dan pelajari Software Arduino IDE berikut!
Langkah 1 : download software Arduino IDE
Untuk mulai memprogram, dibutuhkan IDE Arduino. Langsung saja download versi terbaru dari Arduino.cc.
Download sesuai dengan OS yang akan digunakan. Pada modul ini digunakan windows dan IDE versi 1.0.5.
Ekstrak hasil download, dan ada akan mendapatkan folder “arduino-1.8.5″, kemudian double-click
“arduino.exe” untuk mulai melakukan penginstallan. Berikut penampakan IDE Arduino:
Pada gambar diatas, terdapat, beberapa tombol yang mempunyai fungsi sebagai berikut:
Verify: Cek error dan lakukan kompilasi kode

Upload: Upload kode anda ke board/kontroler. Asumsi bahwa board dan serial
port telah disetting dengan benar.

New: Membuat aplikasi baru.

Open: Buka proyek yang telah ada atau dari contoh-contoh/examples.

Save: Simpan proyek anda.

Serial Monitor: Membuka serial port monitor untuk melihat feedback/umpan balik dari

board anda.
Proses kerja Arduino ialah anda melakukan pemrograman pada IDE, compile, dan upload
binary/hex file ke kontroler. Berbeda dengan Processing yang kode hasil compile langsung
dijalankan di komputer, kode hasil compile Arduino harus diupload ke kontroler sehingga dapat
dijalankan

Langkah 2 : Install USB drivers


Untuk menjalankan Arduino, pertama-tama hubungkan USB cable yang terpasang pada board Arduino ke PC.
Ketika pertama kali dihubungkan, maka akan muncul kotak dialog “Add New Hardware” wizard, kemudian
arahkan folder driver kedalam drivers/FTDI USB Drivers yang terdapat pada folder Arduino berada.
Setelah melakukan install drivers, maka kamu telah siap untuk menguplod program yang akan dibuat ke dalam
mikrokontroler Arduino.

Langkah 3 : Insert libraries


Dalam beberapa kondisi, nantinya kadangkala diperlukan libraries tambahan apabila libraries yang telah ada
tidak mencukupi project yang akan dibuat. Berikut cara menambahkan libraries ke dalam IDE Arduino.

1. Copy files libraries yang telah di download


2. Letakkan pada folder libraries yang terdapat di dalam folder Arduino
3. Jalankan ulang software Arduino IDE

Pada contoh dibawah ialah menambahkan libraries keypad ke dalam libraries yang sebelumnya telah ada
kemudian menjalankan ulang software IDE Arduino.
1.1 PERCOBAAN

A. ALAT YANG DIGUNAKAN


1) 1 buah kit Arduino untuk satu kelompok Arduino dapat diganti dengan development board
dengan kualitas di bawahnya, selama masih kompatibel dengan enviroment Arduino
2) 1 buah laptop
3) 1 buah breadboard (minimal)
4) 3 buah resistor 100 O
5) 1 buah resistor 150 O
6) 3 buah resistor 220 O
7) 10 buah resistor 1 k
8) Kabel jumper
9) 2 buah LED warna merah
10) 1 buah LED warna kuning
11) 2 buah LED warna hijau
12) 1 buah LM35
13) 1 buah light dependent resistor (LDR)

B. PROSEDUR PERCOBAAN PERSIAPAN PRAKTIKUM

Sebelum melakukan project, pada bagian Arduino IDE dicek terlebih dahulu pada menu tools, board dan
port yang digunakan pada project. Sesuaikan board dan port dengan jenis board yang digunakan serta
port yang terhubung dengan USB cable pada board Arduino.
1. PERCOBAAN 6A: Stringlength
Pada percobaan ini dilakukan pengujian terhadap penggunaan serial monitor yang terdapat pada Arduino.
Percobaan ini bertujuan untuk mengetahui panjang kata dari setiap karakter maupun string yang dikirimkan
pada Arduino, untuk kemudian ditampilkan pada serial monitor.

Berikut merupakan source code yang terdapat pada basic examples Stringlength.

String txtMsg = ""; // a string for incoming text unsigned int lastStringLength = txtMsg.length(); //
previous length of the String

void setup() {
Open serial communications and wait for port to open:
Serial.begin(9600); while (!Serial) {
// wait for serial port to connect. Needed for native USB port only }

send an intro:
Serial.println("\n\nString length():");
Serial.println();
}

Berikutnya compile dan upload program ke dalam Arduino board. Perhatikan dan catat hasil yang terjadi,
apakah sesuai dengan spesifikasi atau tidak.
2. PERCOBAAN 6B: PROJECT 3 TRAFFIC LIGHTS
Pada percobaan ini, dilakukan pembuatan prototype lampu lalu lintas sederhana. Penyalaan lampu
menggunakan LED berwarna merah, kuning, dan hijau yang kenudian disusun secara vertikal berjajar. LED
akan menyala seperti halnya lampu lalu lintas yang berada di perempatan jalan. Pertama-tama lampu akan
menyala merah, kemudian merah dan kuning secara bersama, lalu hijau yang menandakan kondisi jalan serta
kuning dan kembali lagi ke merah. Susun rangkaian seperti terlihat pada gambar berikut (resistor yang
digunakan adalah 220 O).
Kemudian pasang USB cable pada Arduino dengan port USB yang terdapat pada PC untuk mengupload
program. Buka Arduino IDE, lalu ketikkan program berikut.
// Project 3 - Traffic Lights
int ledDelay = 10000; // delay in between
changes int redPin = 10; int yellowPin = 9; int
greenPin = 8; void setup() {
pinMode(redPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(greenPin, OUTPUT);
}

void loop() {
turn the red light on
digitalWrite(redPin, HIGH);
delay(ledDelay); // wait 5 seconds
digitalWrite(yellowPin, HIGH); // turn on yellow
delay(2000); // wait 2 seconds
digitalWrite(greenPin, HIGH); // turn green on
digitalWrite(redPin, LOW); // turn red off
digitalWrite(yellowPin, LOW); // turn yellow off
delay(ledDelay); // wait ledDelay
milliseconds
digitalWrite(yellowPin, HIGH); turn yellow on
digitalWrite(greenPin, turn green off
LOW); delay(2000); wait 2 seconds
digitalWrite(yellowPin, LOW);
turn yellow off
// now our loop repeats
}

Berikutnya compile dan upload program ke dalam Arduino board. Perhatikan dan catat hasil yang terjadi,
apakah sesuai dengan spesifikasi atau tidak.
3. PERCOBAAN 6C: Serial Temperature Sensor
Pada percobaan kali ini dilakukan pengukuran suatu suhu ruangan dengan menggunakan sensor LM35. Suhu
yang nantinya ditampilkan memiliki satuan derajat celcius dan dalam kisaran 0-100 derajat. Suhu tersebut
dapat dilihat dengan menggunakan serial monitor yang terdapat pada Arduino IDE. Susun rangkaian seperti
terlihat pada gambar berikut:
Kemudian pasang USB cable pada Arduino dengan port USB yang terdapat pada PC untuk menguplod
program. Buka Arduino IDE, lalu ketikkan program berikut.
int
val; int tempPin = 0;

void setup()
{
Serial.begin(9600);
}
void loop() {
val = analogRead(tempPin); float mv = (
val/1024.0)*5000; float cel = mv/10; float
farh = (cel*9)/5 + 32;

Serial.print("TEMPRATURE = ");
Serial.print(cel);
Serial.print("*C"); Serial.println();
delay(1000);

/* uncomment this to get temperature in farenhite


Serial.print("TEMPRATURE = ");
Serial.print(farh);
Serial.print("*F");
Serial.println();

*/
}

Berikutnya compile dan upload program ke dalam Arduino board. Perhatikan dan catat hasil yang terjadi,
apakah sesuai dengan spesifikasi atau tidak.
4. PERCOBAAN 6D: Kontrol kecepatan Motor DC

int motorPin = 9;
void setup() {
pinMode(motorPin, OUTPUT);
Serial.begin(9600);
while (! Serial);
Serial.println("Speed 0 to 255");
}
void loop() {
if (Serial.available()) { int speed =
Serial.parseInt(); if (speed >= 0 &&
speed <= 255) {
analogWrite(motorPin, speed);
Serial.println(speed);
}
}
}
5. PERCOBAAN 6E: Kontrol Motor Servo
1.2 TUGAS

1.

1.3 MENGAKHIRI PERCOBAAN

2. Sebelum keluar dari ruang praktikum, rapikan meja praktikum. Rapikan kabel, komponen lain yang
digunakan pada saat pratikum, dan letakkan kembali pada tempat semula.
3. Pastikan asisten telah menandatangani kartu kehadiran pratikum, dan catatan percobaan. Catatan
percobaan yang tidak ditandatangani oleh asisten tidak akan dinilai.

1.4 REFERENSI

http://www.EarthshineElectronics.com/ArduinoStarterKitManual
http://arduino.cc/en/Tutorial/HomePage
http://www.arduino.web.id/
http://ngooprek.com/club/blog/2012/07/18/pengenalan-arduino
http://www.instructables.com/id/ARDUINO-TEMPERATURE-SENSOR-LM35/
61 | PENGENALAN ARDUINO

Anda mungkin juga menyukai