Anda di halaman 1dari 10

TUGAS BESAR

PRAKTIKUM DASAR MIKROPROSESSOR


Nama : ANDREAN DESTI WIJANARKO
NIM : D400200144
Kelas : E
A. Hasil Tugas Besar

A.1.Rangkaian Tugas Besar


A.1.1. Rangkaian saat button tidak ditekan

A.1.2. Rangkaian saat button 1 ditekan


A.1.3. Rangkaian saat button 2 ditekan

A.1.4. Rangkaian saat button 3 ditekan


A.2.Script Tugas Besar
ldi r16,0x00
out ddrc,r16
ldi r16,0xff
out ddrb,r16
out ddrd,r16
mulai: //CEK KONDISI BUTTON 1
ldi r25,0 //MEMATIKAN LED SAAT BUTTON MATI
out portd,r25 //MEMATIKAN LED SAAT BUTTON MATI
sbis pinc,0
rjmp mulai2
play: //BUTTON 1 ON
.cseg
ldi r16, 8
out sph, r16
ldi r16, 0x5f
out spl, r16
ldi r30, low(data*2)
ldi r31, high(data*2)
ldi r16, 0xff
out ddrb,r16
out ddra,r16
cbi portb, 2
cbi portb, 3 ulang:
ldi r16,0x00
out ddrc, r16
ldi r16,0xff
out ddrb,r16
ldi r25,144 //NILAI "144" UBAH KE 3 DIGIT NIM ANDA
out portd,r25//LED AKAN MENYALA SESUAI NILAI YANG DIMASUKKAN DIATAS
sbis pinc,0//CEK KONDISI SEMISAL BUTTON 1 BERUBAH MENJADI OFF
rjmp mulai
ldi r16,0b00000001
mov r0,r16
ldi r17, 0xfe
ldi r19, 0xff
ldi r18,30 masuk:
sts 0x100, r30
sts 0x101,r31
sts 0x110, r17
out porta, r19
ldi r20,30
mainkan:
lpm r16,z+
cpi r16,0x0e
breq nolkan
and r16,r0
brne portb1set
nolkan:
cbi portb,1
jmp loncat
portb1set:
sbi portb,1
loncat:
rcall clock
dec r20
brne mainkan
lds r17,0x110
out porta,r17
call delay
lds r30, 0x100
lds r31,0x101
sec
rol r17
lsl r0
dec r18
brne masuk
lpm r23,z
cpi r23,0x0e
breq play
adiw r30,1
rjmp ulang
clock:
sbi portb,2
nop
nop
nop
cbi portb,2
sbi portb,3
nop
nop
nop
cbi portb,3
ret
delay :
ldi r21,3
lagi11:
ldi r22,0
lagi1:
dec r22
brne lagi1
dec r21
brne lagi11
ret
data: //UBAH KE NAMA ANDA DITAMBAHKAN 3 DIGIT NIM
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
.db 0xfe,0x09,0x09,0x09,0xfe,0 //A
.db 0xff,0x6,0x18,0x60,0xff,0 //N
.db 0xff,0x81,0x81,0x42,0x3c,0 //D
.db 0xfc,0x34,0x54,0x9c,0 //R
.db 0xff,0x91,0x91,0x91,0x91,0 //E
.db 0x82,0xff,0x80,0,0,0 //1
.db 0xf,0x08,0xff,0,0,0 //4
.db 0xf,0x08,0xff,0,0,0 //4
.db 0,0x0e,0,0,0,0,0,0 //PADA BAGIAN INI JANGAN DIHAPUS AGAR TIDAK
TERJADI ERROR
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
mulai2://CEK KONDISI BUTTON 1
ldi r25,0 //MEMATIKAN LED SAAT BUTTON MATI
out portd,r25 //MEMATIKAN LED SAAT BUTTON MATI
sbic pinc,0
rjmp mulai
ldi r16,0x00
out portb,r16
rjmp enjoy
enjoy: //CEK KONDISI BUTTON 2
ldi r25,0 //MEMATIKAN LED SAAT BUTTON MATI
out portd,r25 //MEMATIKAN LED SAAT BUTTON MATI
sbis pinc,1
rjmp enjoy2
play2: //BUTTON 2 ON
.cseg
ldi r16, 8
out sph, r16
ldi r16, 0x5f
out spl, r16
ldi r30, low(data2*2)
ldi r31, high(data2*2)
ldi r16, 0xff
out ddrb,r16
out ddra,r16
cbi portb, 2
cbi portb, 3
ulang2:
ldi r16,0x00
out ddrc, r16
ldi r16,0xff
out ddrb,r16
ldi r25,19 //NILAI 19 DIUBAH KE TANGGAL LAHIR ANDA
out portd,r25 //LED AKAN MENYALA SESUAI NILAI YANG DIMASUKKAN DIATAS
sbis pinc,1 //CEK KONDISI SEMISAL BUTTON 2 BERUBAH MENJADI OFF
rjmp enjoy
ldi r16,0b00000001
mov r0,r16
ldi r17, 0xfe
ldi r19, 0xff
ldi r18,30
masuk2:
sts 0x100, r30
sts 0x101,r31
sts 0x110, r17
out porta, r19
ldi r20,32
mainkan2:
lpm r16,z+
cpi r16,0x0e
breq nolkan2
and r16,r0
brne portb1set2
nolkan2:
cbi portb,1
rjmp loncat2
portb1set2:
sbi portb,1
loncat2:
rcall clock2
dec r20
brne mainkan2
lds r17,0x110
out porta,r17
call delay2
lds r30, 0x100
lds r31,0x101
sec
rol r17
lsl r0
dec r18
brne masuk2
lpm r23,z
cpi r23,0x0e
breq play2
adiw r30,1
rjmp ulang2
clock2:
sbi portb,2
nop
nop
nop
cbi portb,2
sbi portb,3
nop
nop
nop
cbi portb,3
ret
delay2:
ldi r21,3
lagi22:
ldi r22,0
lagi2:
dec r22
brne lagi2
dec r21
brne lagi22
ret
data2: //UBAH KE TEMPAT LAHIR ANDA
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
.db 0xfc,0x40,0x20,0x40,0xfc,0 //W
.db 0xfc,0x84,0xfc,0 //O
.db 0x3c,0x8,0x10,0x3c,0 //N
.db 0xfc,0x84,0xfc,0 //O
.db 0xfc,0xa4,0xe4,0 //G
.db 0xfc,0 //I
.db 0xfc,0x34,0x54,0x9c,0 //R
.db 0xfc,0 //I
.db 0,0x0e,0,0,0,0,0,0 //PADA BAGIAN INI JANGAN DIHAPUS AGAR TIDAK
TERJADI ERROR
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
enjoy2: //CEK KONDISI BUTTON 2
ldi r25,0 //MEMATIKAN LED SAAT BUTTON MATI
out portd,r25 //MEMATIKAN LED SAAT BUTTON MATI
sbic pinc,1
rjmp enjoy
ldi r16,0x00
out portb,r16
skuy: //CEK KONDISI BUTTON 3
ldi r25,0 //MEMATIKAN LED SAAT BUTTON MATI
out portd,r25 //MEMATIKAN LED SAAT BUTTON MATI
sbis pinc,2
rjmp skuy2
play3: //BUTTON 3 ON
.cseg
ldi r16, 8
out sph, r16
ldi r16, 0x5f
out spl, r16
ldi r30, low(data3*2)
ldi r31, high(data3*2)
ldi r16, 0xff
out ddrb,r16
out ddra,r16
cbi portb, 2
cbi portb, 3
ulang3:
ldi r16,0x00
out ddrc, r16
ldi r16,0xff
out ddrb,r16
ldi r25,19 //NILAI 19 DIUBAH KE UMUR ANDA
out portd,r25 //LED AKAN MENYALA SESUAI NILAI YANG DIMASUKKAN DIATAS
sbis pinc,2 //CEK KONDISI SEMISAL BUTTON 3 BERUBAH MENJADI OFF
rjmp skuy
ldi r16,0b00000001
mov r0,r16
ldi r17, 0xfe
ldi r19, 0xff
ldi r18,30
masuk3:
sts 0x100, r30
sts 0x101,r31
sts 0x110, r17
out porta, r19
ldi r20,32
mainkan3:
lpm r16,z+
cpi r16,0x0e
breq nolkan3
and r16,r0
brne portb1set3
nolkan3:
cbi portb,1
rjmp loncat3
portb1set3:
sbi portb,1
loncat3:
rcall clock3
dec r20
brne mainkan3
lds r17,0x110
out porta,r17
call delay3
lds r30, 0x100
lds r31,0x101
sec
rol r17
lsl r0
dec r18
brne masuk3
lpm r23,z
cpi r23,0x0e
breq play3
adiw r30,1
rjmp ulang3
clock3:
sbi portb,2
nop
nop
nop
cbi portb,2
sbi portb,3
nop
nop
nop
cbi portb,3
ret
delay3:
ldi r21,3
lagi33:
ldi r22,0
lagi3:
dec r22
brne lagi3
dec r21
brne lagi33
ret
data3: //UBAH KE UMUR + ANGKANYA
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
.db 0x7f,0x80,0x80,0x80,0x7f,0 //U
.db 0xf8,0x08,0xf0,0x08,0xf0,0 //m
.db 0x78,0x80,0x80,0xf8,0 //u
.db 0xf8,0x10,0x08,0x08,0 //r
.db 0x82,0xff,0x80,0 //1
.db 0x46,0x89,0x89,0x7e,0 //9
.db 0,0x0e,0,0,0,0,0,0 //PADA BAGIAN INI JANGAN DIHAPUS AGAR TIDAK
TERJADI ERROR
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
.db 0,0,0,0,0,0,0,0
skuy2: //CEK KONDISI BUTTON 3
ldi r25,0 //MEMATIKAN LED SAAT BUTTON MATI
out portd,r25 //MEMATIKAN LED SAAT BUTTON MATI
sbic pinc,1
rjmp skuy
ldi r16,0x00
out portb,r16
rjmp mulai

