Laporan Pratikum Assembly Modul 5

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 7-segment yang merespon terhadap input keypad.

TUJUAN :

– Mengenal perintah bit pada Mikrokontrol ATMEGA8535

– Mengaplikasikan perintah logika untuk pembacaan keypad

– Memahami penerapan perintah logika pada rangkaian sebenarnya

 

TEORI :

Jenis perintah pada mikroprosesor berdasarkan keterlibatan variabelnya ada 2 jenis yaitu perintah unary dan binary. Perintah unary adalah perintah yang hanya melibatkan 1 variabel, misalnya inc dan dec, serta sbi dan cbi. Perintah binary adalah perintah yang melibatkan 2 variabel contohnya add r23, r24. Menurut jenisnya, perintah yang mengakses sebuah port dapat bersifat simultan atau independen. Perintah simultan adalah perintah yang langsung mengakses 8 bit pada port secara bersamaan, sedangkan perintah independen hanya mengakses bit dari port secara parsial. Ilustrasi perintah simultan dan independen ditunjukkan pada gambar 1.

Gambar 1. Perintah simultan langsung mengakses 8 bit bersamaan. Perintah independen mengakses bit pada port secara mandiri.
Gambar 1. Perintah simultan langsung mengakses 8 bit bersamaan. Perintah independen mengakses bit pada port secara mandiri.

Perintah simultan langsung mengakses 8 bit secara bersamaan dan logika 0 atau 1 nya langsung dimuatkan dalam register perantara. Sedangkan perintah independen hanya mampu mengakses 1 bit saja sehingga memerlukan 4 kali perintah independen untuk men-setting 4 bit agar berlogika 1 seperti gambar 1 di atas. Perintah independen berguna pada saat sebuah bit ingin diubah kondisi logikanya tanpa harus mengganggu bit-bit yang lain. Kemampuan inilah yang tidak dimiliki oleh perintah simultan.

 

 

 

 

 

 

 

KAMUS PERINTAH INDEPENDEN:

 

Tabel 1. Daftar perintah independen AVR8535

Sintak Keterangan Contoh
Sbi

 

 

 

 

Cbi

Set bit

Men-set bit pada PORTX atau membuat logika 1

 

 

Meng-Clear bit pada PORTX atau membuat logika 0

sbi PORTA, 3

 

hasilnya : bit 3 pada PORTA berlogika 1

 

cbi PORTA, 7

 

hasilnya : bit 7 pada PORTC berlogika 0

 

Scanning Keypad

Gambar 2. Keypad matrik
Gambar 2. Keypad matrik

Keypad adalah tombol yang disusun membentuk matrik dan menggunakan teknik kolom-baris agar menghemat penggunaan jalur port mikrokontrol. Gambar 2 menunjukkan tampilan umum dari keypad telepon. Cara kerjanya adalah jika ada tombol ditekan, maka jalur kolom dengan jalur baris akan terhubung. Misalnya, pada kolom 1 berlogika high(‘1’) sedangkan kolom 2 dan 3 low(“0”), terus kemudian tombol 7 ditekan, maka baris C akan berlogika “1” karena mendapatkan sinyal high dari kolom 1. Dengan cara kerja yang sama, maka dapat dibuat algoritma untuk mengetahui tombol-tombol yang lain yang ditekan, misalnya jika kolom 3 berlogika high dan baris B berlogika high maka tombol “6” pasti sedang ditekan. Oleh karena itu, pemberian logika high ke jalur kolom harus secara bergantian dan pembacaan baris dapat dilakukan secara serentak.

 

Prosedur untuk scanning keypad dapat dituliskan sebagai berikut :

  1. Setting kolom 1 = high, kolom 2 dan 3 = low
  2. Baca baris,      jika baris A = high, maka tombol yang ditekan adalah “1”

jika baris B = high, maka tombol yang ditekan adalah “4”

jika baris C = high, maka tombol yang ditekan adalah “7”

