Mikrokontroler
Mikrokontroler
MIKROKONTROLER
Nama: ..............................................
NIM : ..............................................
i
HALAMAN PENGESAHAN
Penyusun,
Mengetahui,
Dekan Fakultas Teknik Kepala Laboratorium
Universitas Jember Elektronika Terapan
ii
JADWAL PELAKSANAAN PRAKTIKUM
iii
SOP & TATA TERTIB PRAKTIKUM
A. PELAKSANAAN PRAKTIKUM
1. Dosen hadir pada pelaksanaan praktikum
2. Teknisi dan asisten laboratorium harap selalu mengecek jadwal dan menyiapkan alat
maupun bahan praktikum
3. Pelaksanaan praktikum harus mengacu pada SOP & Tata Tertib Praktikum,
penjadwalan serta buku petunjuk praktikum yang telah disepakati bersama
4. Laporan praktikum berbentuk jobsheet/ LKS dengan nama "Buku Petunjuk Praktikum
(BPP)"
5. Data praktikum yang berupa angka atapun huruf dapat ditulis pada BPP
6. Data praktikum yang berupa gambar dapat dicetak kemudian ditempel pada BPP
7. Praktikum dilaksanakan 14 kali pertemuan ditambah ujian praktikum dengan jadwal
sesuai SISTER
8. Satu kali kegiatan praktikum sama dengan satu SKS sama dengan 150 menit dengan
kapasitas 20 mahasiswa
9. Kegiatan praktikum terdiri dari beberapa percobaan dengan jenis kegiatan antara lain
Pre-Test, Pengambilan Data, Post-Test, dan Asistensi
10. Tidak ada kegiatan praktikum yang diperbolehkan diluar jadwal praktikum
B. ASISTEN LABORATORIUM
1. Asisten laboratorium diperbolehkan memandu jalannya praktikum namun tetap dalam
pengawasan dosen
2. Asisten laboratorium tidak diperkenankan memberi hukuman/ sanksi serta penilaian
3. Asisten laboratorium diperbolehkan melakukan pengecekan data-data hasil praktikum
C. MAHASISWA
1. Mahasiswa wajib memakai jas lab saat pelaksanaan kegiatan praktikum. Bagi
mahasiswa yang tidak menggunakan jas lab dilarang mengikuti kegiatan praktikum.
2. Toleransi keterlambatan 15 menit bagi mahasiswa, terlambat lebih dari itu mahasiswa
dilarang mengikuti kegiatan praktikum
3. Jika dalam suatu percobaan mahasiswa tidak mengikuti salah satu dari kegiatan
tersebut, maka tetap diperbolehkan mengikuti kegiatan lain.
4. Tidak ada susulan bagi mahasiswa yang melewatkan pre-test, pengambilan data
maupun post-test. Hal ini berkaitan dengan tidak diperbolehkannya kegiatan praktikum
diluar jadwal praktikum. Namun, dosen diperbolehkan (tidak wajib) memberikan tugas
pengganti/ tambahan kepada mahasiswa untuk mengganti kegiatan yang dilewatkan.
5. Sama seperti perkuliahan, mahasiswa diperbolehkan mengikuti ujian praktikum jika
memenuhi 75% kehadiran
6. Mahasiswa WAJIB mengikuti setiap instruksi dosen pengampu. Setiap tindakan
mahasiswa dalam laboratorium yang diluar instruksi atau tanpa seizin dosen pengampu
dapat disanksi nilai nol.
iv
DAFTAR ISI
v
Instruksi Transfer Data
1
dan I/O dengan Assembly
ALU timer
ROM
Instruksi transfer data dan I/O ditunjukkan pada Tabel 1.1. berikut
10
1 Pre-Test
Pengambilan
2
Data
3 Asistensi
4 Post-Test
Pada ALU mikrokontroler dapat dilakukan operasi logika dan operasi aritmatika.
Operasi aritmetika adalah operasi yang melibatkan beberapa operator aritmatika seperti
8 Buku Petunjuk Praktikum
Mikrokontroler
misalnya penjumlahan, pengurangan, perkalian dan pembagian untuk memproses 2 buah
nilai atau lebih. Operasi logika adalah proses yang melibatkan beberapa operator logika
seperti AND, OR, NOR, XOR dan operator logika lainnya yang menghasilkan nilai true
dan false atau menghasilkan nilai benar dan salah. Daftar instruksi operasi logika dan
aritmatika sebuah mikrokontroler ditunjukkan oleh Tabel 2.1 berikut.
Tabel 2.1 Daftar Instruksi Operasi Aritmatika dan Logika dengan Bahasa Assembly
Contoh
No Instruksi Arti
Instruksi Arti
1 ADD Menjumlah dua data ADD R01, R02 Jumlahkan data di R01
dan R02, simpan di R01
Menjumlah dua data Jumlahkan data di R02,
2 ADC ADC R02, R01 R01, dan bit carry,
dan bit carry
simpan di R02
Mengurangkan dua Kurangi data di R03
3 SUB SUB R03, R04 dengan R04, simpan di
data
R03
Kalikan data di R03
4 MUL Mengalikan dua data MUL R03, R04 dengan R04, simpan di
R03
Operasi logika AND
5 AND AND R05, R07
dua data
Operasi logika AND
ANDI R05,
6 ANDI sebuah data dengan
0b10000111
sebuah konstanta
Operasi logika OR
7 OR OR R06, R08
dua data
Operasi logika OR
8 ORI sebuah data dengan OR R07, 0xde
sebuah konstanta
Menjumlah dengan
9 INC INC R08
nilai satu
Mengurangkan
10 DEC DEC R09
dengan nilai satu
Menulis nilai nol
11 CLR CLR R10
pada register
Menulis nilai 0xFFh
12 SER SER R11
pada register
10
1 Pre-Test
Pengambilan
2
Data
3 Asistensi
4 Post-Test
1 Pre-Test
Pengambilan
2
Data
3 Asistensi
4 Post-Test
= × 255
1 Pre-Test
Pengambilan
2
Data
3 Asistensi
4 Post-Test
void setup( )
{
// Statement;
}
void loop( )
{
// Statement;
}
Dimana setup() bagian untuk inisialisasi yang hanya dijalankan sekali diawal program,
sedangkan loop() untuk mengeksekusi bagian program yang akan dijalankan berulang-
ulang untuk selamanya.
Fungsi setup() hanya di panggil satu kali ketika program pertama kali di jalankan. Ini
digunakan untuk pendefinisian mode pin atau memulai komunikasi serial. Fungsi setup()
harus di ikut sertakan dalam program walaupun tidak ada statement yang di jalankan.
Setelah melakukan fungsi setup() maka secara langsung akan melakukan fungsi
loop() secara berurutan dan melakukan instruksi-instruksi yang ada dalam fungsi loop().
void loop()
{
digitalWrite(13, HIGH); // nyalakan ‘pin’ 13
delay(1000); // pause selama 1 detik
digitalWrite(13, LOW); // matikan ‘pin’ 13
delay(1000); /// pause selama 1 detik
}
Variable adalah sebuah penyimpan nilai yang dapat di gunakan dalam program.
Variable dapat di rubah sesuai dengan instruksi yang kita buat. Ketika mendeklarisikan
variable harus di ikut sertakan type variable serta nilai awal variable.
Type variableName = 0;
Contoh
Sebuah variable dapat di deklarasikan pada awal program sebelum void setup(),
secara local di dalam sebuah function, dan terkadang di dalam sebuah block statement
pengulangan.Sebuah variable global hanya satu dan dapat di gunakan pada semua block
function dan statement di dalam program. Variable global di deklarasikan pada awal
program sebelum fungstion setup().Sebuah variable local di deklarasikan di setiap block
function atau di setiap block statement pengulangan dan hanya dapat di gunakan pada block
yang bersangkutan saja.
int delayVal()
{
int v; // membuat variable ‘v’ bertipe integer
v = analogRead(pot); // baca harga potentiometer
v /= 4; // konversi 0-1023 ke 0-255
return v; // return nilai v
}
Pada contoh di atas fungsi tersebut memiliki nilai balik int (integer), karena kalau tidak
menghendaki adanya nilai balik maka type function harus void.
a) { } curly braces
Curly brace mendefinisikan awal dan akhir dari sebuah blok fungsi. Apabila ketika
memprogram dan progremer lupa memberi curly brace tutup maka ketika di compile
akan terdapat laporan error.
b) ; semicolon
Semicolon harus di berikan pada setiap statement program yang kita buat ini
merupakan pembatas setiap statement program yang di buat./*…*/ blok comment.
Semua statement yang di tulis dalam block comments tidak akan di eksekusi dan tidak
akan di compile sehingga tidak mempengaruhi besar program yang di buat untuk di
masukan dalam board arduino.
c) // line comment
Sama halnya dengan block comments, line coments pun sama hanya saja yang di
jadikan komen adalh perbaris.
3. digitalWrite()
Digunakan untuk mengset pin digital. Pin digital arduino mempunyai 14 ( 0 – 13 ).
digitalWrite (pin, HIGH); // set pin to HIGH
4. digitalRead()
Membaca nilai dari pin yang kita kehendaki dengan hasil HIGH atau LOW.
Value = digitalRead(pin); // mengset ‘value’ sama dengan pin
5. delay()
Menghentikan program untuk sesaat sesuai dengan yang di kehendaki, satuanya
dalam millisecond.
Delay(1000); // menunggu selama satu detik
6. if()
If Operator if mengetes sebuah kondisi seperti nilai analog sudah berada di bawah
nilai yang kita kehendaki atau belum, apabila terpenuhi maka akan mengeksekusi baris
program yang ada dalam brackets kalau tidak terpenuhi maka akan mengabaikan baris
program yang ada dalam brackets.
If ( someVariable ?? value )
{
//DoSomething;
}
ARDUINO
D2
R2
470R
LED-BLUE
D1
R1
AREF
13 470R
PB5/SCK LED-BLUE
12
PB4/MISO
RESET 11
~PB3/MOSI/OC2A
10
~ PB2/SS/OC1B
9
~ PB1/OC1A
8
PB0/ICP1/CLKO
ATMEGA328P-PU
1121
DIGITAL (~PWM)
7
ANALOG IN
PD7/AIN1
6
A0 ~ PD6/AIN0
PC0/ADC0 5
A1 ~ PD5/T1
PC1/ADC1 4
A2 PD4/T0/XCK
PC2/ADC2 3
A3 ~ PD3/INT1
PC3/ADC3 2
A4 PD2/INT0
A5
PC4/ADC4/SDA
TX PD1/TXD
1 R4
PC5/ADC5/SCL 0 470R
RX PD0/RXD
ARDUINO UNO R3
R5
470R
1 Pre-Test
Pengambilan
2
Data
3 Asistensi
4 Post-Test
2. analogWrite()
mengirimkan nilai analog pada pin analog.
VDD
VSS
VEE
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
E
ARDUINO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
AREF
13
PB5/SCK
12
PB4/MISO
RESET 11
~PB3/MOSI/OC2A
10
~ PB2/SS/OC1B
9
~ PB1/OC1A
RV1 PB0/ICP1/CLKO
8
ATMEGA328P-PU
1121
DIGITAL (~PWM)
7
ANALOG IN
PD7/AIN1
6
A0 ~ PD6/AIN0
0%
PC0/ADC0 5
A1
PC1/ADC1
~ PD5/T1
4 D1
A2
PC2/ADC2
PD4/T0/XCK R1
3
A3
PC3/ADC3
~ PD3/INT1
2 470R
1k A4 PD2/INT0
PC4/ADC4/SDA 1 LED-BLUE
A5 TX PD1/TXD
PC5/ADC5/SCL 0
RX PD0/RXD
ARDUINO UNO R3
1 Pre-Test
Pengambilan
2
Data
3 Asistensi
4 Post-Test
1 Pre-Test
Pengambilan
2
Data
3 Asistensi
4 Post-Test