B. Analisa

B.1. Analisa Rangkaian Tugas Besar

Pada rangkaian ini,menggunakan komponen atmega 32, 3 buah dot-matrix


8x8, 3 buah IC 74HC595, 3 buah Switch/button, 3 buah resistor,dan 8 buah
Led Green.Pin A pada atmega 32 dihubungkan pada bagian bawah Dot-
matrix 8x8 seperti pada gambar diatas.Pin B (PB1,PB2,PB3) pada atmega
32 diubungkan pada IC 74HC595 dimana PB1 terhubung dengan pin DS
IC 74HC595 yang pertama dan IC yang kedua dan ketiga terhubung dengan
G1 dan G2 secara berurutan.Pin PB2 pada atmega 32 dihubungkan dengan
ke-tiga bagian SH_CP pada IC 74HC595.Sedangkan pin PB3 pada atmega
32 dihubungkan pada ke-tiga bagian ST_CP pada IC 74HC595.Bagian MR
dan OE pada IC 74HC595 dihubungkan ke VCC dan GND secara
berurutan.Kemudian Pin C (PC0,PC1,PC2) atmega 32 dihubungkan dengan
switch/button dan resistor secara berurutan dimana switch/button
dihubungkan dengan Power dan resistor dihubungkan dengan
Ground.Setelah itu Pin D (PD0-PD7) atmega 32 dihubungkan dengan LED-
Green secara berurutan.
B.2. Analisa Script Tugas Besar
Pada script diatas diawali dengan mendeklarasikan port yang akan di
gunakan untuk menyimpan alamat R16.Port yang digunakan yaitu Port
B,Port C,dan Port D. Setelah itu masuk pada program yang mengatur
switch/button pertama. Pada program ini,terdapat cek kondisi button 1
dimana SBIS yang berfungsi untuk mengecek apakah kondisi benar atau
salah. Jika benar maka program dibawahnya akan di skip yaitu perintah
RJMP mulai2. Maka program akan menjalankan variable
play(Button/switch 1 on) dimana perulangan akan terjadi. Setelah itu
masuk pada variable ulang. Pada program ini ditambahakan program untuk
menampilkan 3 digit akhir nim yang akan dikeluarkan/ditampilkan oleh
LED- Green. Kemudian terdapat SBIS lagi,dimana untuk mengecek apakah
kondisi benar atau salah. SBIS ini bertujuan agar ketika button/switch 1 di
matikan,lampu LED-Green juga akan mati. Setelah itu masuk pada variable
masuk,dimana akan memasukkan nilai pada setiap alamat dan akan
dikeluarkan pada alamat R19 di port A. Setelah itu masuk pada variable
yang mana difungsikan untuk perulangan data dan terdapat clocking yang
akan digunakan untuk melakukan penggeseran atau pengaktifan pada IC
74HC595. Terdapat delay yang berfungsi untuk mengatur waktu
pergerakkan dot matrixnya. Setelah itu masuk pada variable data dimana
untuk menampilkan nama dan 3 digit akhir nim. Selanjutnya program yang
akan dijalankan hampir sama dengan program diatas,yang membedakan
yaitu pada penampilan LED-Green dan pada Dot Matrixnya. Pada program
kedua (button/switch 2) ditujukan untuk menampilkan tanggal lahir yang
akan dikeluarkan melalui LEDGreen dan tempat lahir yang akan
dimunculkan pada dot matrix. Program ke tiga (button/switch 3) ditujukan
untuk menampilkan umur pada LED Green dan tulisan umur+angkanya
pada dot matrix.

C. Link Youtube

https://youtu.be/5VcnVDz9bOo

Anda mungkin juga menyukai