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
Nefy Puteri, MT
Fitri Ardiani
Stevanus Setianto
LABORATORIUM RESLAB
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
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
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.
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
Catatan :
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
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
Berikut adalah panduan yang harus dipatuhi ketika menggunakan alat-alat pratikum
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.
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.
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
R8 – General purpose
R9 – General purpose
2 | ASSEMBLY I
# Alias Purpose
General
R0 Purpose EAX
General
R1-R5 Purpose EBX, ECX, EDX, ESI, EDI
General
R6-R10 Purpose –
Intra
Procedural
R12 Call –
<-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 :
3 | ASSEMBLY I
Ins truction Description
ADD Addition
SUB Subtraction
MUL Multiplication
CMP Compare
ORR Bitwise OR
LDR Load
STR Store
4 | ASSEMBLY I
Ins truction Description
B Branch
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
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
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
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
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
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
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.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.
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. 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
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) 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
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
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 */
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 */
16 | ASSEMBLY II
4) Lalu ketikkan command ./<nama-file> untuk mengeksekusi program dan melihat
hasilnya.
5) Analisa Program di atas.
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.
Seri arsitektur ARM terbaru terdiri dari 3 lini kelas penggunaan yaitu:
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
Dengan harga yang relatif sama, prosesor ARM memberikan kinerja jauh lebih tinggi dengan
konsumsi daya yang rendah.
19 | PENGENALAN NUVOTON 1
Gambar 5.3 Blok Diagram Numicro ARM Cortex M0 Nuc140
20 | PENGENALAN NUVOTON 1
Gambar 5.4 Learning Board Nuc140 Tampak Depan
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\
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.
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
B. PROSEDUR PERCOBAAN
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.
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);
}
}
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.
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);
}
}
25 | PENGENALAN NUVOTON 1
3. PERCOBAAN 3C: KEY TONE
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);
}
}
}
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.
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.
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.
“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.
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.4 PERCOBAAN
B. PROSEDUR PERCOBAAN
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 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;
}
}
}
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);
}
}
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 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.
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.
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.
“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.
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.4 PERCOBAAN
B. PROSEDUR PERCOBAAN
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.
43 | NUVOTON 3
4) Scroll ke bawah, atur Pin Config 15:
Mode Control: Input
Digital Input: Enable
Input Signal Deb: Enable
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.
46 | NUVOTON 3
3) Scroll ke bawah, atur Pin Config 11:
Mode Control: Output
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!!");
}
}
}
}
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.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.
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.
Upload: Upload kode anda ke board/kontroler. Asumsi bahwa board dan serial
port telah disetting dengan benar.
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
Pada contoh dibawah ialah menambahkan libraries keypad ke dalam libraries yang sebelumnya telah ada
kemudian menjalankan ulang software IDE Arduino.
1.1 PERCOBAAN
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);
*/
}
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.
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