Laporan Pratikum Assembly Modul 2

Note : bagian yang dicoret mohon jangan dianggap serius.

 

Penjelasan Studi Kasus

Pada pratikum hari ini menggunakan aplikasi software ISIS Protheus 7 bajakan dan AVR Studio, dan kali ini kami akan membuat rangkaian lampu LED menggunakan 8 lampu LED yang merespon inputan tombol.

  1. Dasar Teori

ATMega8535 memfasilitasi setiap PORT I/O-nya dengan fitur internal pull-up yang dapat diatur aktif/tidaknya. Fitur internal pull-up penting untuk diperhatikan pada saat PORTX yang bersangkutan diset sebagai masukan (input). Jika pull-up internal pada PORTX diaktifkan, setiap pin pada PORTX tersebut seolah tersambung ke VCC melalui sebuah resistor, sehingga pada kondisi tidak ada rangkaian lain yang terhubung dengan pin tersebut maka logika yang terbaca yang masuk ke pin tersebut adalah logika ‘1’ (high). Logika yang terbaca akan bernilai 0 (low) jika pada pin tersebut terhubung ke ground melalui sebuah saklar. Illustrasi ditunjukkan pada gambar 1.

 

Gambar 1. (a) Internal pull-up aktif (b) internal pull-up tidak aktif

Gambar 1. (a) Internal pull-up aktif (b) internal pull-up tidak aktif

Untuk menjadilkan PORTX sebagai input maka register DDRX harus diberikan nilai 0, sedangkan untuk mengaktifkan dan menonaktifkan internal pull-up dengan cara memberikan nilai ke register PORTX. Tabel inisialisasi harus diberikan ke register DDRX dan PORTX seperti ditunjukkan pada tabel 1.

 

Tabel 1. Inisialisasi Register PORTX

DDRX PORTX PINX Keterangan
0 0 Pull Up High Impedance Data input dibaca via PINX
0 1 Pull Up Active Data input dibaca via PINX
1 0 PORTX sebagai Output, Data output = 0 (LOW)
1 1 PORTX sebagai output, Data output = 1 (HIGH)

 

 

Secara rangkaian elektronika, ada dua alternatif jika menjadikan PORT pada mikrokontrol AVR sebagai port input, yaitu dengan menggunakan resistor pull-up eksternal atau dengan mengaktifkan fitur internal pull-up. Gambar 2 menunjukan jika menggunakan resistor pull-up eksternal, maka fitur internal pull-up tidak perlu diaktifkan. Namun jika ingin menggunakan fitur internal pull-up, maka tidak perlu menggunakan eksternal pull-up seperti ditunjukkan pada gambar 3.

 

LANGKAH PERCOBAAN

  1. Buatlah skema rangkaian seperti gambar 2 berikut :

 

Gambar 2. PORTA sebagai output untuk menyalakan lampu LED. PORTC sebagai input dengan eksternal pull-up.

 

  1. Ketik dan build program assembly berikut :

Program 1 :

.org 0x0000
rjmp persiapan


persiapan:
ldi r16, low(RAMEND)  ; inisialisasi stack pointer
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16

inisialisasi_port:
ldi r17, 0xFF
out DDRA, r17

ldi r17, 0x00
out DDRC, r17
out PORTC, r17


baca_input:
in r20, PINC
out PORTA, r20
rjmp baca_input
  1. Isikan file .HEX yang sudah sukses di-assembler ke simulator
  2. Jalankan (Run the simulation) skema yang sudah anda buat dan Amatilah, Tekan push-button 0 (PB0) sampai PB7 dan perhatikan lampu LED mana yang padam.
  3. Buatlah skema rangkaian seperti gambar 3.
  4. Ketik dan build program assembly berikut :

 

Program #2

.org 0x0000
rjmp persiapan


persiapan:
ldi r16, low(RAMEND)  ; inisialisasi stack pointer
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16

inisialisasi_port:
ldi r17, 0xFF
out DDRA, r17

ldi r17, 0x00
out DDRC, r17

ldi r17, 0xFF
out PORTC, r17


baca_input:
in r20, PINC
out PORTA, r20
rjmp baca_input

Gambar 3. PORTA sebagai output untuk menyalakan lampu LED. PORTC sebagai input langsung terhubung dengan Push Button.

 

  1. Jalankan (Run the simulation) skema yang sudah anda buat dan Amatilah, Tekan push-button 0 (PB0) sampai PB7 dan perhatikan lampu LED mana yang padam.
  2. Cobalah untuk men-download Program #1 ke rangkaian gambar 3. Apakah tombol yang ditekan dapat membuat perubahan pada lampu ? Jelaskan & tuliskan analisa anda di laporan resmi !
  3. Cobalah untuk men-download Program #2 ke rangkaian gambar 2. Apakah tombol yang ditekan dapat membuat perubahan pada lampu ? Jelaskan & tuliskan analisa anda di laporan resmi !

HASIL PERCOBAAN

Menggunakan Program 1 dengan rangkaian pada Gambar 2, hasilnya adalah lampu LED mati sesuai dengan tombol yang ditekan.

Program 1 dengan rangkaian pada gambar 2.

Menggunakan Program 2 dengan rangkaian pada Gambar 3, hasilnya adalah lampu LED mati sesuai dengan tombol yang ditekan.