jika baris D = high, maka tombol yang ditekan adalah “*”

  1. Setting kolom 1 = low, kolom 2 = high dan 3 = low
  2. Baca baris,       jika baris A = high, maka tombol yang ditekan adalah “2”

jika baris B = high, maka tombol yang ditekan adalah “5”

jika baris C = high, maka tombol yang ditekan adalah “8”

jika baris D = high, maka tombol yang ditekan adalah “0”

  1. Setting kolom 1 dan 2 = low dan 3 = high
  2. Baca baris,       jika baris A = high, maka tombol yang ditekan adalah “3”

jika baris B = high, maka tombol yang ditekan adalah “6”

jika baris C = high, maka tombol yang ditekan adalah “9”

jika baris D = high, maka tombol yang ditekan adalah “#”

 

LANGKAH PERCOBAAN #1

  1. Buatlah skema rangkaian seperti gambar 3.
  2. Ketik dan build program #1.
  3. Isikan file .HEX yang sudah sukses di-assembler ke simulator
  4. Jalankan (Run the simulation) skema yang sudah anda buat dan cobalah menekan tombol 1 sampai 9. Bagaimana hasilnya ?
Gambar 3. Rangkaian simulasi untuk scanning keypad
Gambar 3. Rangkaian simulasi untuk scanning keypad

Program #1

.equ nol = 0xC0
.equ satu = 0xF9
.equ dua = 0xA4
.equ tiga = 0xB0
.equ empat = 0x99
.equ lima = 0x92
.equ enam = 0x82
.equ tujuh = 0xF8
.equ del = 0x80
.equ sem = 0x90

;-----------------------------inisialisasi
inisialisasi_port:

ldi r16, 0xFF
out DDRA, r16
ldi r16, 0xF0
out DDRD, r16

;-------------------------akhir inisialisasi

ldi r17, 0xFF
out porta, r17

baca_input1:

sbi portd,4
cbi portd,5
cbi portd,6

in r22, PIND
andi r22, 0x0F

cpi r22, 0x01
breq tombol_satu

cpi r22, 0x02
breq tombol_empat

cpi r22, 0x04
breq tombol_tujuh
	
cpi r22, 0x08
breq tombol_bintang
;=======================kolom 2
baca_input2:
cbi portd,4
sbi portd,5
cbi portd,6

in r21, PIND
andi r21, 0x0F

cpi r21, 0x01
breq tombol_dua

cpi r21, 0x02
breq tombol_lima

cpi r21, 0x04
breq tombol_delapan

cpi r21, 0x08
breq tombol_nol

;=======================kolom 3
baca_input3:
cbi portd,4
cbi portd,5
sbi portd,6

in r20, PIND
andi r20, 0x0F

cpi r20, 0x01
breq tombol_tiga
cpi r20, 0x02

breq tombol_enam

cpi r20, 0x04
breq tombol_sembilan

cpi r20, 0x08
breq tombol_pagar

rjmp baca_input1
;===================
tombol_satu: ldi r17, 0xf9
out porta, r17
rjmp baca_input2

tombol_empat: ldi r17, 0x99
out porta, r17
rjmp baca_input2

tombol_tujuh: ldi r17, 0xf8
out porta, r17
rjmp baca_input2

tombol_bintang: ldi r17, 0x03
out porta, r17
rjmp baca_input2
;====================
tombol_dua: ldi r17, dua
out porta, r17
rjmp baca_input3

tombol_lima: ldi r17, lima
out porta, r17
rjmp baca_input3

tombol_delapan: ldi r17, del
out porta, r17
rjmp baca_input3

tombol_nol: ldi r17, nol
out porta, r17
rjmp baca_input3
;============================
tombol_tiga: ldi r17, tiga
out porta, r17
rjmp baca_input1

tombol_enam: ldi r17, enam
out porta, r17
rjmp baca_input1

