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.