Program 2 dengan rangkaian pada gambar 3.

Menggunakan Program 1 dengan rangkaian pada Gambar 3, hasilnya adalah lampu LED mati dan semua tombol tidak berfungsi.

lampu LED mati, tombol tidak berfungsi

Menggunakan Program 2 dengan rangkaian pada Gambar 2, hasilnya adalah lampu LED mati sesuai dengan tombol yang ditekan.

Program 2 dengan rangkaian pada gambar 2.

TUGAS :

Diketahui gambar skema seperti berikut :

Gambar 4. PORTA sebagai output untuk menyalakan 7-segmen. PORTB sebagai input.Buatlah skema seperti gambar #4.

  1. Buatlah skema seperti gambar #4.
  2. Buatlah program dengan skenario sebagai berikut :
    1. Jika tidak ada PB yang ditekan, maka 7-segmen padam.
    2. Jika PB0 ditekan, maka tampilan 7-segmen menunjukkan angka ‘0’
    3. Jika PB1 ditekan, maka tampilan 7-segmen menunjukkan angka ‘1’ dan seterusnya sampai PB7

Tombol 1 ditekan, angka 1 yang keluar.

Hasil :

Kode program :

.org 0x0000
rjmp persiapan


persiapan:
ldi r16, low(RAMEND)  ; inisialisasi stack pointer
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16

inisialisasi_port:
ldi r18, 0xFF
out DDRA, r18

ldi r17, 0x00
out DDRC, r17

ldi r17, 0x00
out PORTC, r17

ldi r18, 0xFF
out PORTA, r18

baca_input:
in r20,PINC
cpi r20,0b11111110
breq nol
in r20,PINC
cpi r20,0b11111101
breq satu
in r20,PINC
cpi r20,0b11111011
breq dua
in r20,PINC
cpi r20,0b11110111
breq tiga
in r20,PINC
cpi r20,0b11101111
breq empat
in r20,PINC
cpi r20,0b11011111
breq lima
in r20,PINC
cpi r20,0b10111111
breq enam
in r20,PINC
cpi r20,0b01111111
breq tujuh
rjmp baca_input

nol:
ldi r20,0b01000000
out PORTA,r20
rjmp baca_input

satu:
ldi r20,0b01111001
out PORTA,r20
rjmp baca_input

dua:
ldi r20,0b00100100
out PORTA,r20
rjmp baca_input

tiga:
ldi r20,0b01001111
com r20
out PORTA,r20
rjmp baca_input

empat:
ldi r20,0b01100110
com r20
out PORTA,r20
rjmp baca_input

lima:
ldi r20,0b00010010
out PORTA,r20
rjmp baca_input

enam:
ldi r20,0b00000010
out PORTA,r20
rjmp baca_input

tujuh:
ldi r20,0b01111000
out PORTA,r20
rjmp baca_input

Masih menggunakan skema pada gambar 4, buatlah program dengan skenario sebagai berikut :

  • Jika tidak ada PB yang ditekan, maka 7-segmen padam.
  • Jika PB0 ditekan, maka tampilan 7-segmen menunjukkan angka ‘7’ .
  • Jika PB1 ditekan, maka tampilan 7-segmen menunjukkan angka ‘6’ .
  • Jika PB2 ditekan, maka tampilan 7-segmen menunjukkan angka ‘5’ .
  • Dan seterusnya sampai …
  • Jika PB7 ditekan, maka tampilan 7-segmen menunjukkan angka ‘0’ .

Tombol 0 ditekan, keluar angka 7

Kode Program :

.org 0x0000
rjmp persiapan


persiapan:
ldi r16, low(RAMEND)  ; inisialisasi stack pointer
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16

inisialisasi_port:
ldi r18, 0xFF
out DDRA, r18

ldi r17, 0x00
out DDRC, r17

ldi r17, 0x00
out PORTC, r17

ldi r18, 0xFF
out PORTA, r18

baca_input:
in r20,PINC
cpi r20,0b11111110
breq tujuh
in r20,PINC
cpi r20,0b11111101
breq enam
in r20,PINC
cpi r20,0b11111011
breq lima
in r20,PINC
cpi r20,0b11110111
breq empat
in r20,PINC
cpi r20,0b11101111
breq tiga
in r20,PINC
cpi r20,0b11011111
breq dua
in r20,PINC
cpi r20,0b10111111
breq satu
in r20,PINC
cpi r20,0b01111111
breq nol
rjmp baca_input

nol:
ldi r20,0b01000000
out PORTA,r20
rjmp baca_input

satu:
ldi r20,0b01111001
out PORTA,r20
rjmp baca_input

dua:
ldi r20,0b00100100
out PORTA,r20
rjmp baca_input

tiga:
ldi r20,0b01001111
com r20
out PORTA,r20
rjmp baca_input

empat:
ldi r20,0b01100110
com r20
out PORTA,r20
rjmp baca_input

lima:
ldi r20,0b00010010
out PORTA,r20
rjmp baca_input

enam:
ldi r20,0b00000010
out PORTA,r20
rjmp baca_input

tujuh:
ldi r20,0b01111000
out PORTA,r20
rjmp baca_input

 

 

Share

Tentang Rinaldo Jonathan

Admin of this site.

Tulisan ini dipublikasikan di Tak Berkategori. Tandai permalink.

Tinggalkan Balasan