tombol_sembilan: ldi r17, sem
out porta, r17
rjmp baca_input1

tombol_pagar: ldi r17, 0x0C
out porta, r17
rjmp baca_input1

TUGAS #1 :

 

Dengan menggunakan Gambar 1, modifikasilah Program #1 sehingga penekanan tombol dan tampilannya menjadi berbeda, seperti pada tabel 2 berikut :

 

 

Tombol Ditekan Tampilan 7 segment
1 A
2 B
3 C
4 D
5 E
6 F
7 G
8 H
9 I
0 J

 

Hasil coding :

.include A"C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler2\Appnotes\m8535def.inc"

.equ nol = 0xC0
.equ satu = 0xF9
.equ dua = 0xA4
.equ tiga = 0xB0
.equ empat = 0x99
.equ lima = 0x92
.equ enam = 0x82
.equ tujuh = 0xF8
.equ del = 0x80
.equ sem = 0x90
.equ A = 0b0001000
.equ B = 0b0000011
.equ C = 0b1000110
.equ D = 0b0100001
.equ E = 0b0000110
.equ F = 0b0001110
.equ G = 0b0000010
.equ H = 0b0001001
.equ I = 0b1111001
.equ J = 0b1110000

;-----------------------------inisialisasi
inisialisasi_port:

ldi r16, 0xFF
out DDRA, r16
ldi r16, 0xF0
out DDRD, r16

;-------------------------akhir inisialisasi

ldi r17, 0xFF
out porta, r17

baca_input1:

sbi portd,4
cbi portd,5
cbi portd,6

in r22, PIND
andi r22, 0x0F

cpi r22, 0x01
breq tombol_satu

cpi r22, 0x02
breq tombol_empat

cpi r22, 0x04
breq tombol_tujuh


cpi r22, 0x08
breq tombol_bintang
;=======================kolom 2
baca_input2:
cbi portd,4
sbi portd,5
cbi portd,6

in r21, PIND
andi r21, 0x0F

cpi r21, 0x01
breq tombol_dua

cpi r21, 0x02
breq tombol_lima

cpi r21, 0x04
breq tombol_delapan

cpi r21, 0x08
breq tombol_nol

;=======================kolom 3
baca_input3:
cbi portd,4
cbi portd,5
sbi portd,6

in r20, PIND
andi r20, 0x0F

cpi r20, 0x01
breq tombol_tiga

cpi r20, 0x02
breq tombol_enam

cpi r20, 0x04
breq tombol_sembilan

cpi r20, 0x08
breq tombol_pagar

rjmp baca_input1
;===================
tombol_satu: ldi r17, A
out porta, r17
rjmp baca_input2

tombol_empat: ldi r17, D
out porta, r17
rjmp baca_input2

tombol_tujuh: ldi r17, G
out porta, r17
rjmp baca_input2

tombol_bintang: ldi r17, J
out porta, r17
rjmp baca_input2
;====================
tombol_dua: ldi r17, B
out porta, r17
rjmp baca_input3

tombol_lima: ldi r17, E
out porta, r17
rjmp baca_input3

tombol_delapan: ldi r17, H
out porta, r17
rjmp baca_input3

tombol_nol: ldi r17, nol
out porta, r17

rjmp baca_input3
;============================
tombol_tiga: ldi r17, C
out porta, r17
rjmp baca_input1

tombol_enam: ldi r17, F
out porta, r17
rjmp baca_input1

tombol_sembilan: ldi r17, I
out porta, r17
rjmp baca_input1

tombol_pagar: ldi r17, 0x0C
out porta, r17
rjmp baca_input1

Share Button

Oleh Rinaldo Jonathan

Admin of this site. Artis papan PCB. #zoneRinaldo #Controllerism Studio Demon, Stage Angel, Sleepy Developer, Smoke free. Kalkud SHS 2012, PCR G15.

Tinggalkan Balasan

Verified by ExactMetrics