60

Buku Panduan Praktikum Sistem Mikroprosesor

Embed Size (px)

DESCRIPTION

Berisi Panduan untuk melakukan Pratikum Sistem Mikroprosesor.Membutuhkan Alat berupa DT51 Minsys dan Trainer Boardnya. Bisa di download di

Citation preview

BUKU PANDUAN PRAKTIKUM

SISTEM

MIKROPROSESOR

Tim Penyusun :

Laboratorium Sistem Komputer dan Robotika

LABORATORIUM SISTEM KOMPUTER DAN ROBOTIKA

PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER

UNIVERSITAS BRAWIJAYA

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan1: Basic Input/ Output

Fakultas Ilmu Komputer – Universitas Brawijaya

1

PERCOBAAN 1

BASIC INPUT/ OUTPUT

BASIC I/O DENGAN PORT 1

TUJUAN

Praktikan mampu membuat program input dan output menggunakan PORT1 dari DT-51

MinSys dengan cara mengakses PORT1 secara per bit dan per byte

DASAR TEORI

Perangkat keras yang digunakan dalam praktikum ini adalah DT-51 MinSys ver 3.0 dan DT-

51 Trainer Board. DT-51 MinSys merupakan suatu sistem minimum berbasis 89S51 (salah

satu keluarga MCS-51), sedangkan DT-51 Trainer Board merupakan board pendukung DT-51

MinSys untuk mengamati keluaran (output) atau memberi masukan (input) pada sistem

minimum.

Gambar 1 DT-51 MinSys ver 3.0

Berikut ini merupakan spesifikasi singkat dari DT-51 Minimum System ver 3.0:

memiliki memori eksternal sebesar 8MB;

4 byte port input/output (I/O), yaitu PORT1 dari 89S51 dan 3 port PPI (yaitu PORTA, PORTB, dan PORTC);

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan1: Basic Input/ Output

Fakultas Ilmu Komputer – Universitas Brawijaya

2

Port CONTROL yang meliputi interrupt eksternal dan counter eksternal 89S51

port LCD; dan

serial interface standard RS 232 untuk komunikasi DT-51 MinSys dengan PC.

Adapun spesifikasi singkat dari DT-51 Trainer Board adalah sebagai berikut:

8 led sebagai output (OUTPUT LED DISPLAY);

8 toggle switch sebagai input (SWITCH INPUT);

2 seven segment sebagai scanning output (SCANNING 7SEGMENT DISPLAY), dengan konektor datanya terdapat pada port “DATA 7S” dan konektor pemilihnya terdapat pada port “I/P S KEY”;

4 keypad sebagai scanning input (SCANNING KEYPAD), dengan konektor input dan output terdapat pada port “I/P S KEY”;

CLOCK GENERATOR 1 Hz, 1 kHz, dan 10 kHz. Konektor output terdapat pada CO1 dan CO2; dan

4 keypad sebagai input bagi interrupt dan counter (INTERRUPT & COUNTER INPUT). Konektor output terdapat pada IS1, IS2, IS3, dan IS4.

Gambar 2 DT-51 Trainer Board

Beberapa port pada sistem minimum DT-51 ini akan dihubungkan dengan port pada trainer

board. Khusus untuk menghubungkan port CONTROL pada sistem minimum dengan port

CONTROL pada trainer board, digunakan kabel tipe X seperti pada Gambar 3 di bawah ini.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan1: Basic Input/ Output

Fakultas Ilmu Komputer – Universitas Brawijaya

3

Penggunaan kabel tipe ini dikarenakan posisi pin VCC dan GND pada sistem minimum

dengan trainer board terbalik.

Gambar 3 Kabel tipe X

Gambar 4 Penggunaan kabel tipe X untuk menghubungkan kedua port "CONTROL"

Komunikasi antara PC dangan DT-51 MinSys dilakukan melalui SERIAL PORT (dengan

konektor DB9). Pada PC, serial port ini diberi label COM, misal COM1 atau COM2. Melalui

komunikasi ini pula program yang dibuat pada setiap percobaan di-download dari PC ke DT-

51 MinSys. Hubungkan kabel serial seperti pada Gambar 5 untuk menjalankan komunikasi

tersebut.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan1: Basic Input/ Output

Fakultas Ilmu Komputer – Universitas Brawijaya

4

Gambar 5 Hubungan DT-51 MinSys dengan PC

Pada praktikum ini akan digunakan program berbahasa Assembly. Listing program ini ditulis

dan diubah dengan menggunakan editor Notepad dan disimpan dengan format (nama

file).ASM. File yang akan di-download ke DT-51 MinSys memiliki format (nama file).HEX.

Untuk mengubah listing program pada Notepad menjadi suatu file heksadesimal digunakan

suatu hex assembler, yaitu ASM51.EXE.

Proses assembling dilakukan dengan mengetikkan “ASM51 (nama file)” pada MS-DOS

prompt (pada folder yang memuat semua file yang akan di-assemble tersebut). Jika

terdapat kesalahan pada listing program, maka akan dihasilkan file (nama file).LST yang

berisi pesan error dan lokasinya. File ini juga berisi alokasi (alamat) memori pada listing

program.

Setelah dilakukan proses assembling, maka file heksadesimal siap di-download ke DT-51

MinSys. Langkah ini dilakukan dengan bantuan DT51L.EXE, dengan mengetikkan “DT51L

(nama file).HEX” pada MS-DOS prompt atau dengan menggunakan versi DT51L yang lebih

user-friendly, yaitu DT51LWin.EXE.

PERINTAH YANG DIGUNAKAN

SJMP, LJMP

MOV, MOVX

SETB, CLR

JB, JNB

JC, JNC

CJNE

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan1: Basic Input/ Output

Fakultas Ilmu Komputer – Universitas Brawijaya

5

PERCOBAAN 1.1: PORT 1 SEBAGAI OUTPUT

Persiapan

Hubungkan PORT1 DT-51 MinSys dengan “PORT OUTPUT” DT-51 Trainer Board menggunakan kabel tipe Y.

Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board (sebagai sumber tegangan) menggunakan kabel tipe X.

Hubungkan DT-51 MinSys dengan PC mengunakan kabel serial DB-9 pin.

Hubungkan DT-51 MynSys dengan sumber tegangan.

Program 1.1

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya.

$mod51

CSEG

ORG 4000H

LJMP START

START:

CLR P1.0

CLR P1.1

CLR P1.2

SETB P1.3

SETB P1.4

SETB P1.5

CLR P1.6

CLR P1.7

SJMP $

END

Tugas 1.1

Modifikasi program di atas sehingga menghasilkan keluaran led (OUTPUT LED DISLAY)

sesuai dengan representasi biner dari nomor kelompok Anda (dimana, nyala =1, padam=0)

Petunjuk: Lihat perintah program yang berkaitan dengan akses port (yaitu yang memiliki

operand P1.x).

Analisis keluaran pada “OUTPUT LED DISPLAY” dan pengaruh dari setiap line program yang

Anda buat sehingga menghasilkan keluaran seperti itu.

Catatan:

Perintah SJMP $ pada program akan menyebabkan program berputar (looping) pada alamat

(address) dimana perintah SJMP $ berada.

Perhatikan:

1. Perhatikan gambar 4 pada bagian Dasar Teori. Pemasangan kabel X pada port control jangan sampai terbalik. Bagian kabel yang bersilangan (cross) dipasang pada pin 1 dan 2 (sisi kiri);

2. Pada kit praktikum ini digunakan tegangan Vs=12 V.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan1: Basic Input/ Output

Fakultas Ilmu Komputer – Universitas Brawijaya

6

BASIC I/O DENGAN PPI PORT

TUJUAN

Praktikan mampu membuat program input dan output menggunakan PPI (Programmable

Peripheral Interface) Port (PORTA, PORTB dan PORTC) pada DT-51 MinSys.

DASAR TEORI

PPI Port merupakan port ekspansi (tambahan) yang terdiri dari tiga port: PORTA (berada

pada alamat 2000h), PORTB (berada pada alamat 2001h) dan PORTC (berada pada alamat

2002h). Masing-masing port tersebut memiliki jalur data input dan output selebar 8 bit.

Penggunaan PPI Port pada 82C55 tidak sesederhana penggunaan PORT1 yang telah

disediakan oleh AT89S51. Untuk menggunakan port PPI harus didahului dengan proses

inisialisasi. Proses inisialisasi dilakukan dengan menggunakan Control Word yang berada

pada alamat 2003h. Dengan demikian, dengan Control Word inilah dapat diatur port mana

yang aktif dan mode apa yang digunakan pada PORTA, PORTB dan PORTC PPI.

Control Word

Berikut ini penjelasan nilai Control Word untuk inisialisasi:

MSB (Most Significant Bit) LSB (Least Significant Bit)

D7 D6 D5 D4 D3 D2 D1 D0

Simbol Fungsi

D7 Set Flag, berlogika ‘1’ untuk mengaktifkan PPI Port.

D6& D5 Mode Select untuk PORTA dan PORTC Upper (bit 7 – bit 4), bernilai ‘00’ untuk

mode 0, ‘01’ untuk mode 1, dan ‘10’ atau ‘11’ untuk mode 2. Praktikum ini

hanya menggunakan mode 0 sehingga nilainya selalu ‘00’.

D4 PORTA, berlogika ‘1’ untuk input dan berlogika ‘0’ untuk output.

D3 PORTC Upper, berlogika ‘1’ untuk input dan berlogika ‘0’ untuk output.

D2 Mode Select untuk PORTB dan PORTC Lower (bit 3 – bit 0), berlogika ‘0’ untuk

mode 0 dan berlogika ‘1’ untuk mode 1. Praktikum ini hanya menggunakan mode

0 sehingga selalu berlogika ‘0’.

D1 PORTB, berlogika ‘1’ untuk input dan berlogika ‘0’ untuk output.

D0 PORTC Lower, berlogika ‘1’ untuk input dan berlogika ‘0’ untuk output.

Setelah proses inisialisasi dilakukan, PPI Port dapat diakses per byte.

Akses Port per bit Pada PPI Port

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan1: Basic Input/ Output

Fakultas Ilmu Komputer – Universitas Brawijaya

7

Selain diakses per byte, PPI Port dapat juga diakses per bit (Bit Set/Reset). Akses per bit

hanya terbatas pada PORTC saja dan hanya sebagai output saja. Meski menggunakan

PORTC, tetapi akses per bit bukan berarti mengakses langsung ke alamat PORTC. Akses per

bit didapat dengan mengakses Control Word.

Berikut ini penjelasan nilai Control Word untuk mengakses port per bit.

MSB LSB

D7 D6 D5 D4 D3 D2 D1 D0

Simbol Fungsi

D7 Set Flag, berlogika ‘0’ untuk mengaktifkan akses per bit.

D6, D5, D4

Bit bersifat don’t care (dapat diisi logika ‘0’ atau ‘1’). Disarankan untuk mengisi dengan logika ‘0’.

D3, D2, D1

Bit Select untuk menentukan bit pada PORTC yang akan diakses. Keterangan lebih jelas ditunjukkan oleh tabel 2.

D0 Bit Set/Reset untuk PORTC. Berlogika ‘1’ untuk Set dan ‘0’ untuk Reset.

Bit pada Port C

7 6 5 4 3 2 1 0

D3 1 1 1 1 0 0 0 0

D2 1 1 0 0 1 1 0 0

D1 1 0 1 0 1 0 1 0

PERINTAH YANG DIGUNAKAN

SJMP, LJMP

MOV, MOVX

ACALL, RET

DJNZ

CJNE

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan1: Basic Input/ Output

Fakultas Ilmu Komputer – Universitas Brawijaya

8

PERCOBAAN 1.2 : PORT 1 SEBAGAI INPUT DAN PORT A SEBAGAI OUTPUT

Persiapan

Hubungkan PORT1 DT-51 MinSys dengan “PORT INPUT” DT-51 Trainer Board menggunakan kabel tipe Y.

Hubungkan PORTA DT-51 MinSys dengan “PORT OUTPUT” DT-51 Trainer Board menggunakan kabel tipe Y.

Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board (sebagai sumber tegangan) menggunakan kabel tipe X.

Hubungkan DT-51 MinSys dengan PC mengunakan kabel serial.

Hubungkan DT-51 MynSys dengan sumber tegangan.

Program 1.2

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya (keterangan: ubah

posisi “SWITCH INPUT” masing-masing bit).

$mod51

CSEG

ORG 4000H

LJMP START

START:

INIT: MOV DPTR, #2003H

MOV A, #80H

MOVX @DPTR, A

LABEL: JB P1.4, DISPLAY2

DISPLAY1: MOV DPTR, #2000H

MOV A, #00H

MOVX @DPTR, A

SJMP LABEL

DISPLAY2: MOV DPTR, #2000H

MOV A, #55H

MOVX @DPTR, A

SJMP LABEL

END

Tugas 1.2

Modifikasi program di atas sehingga jika “SWITCH INPUT” bit ke 0 di set samadengan

1 akan menghasilkan keluaran LED (nyala =1, padam=0) sesuai dengan representasi

biner dari nomor kelompok Anda.

Analisis keluaran pada “OUTPUT LED DISPLAY” dan pengaruh dari setiap line program

yang Anda buat sehingga menghasilkan keluaran seperti itu.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan1: Basic Input/ Output

Fakultas Ilmu Komputer – Universitas Brawijaya

9

PERCOBAAN 1.3 : KOMBINASI PPI PORT SEBAGAI INPUT DAN OUTPUT

Persiapan

Hubungkan PORTA DT-51 MinSys dengan “PORT OUTPUT” DT-51 Trainer Board menggunakan kabel tipe Y.

Hubungkan PORTB DT-51 MinSys dengan ”PORT INPUT” DT-51 Trainer Board menggunakan kabel tipe Y.

Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board (sebagai tegangan sumber) menggunakan kabel tipe X.

Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.

Hubungkan DT-51 MinSys dengan sumber tegangan.

Program 1.3

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya (keterangan: ubah

posisi “SWITCH INPUT” masing-masing bit).

$mod51

PORTA EQU 2000H

PORTB EQU 2001H

CW EQU 2003H

CSEG

ORG 4000H

LJMP START

DELAY:

MOV R7, #04H

LUP1: MOV R6, #0FFH

LUP2: MOV R5, #0FFH

DJNZ R5, $

DJNZ R6, LUP2

DJNZ R7, LUP1

RET

START:

MOV SP, #30H

INIT: MOV DPTR, #CW

MOV A, #82H

MOVX @DPTR, A

LOOP: MOV DPTR, #PORTB

MOVX A,@DPTR

MOV DPTR, #PORTA

MOVX @DPTR, A

ACALL DELAY

SJMP LOOP

END

Tugas 1.3:

Modifikasi program di atas sehingga PORTA menjadi input dan PORTB menjadi output

(Petunjuk: perhatikan posisi kabel dan nilai CW). Analisis keluaran pada “OUTPUT LED

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan1: Basic Input/ Output

Fakultas Ilmu Komputer – Universitas Brawijaya

10

DISPLAY” dan pengaruh dari setiap line program yang Anda buat sehingga menghasilkan

keluaran seperti itu.

I/O PORT DENGAN DELAY Setiap instruksi memiliki total waktu komputasi yang berbeda yang tergantung dari siklus

(cycle) yang diperlukan, besarnya frekuensi osilator, serta pembagi frekuensi osilator utama

yang digunakan. Perhitungan waktu instruksi setiap cyclenya adalah sebagai berikut:

t tiap cycle = 12 / f osilator

Sedangkan besarnya waktu untuk tiap instruksi bergantung pada jumlah siklus yang

dibutuhkan instruksi tersebut.

Untuk beberapa kasus, potongan program delay dibutuhkan untuk memberikan jeda,

karena kecepatan instruksi lebih cepat dari kemampuan manusia untuk merespon keadaan.

Berikut ini merupakan program yang menggunakan delay di dalamnya.

PERCOBAAN 1.4: PORT 1 DENGAN DELAY

Persiapan:

Hubungkan ”PORT1” DT-51 MinSys dengan “PORT OUTPUT” DT-51 Trainer Board menggunakan kabel tipe Y.

Hubungkan ”CONTROL” DT-51 MinSys dengan ”CONTROL” DT-51 Trainer Board (sebagai tegangan sumber) menggunakan kabel tipe X.

Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.

Hubungkan DT-51 MinSys dengan sumber tegangan.

Program 1.4:

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya (keterangan: ubah

posisi “SWITCH INPUT” masing-masing bit).

$mod51

;Membuat running led dengan delay dari DJNZ

CSEG

ORG 4000H

LJMP START

START: MOV A,#01H

MOV P1,A

LED1:

RL A

CJNE A,#10H,LED2

LCALL DELAY1

MOV P1,A

LJMP LED1

LED2: LCALL DELAY2

MOV P1,A

LJMP LED1

DELAY1:

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan1: Basic Input/ Output

Fakultas Ilmu Komputer – Universitas Brawijaya

11

MOV R7,#0C8H ;200

LUP1: MOV R6,#64H ;100

LUP2: MOV R5,#64H ;100

DJNZ R5,$

DJNZ R6,LUP2

DJNZ R7,LUP1

RET

DELAY2:

MOV R7,#32H ;50

LUP3: MOV R6,#64H ;100

LUP4: MOV R5,#64H ;100

DJNZ R5,$

DJNZ R6,LUP4

DJNZ R7,LUP3

RET

END

Program di atas menghasilkan dua jenis delay, jika diasumsikan frekuensi osilator adalah

12MHz maka secara perhitungan kasar pada program ini terdapat delay panjang sebesar 4

detik dan delay pendek sebesar 1 detik. (untuk frekuensi osilator real = 11,0592Mhz; delay

real 4,4 detik dan 1,1 detik)

Modifikasi program di atas sehingga pada setiap perpindahan output LED terdapat delay

panjang dan delay pendek yang sama, yaitu sebesar x detik. Nilai x ini bergantung pada

nomor kelompok Anda, dimana:

X = (No.Kelompok mod 10) +2

Analisis keluaran pada “OUTPUT LED DISPLAY” dan pengaruh dari setiap line program yang

Anda buat. Jelaskan perhitungan delay pada program yang Anda buat. Untuk

mempermudah perhitungan, Anda boleh menggunakan asumsi f=12Mhz.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 2: Timer/ Counter dan Interrupt

Fakultas Ilmu Komputer – Universitas Brawijaya

12

PERCOBAAN 2 TIMER/ COUNTER DAN INTERRUPT

DASAR PENGGUNAAN TIMER

TUJUAN PRAKTIKUM

Praktikan mampu membuat program menggunakan timer pada mikrokontroler 8051 dalam

berbagai variasi mode timer dan jenis timer.

DASAR TEORI

Dalam menggunakan timer, kita memerlukan setting beberapa register yang terkait dengan

timer sehingga timer bisa bekerja sesuai dengan keinginan kita. Berikut ini adalah

penjelasan mengenai register yang akan digunakan.

TMOD

Register ini terdiri dari 8 bit dan tidak bit-addressable. Empat bit pertama (LSB) pada

register ini digunakan untuk mengatur timer 0, dan empat bit selanjutnya (MSB) digunakan

untuk mengatur timer 1.

MSB LSB

GATE(1) C/~T(1) M1(1) M0(1) GATE(0) C/~T(0) M1(0) M0(0)

Timer 1 | Timer 0

Simbol Fungsi

GATE(X) Jika bit ini bernilai “1”, timer yang bersangkutan akan dimulai jika (~INTX dan

TRX) = 1. Sedangkan jika bit ini bernilai “0”, timer yang bersangkutan akan

dimulai jika TRX=1.

C/~T(X) JIka bit ini bernilai “1”, maka fungsi yang dijalankan adalah counter, yaitu

timer yang bersangkutan akan di-increment setiap transisi “1” ke”0” pada pin

TX. Sedangkan jika bit ini bernilai “0” maka fungsi yang dijalankan adalah

timer, yaitu timer akan di-increment 1 setiap siklus mesin. Kedua fungsi ini

hanya akan berjalan jika TRX diset “1”.

M1(X)/M0(x) Bit ini menentukan mode operasi timer. Lihat pada bit di bawah.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 2: Timer/ Counter dan Interrupt

Fakultas Ilmu Komputer – Universitas Brawijaya

13

M1 M0 Mode Mode Kerja

0 0 0 Timer 13 bit.

0 1 1 Timer 16 bit

1 0 2 Auto-reload 8 bit

1 1 3 Split timer

TCON

Register ini terdiri dari 8 bit dan dapat diakses per-bit. Sesuai namanya register ini

merupakan kendali dari timer yang berfungsi untuk mengendalikan kapan timer bekerja,

menandakan ketika adanya overflow ataupun penunjuk jika terjadi interupsi pada timer.

MSB LSB

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Simbol Fungsi

TF(x) Bit ini secara otomatis diset bernilai “1” jika Timer(x) overflow. Bit ini juga

memicu interrupt pada Timer(x). Bit ini secara otomatis diset bernilai “0”

ketika interupsi timer(x) dieksekusi atau bisa juga dilakukan secara manual

melalui program.

TR(x) Bit ini berfungsi untuk penanda dimulainya Timer(x). Set bit ini ke nilai”1” jika

ingin menjalankan Timer(x).

IE(x) Bit ini diset secara otomatis oleh mikrokontroller untuk mengindikasikan

terjadi kondisi interupsi eksternal(x). Perubahan bit ini bisa dipicu oleh

transisi 1-0 (falling edge) dari port INT(x) atau ketika INT(x) berlogika 0, hal ini

ditentukan oleh konfigurasi IT(x). Jika bit ini bernilai “1” maka rutin dari

vector Interupsi Eksternal(x) akan dieksekusi. Bit ini secara otomatis akan

dihapus jika interupsi terjadi.

IT(x) Bit ini digunakan untuk konfigurasi apakah interupsi eksternal akan terjadi

saat pint INT(x) pada transisi 1-0 atau ketika berlogika “0”. Jika bit ini bernilai

“1” interupsi eksternal aka terjadi ketika transisi 1-0.

TH(x) dan TL(x)

TH(x) dan (TL(x) merupakan sepasang register yang digunakan untuk menampung nilai yang

dibutuhkan untuk timer. Penggunaannya bergantung pada mode timer yang digunakan. Jika

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 2: Timer/ Counter dan Interrupt

Fakultas Ilmu Komputer – Universitas Brawijaya

14

mode 16 bit timer, maka nilai TH(x) dan TL(x) dipakai untuk nilai awal timer yang kemudian

setiap satu cycle akan ditambah 1 hingga mencapai overflow (peralihan dari FFFFH

0000H). Jika mode 8 bit autoreload maka hanya nilai TH(x) yang ditambah setiap waktu

sedangkan nilai TL(x) akan diisikan ke TH(x) jika terjadi overflow dan lain sebagainya.Untuk

lengkapnya silahkan baca datasheet 8051.

PERINTAH YANG DIGUNAKAN

MOV

CLR, SETB

LJMP, JNB, CJNE, JB

INC

ACALL, RET

PUSH, PULL

SPECIAL FUNCTION REGISTER YANG DIGUNAKAN

TMOD

TCON

THx

TLx

SP

PERCOBAAN 2.1 : TIMER/COUNTER 0 SEBAGAI TIMER MODE 0/1

Persiapan

Hubungkan PORT1 DT-51 MinSys dengan ”PORT OUTPUT” DT-51 Trainer Board menggunakan kabel tipe Y.

Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board ( sebagai sumber tegangan ) menggunakan kabel tipe X.

Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.

Hubungkan DT-51 MinSys dengan sumber tegangan.

Program 2.1

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya.

$MOD51

ORG 4000H

LJMP START

START:

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 2: Timer/ Counter dan Interrupt

Fakultas Ilmu Komputer – Universitas Brawijaya

15

MOV R0,#00H

MOV P1,#0FFH

CLR P1.4

INITTIM: MOV TMOD,#01H

MOV TH0,#0D8H

MOV TL0,#0EFH

SETB TR0

MOV A,#0FFH

CHECK: JNB TF0,CHECK

LCALL RELOAD

LJMP PENGALI

PENGALI: INC R0

CJNE R0,#32H,CHECK

MOV R0,#00H

LJMP LED

LED: CJNE A,#00H,NYALA

LJMP MATI

MATI: CLR P1.4

MOV A,#0FFH

LJMP CHECK

NYALA: SETB P1.4

MOV A,#00H

LJMP CHECK

RELOAD: CLR TR0

MOV TH0,#0D8H

MOV TL0,#0EFH

CLR TF0

SETB TR0

RET

END

Tugas 2.1

Modifikasi program di atas sehingga antara 4bit LSB dengan 4 bit MSB berkedip secara

bergantian dengan waktu periode kedip LED berkisar x detik, dimana x = (modulus 9 dari

no.grup) + 1; asumsikan frekuensi clock 12MHz. (Petunjuk: perhatikan cara kerja nilai

pengali dan nilai register TH/TX serta clock divider yang terdapat pada mikrokontroler).

PERCOBAAN 2.2: TIMER/COUNTER 0 SEBAGAI COUNTER MODE 2 (8-BIT

AUTORELOAD)

Persiapan

Hubungkan PORT1 DT-51 MinSys dengan ”PORT OUTPUT” DT-51 Trainer Board

menggunakan kabel tipe Y.

Hubungkan IS3 dengan T0 pada DT-51 Trainer Board.

Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board

menggunakan kabel tipe X.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 2: Timer/ Counter dan Interrupt

Fakultas Ilmu Komputer – Universitas Brawijaya

16

Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.

Hubungkan DT-51 MinSys dengan sumber tegangan.

Program 2.2

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya. Keterangan: Tekan

tombol IS3 beberapa kali dan perhatikan keluaran pada “OUTPUT LED DISPLAY”.

$mod51

CSEG

ORG 4000H

LJMP START

START:

INITCO: MOV TMOD, #06H

MOV TH0, #0FBH

MOV TL0, #0FBH

CLR TF0

MOV A, #00H

SETB TR0

LED1: MOV A, TL0

SUBB A, #0FBH

JB TF0, LED2

MOV P1, A

LJMP LED1

LED2: MOV P1, #0FFH

ACALL DELAY

LJMP START

DELAY: MOV R7, #04H

LUP1: MOV R6, #0FFH

LUP2: MOV R5, #0FFH

DJNZ R5, $

DJNZ R6, LUP2

DJNZ R7, LUP1

RET

END

Tugas 2.2

Modifikasi program diatas sehingga momen LED menyala semua sejenak adalah ketika

tombol ditekan sejumlah x kali, dimana x = (modulus 9 dari no.grup) + 1. Untuk referensi

jumlah penekanan tombol lihat representasi biner dari jumlah penekanan yang ada pada

”OUTPUT LED DISPLAY”.

DASAR PENGGUNAAN INTERUPT

TUJUAN PRAKTIKUM

Praktikan mampu membuat program dengan memanfaatkan fasilitas interupsi yang

tersedia pada mikrokontroler

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 2: Timer/ Counter dan Interrupt

Fakultas Ilmu Komputer – Universitas Brawijaya

17

DASAR TEORI

Dalam menggunakan interupsi, ada beberapa register yang dimanfaatkan untuk rpses

pengaturan jalannya interupsi. Penjelasan singkatnya adalah sebagai berikut:

IE (Interupt Enable)

Register ini terdiri dari 8 biat dan bit addressable, register ini digunakan untuk

mengaktifkan register yang kita inginkan yang terdapat pada mikrokontroler.

MSB LSB

EA - - ES ET1 EX1 ET0 EX0

Simbol Fungsi

EA Jika kita ingin menggunakan fasilitas interupsi, maka bit ini harus diset pertama

kali. Jika bit ini bernilai”0” tidak akan ada interupsi yang bisa terjadi.

ES Bit ini digunakan untuk mengaktifkan Interupsi Serial Port. Jika bernilai “1” maka

rutin Interupsi Serial (0023H) akan dipanggil ketika bit TI atau RI bernilai “1”.

ET(x) Bit ini digunakan untuk mengaktifkan interupsi Timer(x). Jika bernilai “1” rutin

interupsi timer akan dipanggil ketika bit TF(x) bernilai 1.

EX(x) Bit ini digunakan untuk mengaktifkan interupsi External(x). Jika bernilai “1” rutin

interupsi eksternal akan dipanggil ketika bit IE(x) bernilai “1”.

IP (Interrupt Priority)

Register ini terdiri dari 8 bit dan bit addressable, register ini digunakan untuk memilih

prioritas interupsi, interupsi dengan prioritas lebih tinggi akan dieksekusi terlebih dahulu

jika terjadi 2 interupsi pada waktu yang sama.

MSB LSB

- - PT2 PS PT1 PX1 PT0 PX0

Simbol Fungsi

PT(x) Timer 2 Interrupt Priority. 0=Low Priority, 1=High Priority.

PS Serial Interrupt Priority. 0=Low Priority, 1=High Priority.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 2: Timer/ Counter dan Interrupt

Fakultas Ilmu Komputer – Universitas Brawijaya

18

PX(x) 0=Low Priority, 1=High Priority.

PERCOBAAN 2.3: PENGGUNAAN INT0 DENGAN INTERRUPT ENABLE

Persiapan

Hubungkan PORT1 DT-51 MinSys dengan “PORT OUTPUT” DT-51 Trainer Board

menggunakan kabel tipe Y.

Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board

(sebagai sumber tegangan dan koneksi INT0/INT1) menggunakan kabel tipe X.

Hubungkan IS1 dengan INT0 pada DT-51 Trainer Board.

Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.

Hubungkan DT-51 MinSys dengan sumber tegangan.

Program 2.3

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya.

$mod51

CSEG

ORG 4000H

LJMP START

ORG 4003H

INTER: RL A

MOV P1, A

MOV R7, #04H

RETI

START:

INITINT: MOV TCON, #01H

MOV A, #01H

MOV P1, #01H

MOV IE, #81H

SJMP $

END

Catatan:

Untuk menggunakan INT0 dengan falling edge trigger (transisi dari high ke low), maka IT0 (TCON.0) berlogika “1”, sehingga TCON bernilai “00000001b” atau “01h”.

Untuk mengaktifkan interrupt, maka EX0 (IE.0) dan EA (IE.7) berlogika “1” sehingga IE bernilai “10000001b” atau “81h”.

Perhatikan bahwa pada saat interrupt, program akan melompat ke alamat vektor 0003h, tetapi oleh DT-51 MinSys akan langsung dipindah ke alamat 4003h.

Tugas 2.3

Buatlah program untuk menampilkan LED di PORTA dengan IS1 yang dihubungkan ke INT0

pada DT-51 Trainer Board dengan syarat:

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 2: Timer/ Counter dan Interrupt

Fakultas Ilmu Komputer – Universitas Brawijaya

19

Pada kondisi awal, BIT7, BIT6, BIT1 dan BIT0 pada “OUTPUT LED DISPLAY” menyala.

Interrupt trigger bersifat falling edge.

Jika terjadi interrupt, BIT5, BIT4, BIT3 dan BIT2 pada “OUTPUT LED DISPLAY” menyala sejenak.

Setelah interrupt selesai, kondisi “OUTPUT LED DISPLAY” kembali pada kondisi awal.

PERCOBAAN 2.4: PENGGUNAAN INT0 DAN INT1 DENGAN INTERRUPT

PRIORITY

Persiapan:

Hubungkan PORT1 DT-51 MinSys dengan “PORT OUTPUT” DT-51 Trainer Board

menggunakan kabel tipe Y.

Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board

(sebagai sumber tegangan dan koneksi INT0/INT1) menggunakan kabel tipe X.

Hubungkan IS1 dengan INT0 dan IS2 dengan INT1 pada DT-51 Trainer Board.

Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.

Hubungkan DT-51 MinSys dengan sumber tegangan.

Program 2.4

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya.

$mod51

CSEG

ORG 4000H

LJMP START

ORG 4003H

LJMP INTER0

ORG 4013H

LJMP INTER1

INTER0: MOV P1, #0H

SETB P1.0

LCALL LDELAY

CLR P1.0

RETI

INTER1: MOV P1, #0H

SETB P1.7

LCALL LDELAY

CLR P1.7

RETI

LDELAY: PUSH 7

PUSH 6

PUSH 5

MOV R7, #24H

LUPA: MOV R6, #0FFH

LUPB: MOV R5, #0FFH

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 2: Timer/ Counter dan Interrupt

Fakultas Ilmu Komputer – Universitas Brawijaya

20

DJNZ R5, $

DJNZ R6, LUPB

DJNZ R7, LUPA

POP 5

POP 6

POP 7

RET

SDELAY: PUSH 7

PUSH 6

PUSH 5

MOV R7, #04H

LUP1: MOV R6, #0FFH

LUP2: MOV R5, #0FFH

DJNZ R5, $

DJNZ R6, LUP2

DJNZ R7, LUP1

POP 5

POP 6

POP 7

RET

START:

;inisialisasi

MOV SP,#30H

MOV TCON, #05H

MOV IP, #04H

MOV IE, #85H

;program utama

MAIN:

MOV P1, #01010101B

ACALL SDELAY

MOV P1, #10101010B

ACALL SDELAY

SJMP MAIN

END

Jika tidak ada kesalahan, program tersebut akan menampilkan nyala LED yang bergantian

antara nyala LED ”Bit 6”, ”Bit 4”, ”Bit 2”, dan ”Bit 0” dengan nyala LED ”Bit 7”,”Bit 5”, ”Bit

3”, dan ”Bit 1”. Setiap kali ada penekanan tombol ”IS1”, hanya LED ”Bit 0” yang akan

menyala. Setiap kali ada penekanan tombol ”IS2”, hanya LED ”Bit 7” yang akan menyala.

Catatan:

Untuk menggunakan INT0 dan INT1 dengan falling edge trigger (transisi dari high ke low), maka IT1 (TCON.2) dan IT0 (TCON.0) berlogika “1”, sehingga TCON bernilai “00000101b” atau “05h”.

Untuk memindah INT1 ke tingkat prioritas lebih tinggi, maka PX1 (IP.2) berlogika “1”, sehingga IP bernilai “00000100b” atau “04h”.

Untuk mengaktifkan INT0 dan INT1, maka EX0 (IE.0), EX1 (IE.2), dan EA (IE.7) berlogika “1”, sehingga IE bernilai “10000101b” atau “85h”.

Rutin interrupt pada alamat vektor 4003h dan 4013h dipindah ke alamat lain dengan perintah LJMP. Hal ini dilakukan agar rutin dapat lebih panjang tanpa khawatir menerjang alamat vektor berikutnya.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 2: Timer/ Counter dan Interrupt

Fakultas Ilmu Komputer – Universitas Brawijaya

21

Perhatikan bahwa penekanan keypad ”IS2” dapat menginterupsi rutin dari penekanan keypad ”IS1” tetapi tidak dapat sebaliknya. Hal ini dikarenakan INT1 berada pada tingkat prioritas lebih tinggi. Jadi jika keypad ”IS1” ditekan setelah keypad ”IS2” ditekan, LED ”Bit 7” akan menyala hingga delay selesai dieksekusi baru kemudian LED ”Bit 0” akan menyala.

Perhatikan bahwa SDELAY menggunakan alamat yang sama dengan LDELAY. Untuk menghindari kekacauan nilai, maka diperlukan PUSH dan POP. Untuk keperluan ini, alamat 30H digunakan untuk inisialisasi SP.

Tugas 2.4

Buatlah program untuk menampilkan LED di PORTA dengan IS1 yang dihubungkan ke

”INT0” dan ”IS2” dihubungkan ke ”INT1” pada DT-51 Trainer Board dengan syarat :

Program utama akan menampilkan data ”0FFh” bergantian dengan data ”00h”.

Interrupt trigger bersifat falling edge dengan prioritas INT0.

Jika terjadi interrupt dari INT0, program akan menampilkan data ”99h” dan ”66h”

selama 3 detik. Setelah itu kembali ke program utama.

Jika terjadi interrupt dari INT1, program akan menampilkan data ”0Aah” dan ”55h”

selama 3 detik. Setelah itu kembali ke program utama.

Catatan:

Gunakan beberapa alamat atau variabel untuk menyimpan data-data tersebut.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

22

PERCOBAAN 3 AKSES SERIAL DAN REVIEW MODUL

DASAR KOMUNIKASI DENGAN AKSES SERIAL

TUJUAN

Praktikan mampu membuat program menggunakan serial port (DB9) dari DT-51 MinSys

sebagai jalur komunikasi dalam berbagai kecepatan, baik sebagai penerima data maupun

pengirim data.

DASAR TEORI

Dalam menggunakan fasilitas serial pada mikrokontroler, ada beberapa register yang

digunakan untuk pengaturan komunikasi serial tersebut. Penjelasan singkatnya adalah

sebagai berikut:

Register SCON (Serial Control)

Register ini terdiri dari 8 bit dan dapat diakses per-bit. Sesuai namanya register ini

merupakan kendali dari komunikasi yang berfungsi untuk menentukan mode kerja serial,

kapan komunikasi serial mulai beroperasi, mengendalikan interupsi pada serial dan

mengendalikan bit ke-9 pada komunikasi serial jika digunakan.

MSB LSB

SM0 SM1 SM2 REN TB8 RB8 TI RI

Simbol Fungsi

SM0/SM1 Serial Port Mode. 2 bit SM0 dan SM1 digunakan bersama-sama untuk memilih

mode komunikasi serial yang akan digunakan

SM0 SM1 Mode Serial Mode Kerja Baud Rate

0 0 0 Shift Register Clock Oscilator/12

0 1 1 8-bit UART Diset oleh timer

1 0 2 9-bit UART Clock Oscilator/32 atau /64

1 1 3 9-bit UART Diset oleh timer

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

23

Mode 0: “Shift Register|Oscilator/12”. Kirim/Terima Data terjadi pada RXD (P3.0),

sedangkan TXD (P3.1) adalah jalur clock. Tegangan jalur TXD akan beralih dari

high ke low setiap ada satu bit output pada RXD. Ketika menerima data, satu bit

masukan pada RXD terjadi setiap satu pulsa TXD.

Mode 1: “8-bit UART|Timer Based”. Keluaran serial ditransmisikan melalui TXD (P3.1)

dan masukan di RXD (P3.0). Data terdiri dari 10-bit, 1-bit sebagai start bit yang

selalu bernilai 0, 8-bit data yang diawali oleh bit LSB dan 1-bit sebagai stop bit

yang selalu bernilai 1. Baud rate ditentukan oleh timer.

Mode 2: “9-bit UART|Oscliator/32 atau /64”. Keluaran serial ditransmisikan melalui

TXD(P3.1) dan masukan di RXD(P3.0). Data terdiri dari word 11-bit, 1-bit sebagai

start bit yang selalu bernilai 0, 9-bit data yang diawali oleh bit LSB, 1-bit sebagai

stop bit yang selalu bernilai 1. Ketika mengirim, bit data ke-9 direpresentasikan

oleh nilai register “TB8”, sedangkan ketika menerima bit data ke-9 akan

disimpan pada register “RB8”. Baud rate merupakan 1/32 dari frekuensi

oscillator(1/64 jika bit SMOD adalah set).

Mode 3: “9-bit UART/Timer Based“. Sama seperti mode 2, tetapi baud rate berdasarkan

siklus overflow dari Timer 1.

SM2: “Komunikasi Multiprosesor”. Ketika set dan menggunakan Serial Mode 2 atau 3,

maka port serial beroperasi dalam mode multiprosesor. Pada mode ini, data

hanya diterima di register SBUF

REN: “Receive Enable”. Bit ini harus berstatus set untuk mendapatkan data melalui

port serial. Jika bit ini tidak set, data tidak akan diterima dalam SBUF, register RI

juga tdak akan set.

TB8: “Transmit Bit-8”. Ketika komunikasi serial dalam mode 2 dan 3, bit ini akan

menjadi bit data ke-9 yang akan ditransmisikan melalui port serial.

RB8: “Receive 8-bit”. Ketika komunikasi serial dalam mode 2 dan 3, bit ini akan

menyimpan bit data ke-9 yang akan diterima melalui port serial.

TI: “Transmit Interrupt”. Bit ini akan set ketika karakter sudah dikirimkan melalui

UART. Bit ini harus di clear oleh program sebelum pengiriman karakter

berikutnya melalui port serial.

RI: “Receive Interrupt”. Bit ini akan set ketika karakter sudah diterima oleh UART.

Ketika bit ini set, program bisa membaca nilai dari SBUF untuk mendapatkan

nilai dari byte yang diterima. Bit ini harus di clear segera setelah nilai dari SBUF

sudah dibaca.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

24

SBUF (Serial buffer)

Register ini digunakan sebagai penyimpanan sementara dari data yang akan dikirim atau

diterima dari port serial. Untuk menerima dan mengirim data menggunakan register ini

diperlukan konfigurasi register SCON yang sesuai dan juga konfigurasi timer jika digunakan

sebagai pembangkit baud rate.

PERCOBAAN 3.1: PENERIMAAN DATA DARI PC (SERIAL MODE 1)

Persiapan

Hubungkan PORT1 DT-51 MinSys dengan ”PORT OUTPUT” DT-51 Trainer Board menggunakan kabel tipe Y.

Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board (sebagai sumber tegangan) menggunakan kabel tipe X.

Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.

Hubungkan DT-51 MinSys dengan sumber tegangan.

Bukalah program Hyper Terminal dan aturlah kecepatan 9600 bit per second (bps) pada posisi serial port yang digunakan. Simpan dan tutuplah program tersebut.

Program 3.1

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya.

$mod51

CSEG

ORG 4000H

LJMP START

;interrupt penerimaan

ORG 4023H

CLR RI

MOV A, SBUF

MOV P1, A

RETI

START:

;inisialisasi

MOV SCON, #50H ;Serial Mode 1 dengan REN=1

MOV TMOD, #20H ;Timer1 pada Mode2

MOV TH1, #0FDH ;Baud rate =

MOV PCON, #00H ;9600 bps

SETB TR1 ;Hidupkan Timer1

SETB ES ;Aktivasi interupsi serial

SETB EA ;Aktivasi interupsi global

SJMP $

END

Setelah proses download ke DT-51 MinSys, jalankan program Hyper Terminal yang telah

dibuat. Kemudian tekan sembarang tombol pada keybord computer (misalnya, huruf “Z”,

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

25

“F”, angka “3” atau symbol “@”) dan perhatikan bahwa “OUTPUT LED DISPLAY” akan

menampilkan kode ASCII dari tombol keyboard yang ditekan.

Catatan :

Dalam menggunakan komunikasi serial Mode 1 untuk menerima data, maka SM0 (SCON.7)

pada SCON berlogika “0”, sedangkan SM1 (SCON.6) dan REN (SCON.4) berlogika “1”,

sehingga SCON bernilai “01010000b” atau “50h”.

Untuk menghasilkan baud rate 9600 bps menggunakan Timer 1, maka ada beberapa

register yang harus diberi nilai (diinisialisasi) :

Timer1 berada pada Mode 2 (M1 pada TMOD berlogika “1”, bit yang lain berlogika “0”) dan mengisi nilai “0FDh” pada TH1.

SMOD (PCON.7) pada PCON berlogika “0” sehingga PCON bernilai “00000000b” atau “00h”.

TR1 (TCON.6) berlogika “1” untuk mengaktifkan timer1.

Untuk mengaktifkan serial interrupt, ES (IE.4) dan EA (IE.7) berlogika “1”.

Tugas 3.1

Buatlah program untuk mengakses ”OUTPUT LED DISPLAY” melalui PORTA dengan syarat

berikut:

Semua led dimulai dari keadaan padam.

Atur komunikasi serial dalam mode 1 dengan kecepatan 19200 bps.

Aktifkan serial interrupt.

DT-51 MinSys akan menerima data dari PC (dari penekanan keyboard) dan menampilkan data tersebut ke led bergantian dengan komplemen data tersebut ke LED bergantian dengan komplemen data tersebut hingga ada data lain yang masuk. Misalkan data yang diterima “35h” atau “00110101b”, maka nyala led akan merepresentasikan/ menampilkan data “00110101b” dan “11001010b” secara bergantian.

Catatan :

Tambahkan prosedur delay untuk memperlama tampilan.

PERCOBAAN 3.2: PENGIRIMAN DATA KE PC

Persiapan

Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.

Hubungkan DT-51 MinSys dengan sumber tegangan.

Bukalah program Hyper Terminal dan aturlah kecepatan 19200 bps pada posisi serial port yang digunakan. Simpan dan tutuplah program tersebut.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

26

Program 3.2

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya.

$mod51

CSEG

ORG 4000H

LJMP START

;interrupt pengiriman

ORG 4023H

CLR TI

CJNE A, #39H, PLUS

MOV A, #30H

SJMP EXIT

PLUS: INC A

EXIT: RETI

DELAY: MOV R7, #0FFH

MOV R6, #0FFH

DJNZ R6, $

DJNZ R7, $

RET

START:

CLR ET1

MOV SCON, #40H ;Serial Mode 1 dengan REN=0

MOV TMOD, #20H

MOV TH1, #0FDH ;Baud rate =

MOV PCON, #80H ;19200 bps

SETB TR1

SETB ES

SETB EA

MOV A, #30H

ULANG: MOV SBUF, A

LCALL DELAY

SJMP ULANG

END

Setelah proses download ke DT-51 MinSys, jalankan program Hyper Terminal yang telah

dibuat. Jika semua tahap diikuti dengan benar, akan ditampilkan angka “0” sampai “9”

secara berulang-ulang pada jendela Hyper Terminal.

Catatan:

Untuk menggunakan komunikasi serial pada mode 1 hanya untuk mengirimkan data, maka

SM0 (SCON.7) dan REN(SCON.4) pada SCON berlogika “0”, sendangkan SM1 (SCON.6)

berlogika “1”, sehingga SCON bernilai “01000000b” atau “40h”.

Untuk menghasilkan baud rate 19200 bps menggunakan Timer 1, maka ada beberapa

register yang harus diberi nilai:

Timer1 berada pada Mode 2 (M1 pada TMOD berlogika “1”, bit yang lain berlogika “0”) dan mengisi nilai “0FDh” pada TH1.

SMOD (PCON.7) pada PCON berlogika “1” sehingga PCON bernilai “10000000b” atau “80h”

TR1 (TCON.6) berlogika “1” untuk mengaktifkan Timer1.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

27

Untuk mengaktifkan serial interrupt, ES (IE.4) dan EA (IE.7) berlogika “1”

Tugas 3.2

Buatlah program untuk menampilkan huruf “a” sampai “z” kemudian “A” sampai “Z” secara

berulang-ulang pada Hyper Terminal dengan syarat:

Atur komunikasi serial dalam mode 1 dengan kecepatan 9600 bps.

Aktifkan serial interrupt.

Catatan:

Tambahkan prosedur delay untuk memperlama tampilan.

PERCOBAAN 3.3: PENGIRIMAN DAN PENERIMAAN DATA KE PC

Persiapan

Hubungkan PORT1 DT-51 MinSys dengan “PORT OUTPUT” DT-51 Trainer Board mengunakan kabel tipe Y.

Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board (Sebagai sumber tegangan) mengunakan kabel tipe X.

Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.

Hubungkan DT-51 MinSys dengan sumber tegangan.

Bukalah program Hyper Terminal dan aturlah kecepatan 960 bps pada posisi serial port yang digunakan. Simpan dan tutuplah program tersebut.

Program 3.3

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya.

$mod51

CSEG

ORG 4000H

LJMP START

;interrupt penerimaan

ORG 4023H

CLR RI

MOV A, SBUF

MOV P1, A

;mengirimkan data ke PC

MOV SBUF, A

JNB TI, $

CLR TI

RETI

;interrupt diaktifkan dan serial berada pada mode 1

;dengan REN = 1

START:

MOV SCON, #50H

;inisialisasi baud rate (9600 bps)

MOV TMOD, #20H

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

28

MOV TL1, #0FDH

MOV TH1, #0FDH

MOV PCON, #00H

SETB TR1

SETB ES

SETB EA

SJMP $

END

Setelah proses download ke DT-51 MinSys, jalankan program Hyper Terminal yang telah

dibuat. Seperti pada Percobaan 3.1, perhatikan “OUTPUT LED DISPLAY” ketika sembarang

tombol keyboard komputer ditekan. Namun, pada Percobaan 3.3 ini, data (yang

bersesuaian dengan tombol keyboard yang ditekan) tadi akan dikirimkan balik ke PC dan

muncul pada jendela Hyper Terminal.

Catatan:

Untuk menggunakan komunikasi serial pada mode 1 untuk menerima data, maka SM0

(SCON.7) pada SCON berlogika “0”, sedangkan SM1 (SCON.6) dan REN (SCON.4) berlogika

“1”, sehingga SCON bernilai “01010000b” atau “50h”.

Untuk menghasilkan baud rate 9600 bps menggunakan Timer 1, maka ada beberapa

register yang harus diberi nilai:

Timer1 berada pada Mode 2 (M1 pada TMOD berlogika “1”, bit yang lain berlogika “0”) dan mengisi nilai “0FDh” ada TH1.

SMOD (PCON.7) pada PCON berlogika “0” sehingga PCON bernilai “00000000b” atau “00h”.

TR1 (TCON.6) berlogika “1” untuk mengaktifkan Timer.

Untuk mengaktifkan serial interrupt, ES (IE.3) dan EA (IE.7) berlogika “1”.

Tugas 3.3:

Buatlah program untuk komunikasi serial dengan syarat:

Semua led pada “OUTPUT LED DISPLAY” (penggunaan port bebas) dimulai dari

keadaan padam.

Atur komunikasi serial dalam mode 1 dengan kecepatan 19200 bps.

Aktifkan serial interrupt.

DT-51 MinSys akan menerima 2 set data dari PC, menampilkannya di “OUTPUT LED

DISPLAY”, dan mengirimnya kembali secara terbalik. Misalkan data yang diterima

berturut-turut adalah “30h” dan 31h”. LED akan menampilkan data “30h”

kemudian “31h”. Data yang dikirimkan dan ditampilkan di PC secara berturut-turut

adalah “31h” dan “30h”.

Catatan:

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

29

Gunakan beberapa register bantu untuk membalik urutan data.

Gunakan delay untuk memperlama tampilan LED.

REVIEW MATERI PRAKTIKUM SISMIK

TUJUAN

Praktikan mampu memanfaatkan pengetahuan dari praktikum sebelumnya untuk membuat

program yang memanfaatkan secara bersama-sama fasilitas yang disediakan oleh

mikrokontroler.

Tugas 3.4

Buatlah sebuah program yang berfungsi untuk memeriksa password atau kata kunci yang

diberikan melalui komunikasi serial dan toggle switch (SWITCH INPUT) dengan spesifikasi

sebagai berikut:

Ada dua buah kata kunci yang akan diberikan kepada sistem;

Pada saat idle, menjalankan program running led;

Jika sebuah tombol ditekan, maka sistem akan berpindah pada mode menerima kata kunci 1;

Pada mode kata kunci 1, sistem hanya menyediakan waktu 5 detik untuk menerima input dari switch toogle. Sementara itu, “OUTPUT LED DISPLAY” akan merepresentasikan kenaikan waktu per-detik (dimulai dari detik ke-nol) dengan nyala led yang terus bertambah (dari hanya nyala led Bit0, lalu Bit0 dan Bit1 hingga led Bit0 sampaidengan Bit5 menyala). Setelah 5 detik berlalu, program mengecek apakah kata kunci yang direpresentasikan dengan switch toggle adalah benar atau salah? Jika salah, akan kembali ke program running led;

Jika kata kunci 1 benar, semua led pada “OUTPUT LED DISPLAY” akan menyala sejenak kemudian mati;

Setelah itu sistem akan berpindah pada mode counter;

Pada mode counter, ada sebuah tombol yang digunakan sebagai penghitung. Jika tombol itu ditekan sebanyak 5 kali, maka program akan berpindah ke mode kata kunci 2. Setiap representasi biner dari jumlah penekanan tombol ditampilkan pada “OUTPUT LED DISPLAY”;

Pada mode kata kunci 2, sistem akan menerima input dari komunikasi serial dalam jangka waktu 5 detik juga. Sementara itu, “OUTPUT LED DISPLAY” akan merepresentasikan kenaikan waktu per-detik (dimulai dari detik ke-nol) dengan nyala led yang terus bertambah (dari hanya nyala led Bit0, lalu Bit0 dan Bit1 hingga led Bit0 sampaidengan Bit5 menyala). Setelah 5 detik berlalu, program mengecek apakah kata kunci yang direpresentasikan dengan switch toggle adalah benar atau salah? Jika salah, akan kembali ke program running led;

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

30

Jika kata kunci 2 benar, program akan membuat seluruh led pada “OUTPUT LED DISPLAY” nyala dan mati, bergantian tiap detik, sebanyak 2 kali . Setelah itu kembali pada program running led.

Catatan:

Port, mode timer dan kombinasi kata kuci yang digunakan bebas.

Buatlah keterangan/ komentar pada program yang dibuat sehingga setiap bagian program tersebut dapat dengan mudah dipahami;

Kerjakanlah tugas di atas secara berurutan. Dengan demikian, jika tugas tersebut tidak selesai dikerjakan, asisten masih mungkin memberikan penilaian;

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

31

PERCOBAAN 4 7 SEGMENT, KEYPAD DAN LCD DOT MATRIKS

DASAR PEMAKAIAN 7-SEGMENT DAN KEYPAD

TUJUAN PRAKTIKUM

Praktikan mampu membuat program menggunakan teknik scanning seven segment dan

scanning keypad pada DT-51 MinSys.

DASAR TEORI

Scanning Seven Segment

Teknik scanning digunakan untuk menghemat penggunaan input/ output port. Scanning

seven segment sebenarnya hanyalah suatu proses untuk menyalakan satu seven segment

pada satu saat. Karena ada lebih dari satu seven segment, seven segment tersebut menyala

bergantian secara cepat. Dengan cara tersebut di atas, seolah-olah semua seven segment

menyala pada waktu yang bersamaan. Lebar jalur data yang dibutuhkan = 8 bit (ket: 8bit

adalah lebar jalur data untuk satu seven segment) + n bit ( ket: n = jumlah seven segment ).

Untuk menyalakan seven segment 1 (DIGIT1) pada DT-51 Tutorial Board, maka DO1 (”I/P S

KEY” pin 9) harus diberi logika “0” (bersifat active low). Sedangkan untuk dapat menyalakan

seven segment 2 (DIGIT1) maka DO2 (”I/P S KEY” pin 10) harus diberi logika “0”.

Data seven segment pada rangkaian ini bersifat active high (logika “1” = nyala, logika “0” =

padam), dengan urutan dari MSB ke LSB adalah DP (titik), G, F, E, D, C, B, A.

Gambar 1 Seven Segment

Scanning Keypad

Scanning keypad sebenarnya hanyalah mengirimkan data output ke satu bagian keypad

(baris/ kolom) kemudian membaca perubahan input pada bagian tersebut (kolom/ baris)

keypad pada satu saat. Jika ada perubahan berarti telah terjadi penekanan keypad. Karena

ada lebih dari satu bagian (baris/ kolom), pembacaan dilakukan bergantian secara cepat.

Dengan cara seperti ini, seolah-olah semua keypad dibaca pada waktu yang bersamaan.

Lebar jalur data yang dibutuhkan = n bit (jumlah tombol keypad dalam satu baris) + m bit

(m = jumlah tombol keypad dalam satu kolom) .

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

32

DT-51 Tutorial Board memiliki keypad 2x2. Data output-nya adalah KBO1 (“I/P S KEY” pin 7)

dan KBO2 (“I/P S KEY” pin 8) dan bersifat active low. Sedangkan data input-nya adalah KBI1

(“I/P S KEY” pin 3) dan KBI2 (“I/P S KEY” pin 4) yang juga bersifat active low.

Scanning keypad dilakukan pertama-tama dengan mengaktifkan KBO1 (KBO1 berlogika “0”,

KBO2 berlogika “1”), kemudian memeriksa logika dari data input KBI1. Jika logikanya

berubah dari “1” ke “0” berarti ada penekanan keypad yang terletak antara KBO1 dan KBI1.

Selanjutnya KBI2 diperiksa; jika logikanya berubah dari “1” ke “0” berarti ada penekanan

keypad antara KBO1 dan KBI2. Setelah pemeriksaan selesai, data output berikutnya

diaktifkan, yaitu KBO2 (KBO1 berlogika “1”, KBO2 berlogika “0”). Kemudian tiap-tiap data

input-nya diperiksa, seperti pemeriksaan pada KBO1.

Gambar 2 Skematik Keypad 2x2 pada DT-51 Trainer Board

PERCOBAAN 4.1: SCANNING SEVEN SEGMENT

Persiapan

Hubungkan PORT1 DT-51 MinSys dengan “DATA 7S“ DT-51 Trainer Board menggunakan tipe Y.

Hubungkan PORTC DT-51 MinSys dengan “I/P S KEY“ DT-51 Trainer Board menggunakan kabel tipeY.

Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board (sebagai sumber tegangan) menggunakan kabel tipe X.

Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.

Hubungkan DT-51 MinSys dengan sumber tegangan.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

33

Program 4.1

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya.

$mod51

PORTC EQU 2002H

CW EQU 2003H

ANGKA5 EQU 6DH

ANGKA7 EQU 07H

CSEG

ORG 4000H

LJMP START

DELAY: MOV R6, #0FH

LUP: MOV R7, #0FFH

DJNZ R7, $

DJNZ R6, LUP

RET

START:

;mengaktifkan PPI (dalam hal ini adalah PORTC)

;lihat kembali Modul 1

MOV DPTR, #CW

MOV A, #80H

MOVX @DPTR, A

LOOP:

;menampilkan angka 5 di seven segment 1

MOV DPTR, #PORTC

MOV A, #80H

MOVX @DPTR, A

MOV P1, #ANGKA5

LCALL DELAY

;menampilkan angka 7 di seven segment 2

MOV A, #40H

MOVX @DPTR, A

MOV P1, #ANGKA7

LCALL DELAY

SJMP LOOP

END

Jika setiap tahap diikuti dengan benar, program tersebut akan menampilkan angka ”7” pada

seven segment 2 (DIGIT2) dan angka ”5” pada seven segment 1 (DIGIT1) secara serentak

tanpa berkedip.

Catatan :

Pada program tersebut, DO1 terhubung dengan PORTC bit ke-6 (PC.6) dan ”DO2” terhubung dengan PORTC bit ke-7 (PC.7).

Untuk menampilkan angka ”7” pada seven segment 2, maka DO2 berlogika “0” dan DO1 berlogika “1”. Data seven segment yang dikirimkan ke PORT1 bernilai “00000111b” atau “07h”.

Untuk menampilkan angka ”5” pada seven segment 2, maka DO2 berlogika “1” dan DO1 berlogika “0”. Data seven segment yang dikirimkan ke PORT1 bernilai “01101101b” atau “6Dh”.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

34

Perhatikan bahwa program diberi delay setiap kali setelah data dikirimkan ke seven segment. Hal ini dilakukan karena waktu akses PPI lebih lama dibandingkan dengan cycle mikrokontroler.

Tugas 4.1: Latihan Mandiri untuk Scanning Seven Segment

Buatlah program menggunakan seven segment (port yang digunakan bebas) dengan syarat:

Pada saat pertama kali program dijalankan, seven segment akan menampilkan angka ”00”.

Selang waktu kira-kira 3 detik, seven segment akan menampilkan angka ”10”.

Selang waktu kira-kira 3 detik, seven segment akan menampilkan angka ”32”.

Selang waktu kira-kira 3 detik, seven segment akan menampilkan angka ”54”.

Selang waktu kira-kira 3 detik, seven segment akan menampilkan angka ”76”.

Selang waktu kira-kira 3 detik, program kembali menampilkan ”00”.

PERCOBAAN 4.2: SCANNING KEYPAD

Persiapan

Hubungkan PORT1 DT-51 MinSys dengan “I/P S KEY” DT-51 Trainer Board menggunakan kabel tipe Y.

Hubungkan PORTA DT-51 MinSys dengan “PORT OUTPUT” DT-51 Trainer Board menggunakan kabel tipe Y.

Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board (sebagai sumber tegangan) menggunakan kabel tipe X.

Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.

Hubungkan DT-51 MinSys dengan sumber tegangan.

Program 4.2

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya.

$mod51

PORTA EQU 2000H

CW EQU 2003H

CSEG

ORG 4000H

LJMP START

DELAY: MOV R7, #0FFH

DJNZ R7, $

RET

START: MOV SP, #30H

MOV DPTR, #CW

MOV A, #81H

MOVX @DPTR, A

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

35

MOV DPTR, #PORTA

LOOP: MOVX @DPTR, A

LCALL DELAY

MOV A, #00H

;scanning key berada di baris 1 (KBO1)

MOV P1, #00101111B

;memeriksa penekanan tombol 1

JB P1.0, KEY3

SETB ACC.0

AJMP LOOP

;memeriksa penekanan tombol 3

KEY3: JB P1.1, INPUT2

SETB ACC.2

AJMP LOOP

;scanning key berada di baris 2 (KBO2)

INPUT2: MOV P1, #00011111B

;memeriksa penekanan tombol 2

JB P1.0, KEY4

SETB ACC.1

AJMP LOOP

;memeriksa penekanan tombol 4

KEY4: JB P1.1, LOOP

SETB ACC.3

AJMP LOOP

END

Jika setiap tahap diikuti dengan benar, program tersebut akan bekerja sebagai berikut:

Jika keypad 1 (KEY1) ditekan maka Bit0 pada ”OUTPUT LED DISPLAY” akan menyala sejenak.

Jika keypad 2 (KEY2) ditekan maka LED Bit1 pada ”OUTPUT LED DISPLAY” akan menyala sejenak.

Jika keypad 3 (KEY3) ditekan maka LED Bit2 pada ”OUTPUT LED DISPLAY” akan menyala sejenak.

Jika keypad 4 (KEY4) ditekan maka LED Bit3 pada ”OUTPUT LED DISPLAY” akan menyala sejenak.

Catatan:

Pada program tersebut,KBO1 terhubung dengan PORT1 bit ke-4 (P1.4) dan KBO2 terhubung dengan PORT1 bit ke-5 (P1.5). KBI1 terhubung dengan PORT1 bit ke-0 (P1.0) dan KBI2 terhubung dengan PORT1 bit ke-1 (P1.1). Program akan memeriksa pada data output baris bawah (KBO1 = “0” , KBO2 = “1”). Lalu memeriksa logika KBI1 (keypad 1). Jika KBI1 berlogika “0” berarti keypad 1 tersebut ditekan.

Jika keypad 1 tidak ditekan, program akan memeriksa logika KBI2 (keypad3). Jika KBI2 berlogika “0” berarti keypad 3 tersebut ditekan.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

36

Jika tidak ada penekanan keypad pada baris bawah, program akan memeriksa pada data output baris atas (KBO2 = “0”, KBO1 = “1”). Lalu memeriksa logika KBI1 (keypad 2).

Jika ”KBI1” berlogika “0” berarti keypad 2 tersebut ditekan. Jika keypad 1 tidak ditekan, program akan memeriksa logika KBI2 (keypad 4). Jika KBI2 berlogika “0” berarti keypad 4 tersebut ditekan.

Tugas 4.2: Latihan Mandiri Scanning Keypad

Buatlah program dengan menggunakan keypad dan seven segment.

Pada saat pertama kali program dijalankan, maka seven segment akan menampilkan angka ”00”.

Jika keypad pertama ditekan, maka seven segment akan menampilkan angka ”11”.

Jika keypad kedua ditekan, maka seven segment akan menampilkan angka ”22”.

Jika keypad ketiga ditekan, maka seven segment akan menampilkan angka ”33”.

Jika keypad keempat ditekan, maka seven segment akan menampilkan angka ”44”.

DASAR PEMAKAIAN LCD

TUJUAN PRAKTIKUM

Praktikan mampu membuat program untuk menampilkan karakter ke layar LCD dengan

menggunakan “PORT LCD” dan rutin-rutin pada DT-51 MinSys. Praktikan mampu membuat

kreasi karakter sendiri dan menampilkannya pada layar LCD.

DASAR TEORI

DT-51 memiliki rutin-rutin yang dapat langsung digunakan untuk menampilkan karakter ke

layar LCD. Rutin-rutin tersebut adalah:

CBF (0715h)

Fungsi CBF adalah untuk memeriksa Busy Flag LCD jika LCD akan diakses secara manual

tanpa menggunakan rutin-rutin. Jika menggunakan rutin-rutin DT-51 MinSys, tidak perlu

lagi mengakses CBF.

InitLCD (0740h)

Rutin ini digunakan untuk menginisialisasi LCD sebelum menggunakan LCD.

CommandLCD (070h)

Rutin ini digunakan untuk memberikan perintah pada LCD. Rutin CommandLCD dipanggil

setelah kita mengisi Accumulator dengan nilai command word (perintah). Ada beberapa

command word yang memiliki nilai tersendiri seperti dalam tabel 3.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

37

Tabel 1 Daftar Command Word

Command word Nilai Fungsi

Display Clear 01h Menghapus semua tampilan di LCD.

Cursor Home 02h Meletakkan kursor dan tampilkan pada posisi awal.

Dee Cursor 04h Kursos decrement setiap kali selesai menulis atau membaca LCD.

Inc Cursor 06h Kursos increment setiap kali selesai menulis atau membaca LCD.

CDDSR 05h Kursor decrement dan tampilan bergeser ke kanan setiap kali selesai menulis atau membaca LCD

ICDSL 07h Kursor increment dan tampilan bergeser ke kiri setiap kali selesai menulis atau membaca LCD

Display off 08h Memadamkan layar LCD, tampilan dapat muncul kembali jika ada perintah untuk menyalakan layar (dapat dilihat di manual LCD). Tetapi dari command word yang ada disini, mengakses kursor (memadamkan, menghidupkan, atau blinking) dapat digunakan untuk menyalakan layar. Selama layar padam, LCD masih dapat ditulisi tapi tidak menampilkan apa-apa.

CursorOff 0Ch Memadamkan kursor

CursorOn 0Eh Menghidupkan kursor.

CursorBlink 0Fh Kursor menjadi blinking (berkedip).

CurShLeft 10h Menggeser kursor ke kiri

CurShRight Menggeser kursor ke kanan.

DispShLeft 18h Menggeser tampilan ke kiri.

DispShRight 1Ch Menggeser tampilan ke kanan.

WriteLCD(07D0h)

Rutin ini berfungsi untuk menuliskan karakter ke LCD. Kode karakter disimpan pada

Accumulator. Karakter pada LCD membutuhkan 8 bit data. Karena DT-51 MinSys

menggunakan mode 4 bit, maka seharusnya kita mengirimkan dua set data untuk

menampilkan satu karakter. Dengan adanya rutin ini, kita tidak perlu mengirimkan dua set

data. Untuk menampilkan satu karakter kita cukup mengisi Accumulator satu kali dengan

karakter yang diinginkan.

Kode DDRAM(Display Data Random Access Memory) dari setiap karakter dapat dilihat pada

manual LCD. Jika tidak ada, maka table 4 memuat table referensi dari manual LCD buatan

Seiko Instruments, Inc. Tabel ini hanya memuat karakter yang umum digunakan (LCD Seiko

juga dapat menampilkan karakter Jepang, Yunani, dan karakter lain yang jarang digunakan.

Alamat “00000000h” sampai “0000FFFFh”digunakan untuk menyimpan 8 karakter CGRAM

(Character Generator Random Access Memory). Karena yang digunakan hanya 3 bit

terakhir, maka alamat “00000000h” sama dengan alamat “00001000h”. Bagian kosong

pada kolom “Upper 0010” memang berupa karakter “spasi”.

Jika ingin menampilkan huruf J, Accumulator diberi nilai “01001010b” atau “4Ah” dan

memanggil rutin WriteLCD. Sebagian dari karakter di tabel sama dengan karakter ASCII,

sehingga tidak menutup kemungkinan untuk menampilkan karakter lain.

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

38

Tabel 2 Kode Data DDRAM

Upper Lower

0000 0010 0011 0100 0101 0110 0111

xxxx 0000

(1) 0 @ P ` p

xxxx 0001

(2) . 1 A Q a q

xxxx 0010

(3) “ 2 B R b r

xxxx 0011

(4) # 3 C S c s

xxxx 0100

(5) $ 4 D T d t

xxxx 0101

(6) % 5 E U e u

xxxx 0110

(7) & 6 F V f v

xxxx 0111

(8) “ 7 G W g w

xxxx 1000

(1) ( 8 H X h x

xxxx 1001

(2) ) 9 I Y i y

xxxx 1010

(3) * : J Z j z

xxxx 1011

(4) + ; K [ k {

xxxx 1100

(5) , < L ¥ l |

xxxx 1101

(6) - = M ] m }

xxxx 1110

(7) . > N ^ n →

xxxx 1111

(8) / ? O _ o ←

ReadLCD (07F0h)

Rutin ini berfungsi untuk membaca karakter dari LCD atau CGRAM kemudian

memindahkannya ke Accumulator. Pembacaan karakter dari LCD didahului dengan

penentuan alamat DDRAM yang diinginkan dan pemanggilan rutin SetDDRAM. Sedangkan

pembacaan karakter dari CGRAM didahului dengan penentuan alamat CGRAM yang

diinginkan dan pemanggilan rutin SetCGRAM.

ReadAddrLCD (0820h)

Rutin ini berfungsi untuk membaca alamat LCD atau CGRAM kemudian memindahkannya

ke Accumulator. Pembacaan alamat dari LCD didahului dengan penentuan alamat yang

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

39

diinginkan dan pemanggilan rutin SetDDRAM. Sedangkan pembacaan alamat dari CGRAM

didahului dengan penentuan alamat yang diinginkan dan pemanggilan rutin SetCGRAM.

SetDDRAM (0850h)

Rutin ini berfungsi untuk menentukan alamat DDRAM pada alamat tertentu yang terdapat

pada Accumulator sebelum memulai menulis atau membaca LCD. Alamat DDRAM adalah

alamat pada tampilan LCD.

Konfigurasi alamat DDRAM untuk dua baris adalah sebagai berikut:

Display baris I : 00h – 27h

Display baris II : 40h – 67h

Jika LCD yang ada berformat 16 x 2, maka pada baris I adalah alamat DDRAM “00h – 0Fh”

dan baris II adalah alamat “40h – 4Fh”. Jika display digeser ke kiri satu kali, maka yang

tampil pada baris I adalah alamat “01h – 10h” dan baris II adalah alamat “41h – 50h”.

SetCGRAM (0870h)

Rutin ini berfungsi untuk menentukan alamat CGRAM sebelum memulai menulis atau

membaca pada CGRAM. Alamat tersebut disimpan pada Accumulator. Alamat CGRAM

adalah alamat per baris pada setiap kotak tampilan. Satu karakter memiliki 8 alamat

CGRAM (7 baris untuk karakter dan 1 baris terakhir umumnya untuk kursor) yang masing-

masing datanya selebar 8 bit. Tetapi dari 8 bit tersebut, yang digunakan hanya 5 bit LSB (bit

4 – bit 0). Karakter I dan E pada program “TESLCD” DT-51 MinSys juga menggunakan

CGRAM.

Konfigurasi alamat CGRAM terdapat pada “00h – 3Fh” (karena alamat CGRAM hanya

selebar 6 bit) dengan kemampuan untuk menampung 8 karakter (1 karakter butuh 8

a1amat). Satu contoh untuk membuat karakter “I” dan “E” pada alamat DDRAM “00h” dan

“01h” akan diberikan pada tabel 5.

Tabel 3 Contoh Data CGRAM

Data DDRAM Alamat CGRAM Data CGRAM

0 0 0 0 * 0 0 0 0 0 0

0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

40

0 0 0 0 * 0 0 1 0 0 1

0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0

Jadi untuk membuat karakter sendiri, yang pertama dilakukan adalah menentukan alamat

CGRAM, kemudian diisi dengan dengan data CGRAM. Penampilan karakter tersebut

dilakukan dengan mengisi Accumulator dengan data DDRAM (bernilai antara “00h – 0Fh”

pada tabel 4) lalu memanggil perintah WRITELCD.

PERCOBAAN 4.3: PENAMPILAN KARAKTER DAN VARIASINYA

Persiapan:

Hubungkan “PORT LCD” DT-51 MinSys dengan modul LCD.

Hubungkan CONTROL DT-51 MinSys dengan CONTROL DT-51 Trainer Board (sebagai sumber tegangan) menggunakan kabel tipe X.

Hubungkan DT-51 MinSys dengan PC menggunakan kabel serial.

Hubungkan DT-51 MinSys dengan sumber tegangan.

Program 4.3.1

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya.

$mod51

;built-in routine

INITLCD EQU 0740H

COMMANDLCD EQU 07B0H

WRITELCD EQU 07D0H

;command word

CURSORHOME EQU 02H

DISPLAYOFF EQU 08H

CURSOROFF EQU 0CH

CURSORON EQU 0EH

CURSORBLINK EQU 0FH

CURSHLEFT EQU 10H

CURSHRIGHT EQU 14H

DISPSHLEFT EQU 18H

DISPSHRIGHT EQU 1CH

CSEG

ORG 4000H

LJMP START

ORG 4100H

LDELAY:

MOV R7, #08H

LOP1: MOV R6, #0FFH

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

41

LOP2: MOV R5, #0FFH

DJNZ R5, $

DJNZ R6, LOP2

DJNZ R7, LOP1

RET

START:

LCALL INITLCD

LCALL LDELAY

;menampilkan "ABC"

MOV A, #41H

LCALL WRITELCD

LCALL LDELAY

MOV A, #42H

LCALL WRITELCD

LCALL LDELAY

MOV A, #43H

LCALL WRITELCD

LCALL LDELAY

;menampilkan kursor blinking

MOV A, #CURSORBLINK

LCALL COMMANDLCD

LCALL LDELAY

;memadamkan kursor

MOV A, #CURSOROFF

LCALL COMMANDLCD

LCALL LDELAY

;menampilkan kursor

MOV A, #CURSORON

LCALL COMMANDLCD

LCALL LDELAY

;memadamkan display

MOV A, #DISPLAYOFF

LCALL COMMANDLCD

LCALL LDELAY

;menyalakan tampilan dengan mengakses kursor

MOV A, #CURSORON

LCALL COMMANDLCD

LCALL LDELAY

;menggeser kursor ke kanan

MOV A, #CURSHRIGHT

LCALL COMMANDLCD

LCALL LDELAY

;menggeser kursor ke kiri

MOV A, #CURSHLEFT

LCALL COMMANDLCD

LCALL LDELAY

;meletakkan kursor pada posisi awal

MOV A, #CURSORHOME

LCALL COMMANDLCD

LCALL LDELAY

;menggeser display ke kanan 1 kali

MOV A, #DISPSHRIGHT

LCALL COMMANDLCD

LCALL LDELAY

;menggeser display ke kiri 2 kali

MOV A, #DISPSHLEFT

LCALL COMMANDLCD

LCALL LDELAY

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

42

MOV A, #DISPSHLEFT

LCALL COMMANDLCD

SJMP $

END

Jika setiap tahap diikuti dengan benar, program tersebut akan bekerja sebagaimana yang

sudah tercantum pada komentar di awal masing-masing bagian.

Catatan:

Perhatikan bahwa meskipun layar LCD dipadamkan, karakter “ABC” masih tersimpan dalam

memori.

Salah satu cara untuk menyalakan layar adalah dengan menyalakan kursor. Perhatikan juga

pada bagian terakhir dimana accumulator diisi ulang dengan perintah untuk menggeser

tampilan ke kiri meskipun perintahnya sama. Hal ini dilakukan untuk mengantisipasi

berubahnya accumulator akibat pemanggilan rutin CommandLCD.

Program 4.3.2

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya.

$mod51

;built-in routine

INITLCD EQU 0740H

COMMANDLCD EQU 07B0H

WRITELCD EQU 07D0H

SETDDRAM EQU 0850H

;command word

DISPLAYCLEAR EQU 01H

DECCURSOR EQU 04H

INCCURSOR EQU 06H

CSEG

ORG 4000H

LJMP START

ORG 4100H

LDELAY:

MOV R7, #08H

LOP1: MOV R6, #0FFH

LOP2: MOV R5, #0FFH

DJNZ R5, $

DJNZ R6, LOP2

DJNZ R7, LOP1

RET

START:

LCALL INITLCD

;memindahkan kursor ke alamat 6h

MOV A, #6H

LCALL SETDDRAM

LCALL LDELAY

;menulis "Lab." (dari belakang) dengan diawali perintah

;DecCursor

MOV A, #DECCURSOR

LCALL COMMANDLCD

LCALL LDELAY

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

43

MOV A, #2EH

LCALL WRITELCD

LCALL LDELAY

MOV A, #62H

LCALL WRITELCD

LCALL LDELAY

MOV A, #61H

LCALL WRITELCD

LCALL LDELAY

MOV A, #4CH

LCALL WRITELCD

LCALL LDELAY

;memindahkan kursor ke alamat 8h

MOV A, $8H

LCALL SETDDRAM

LCALL LDELAY

;mengembalikan ke penulisan normal dengan

;IncCursor lalu menuliskan "Sismik"

MOV A, #INCCURSOR

LCALL COMMANDLCD

LCALL LDELAY

MOV A, #53H

LCALL WRITELCD

LCALL LDELAY

MOV A, #69H

LCALL WRITELCD

LCALL LDELAY

MOV A, #73H

LCALL WRITELCD

LCALL LDELAY

MOV A, #6DH

LCALL WRITELCD

LCALL LDELAY

MOV A, #69H

LCALL WRITELCD

LCALL LDELAY

MOV A, #6BH

LCALL WRITELCD

LCALL LDELAY

SJMP $

END

Jika setiap tahap dikerjakan dengan benar, program tersebut akan bekerja sebagaimana

yang sudah tercantum pada komentar di awal masing-masing bagian.

Catatan:

Perintah “DecCursor” hanya menggeser kursor ke kiri setiap kali program selesai

menuliskan satu karakter pada LCD. Perintah ini tidak menggeser tampilan. Perintah

“IncCursor” menampilkan penulisan normal dimana kursor akan bergeser ke kanan setiap

kali selesai menuliskan satu karakter. Perintah ini juga tidak menggeser tampilan. Jika

sebelumnya terdapat perintah “DecCursor”, perintah “DisplayClear” akan menghapus

semua tampilan sekaligus mengembalikan ke penulisan normal.

PERCOBAAN 4.4: PEMBUATAN DAN PENAMPILAN KARAKTER

Persiapan:

hubungkan “PORT LCD” DT-51 MinSys dengan modul LCD

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

44

hubungkan DT-51 MinSys dengan PC menggunakan kabel serial

hubungkan DT-51 MinSys dengan sumber tegangan

Program 4.4

Jalankan program di bawah ini, analisis dan buatlah diagram alirnya.

$mod51

;built-in routine

INITLCD EQU 0740H

WRITELCD EQU 07D0H

SETDDRAM EQU 0850H

SETCGRAM EQU 0870H

CSEG

ORG 4000H

LJMP START

ORG 4100H

LDELAY:

MOV R7, #08H

LOP1: MOV R6, #0FFH

LOP2: MOV R5, #0FFH

DJNZ R5, $

DJNZ R6, LOP2

DJNZ R7, LOP1

RET

START: MOV SP, #40H

LCALL INITLCD

LCALL LDELAY

;membuat karakter di data DDRAM 00000000

;(00h) dan 00000100 (04h)

MOV A, #00H

LCALL SETCGRAM

MOV A, #00000111B

LCALL WRITELCD

MOV A, #00001000B

LCALL WRITELCD

MOV A, #00011110B

LCALL WRITELCD

MOV A, #00001000B

LCALL WRITELCD

MOV A, #00011110B

LCALL WRITELCD

MOV A, #00001000B

LCALL WRITELCD

MOV A, #00000111B

LCALL WRITELCD

MOV A, #00000000B

LCALL WRITELCD

MOV A, #20H

LCALL SETCGRAM

MOV A, #00011000B

LCALL WRITELCD

MOV A, #00010100B

LCALL WRITELCD

MOV A, #00011000B

LCALL WRITELCD

MOV A, #00010100B

LCALL WRITELCD

MOV A, #00010110B

LCALL WRITELCD

MOV A, #00010101B

Praktikum Sistem Mikroprosesor

Laboratorium Sistem Komputer dan Robotika Percobaan 3: Akses Serial dan Review Modul

Fakultas Ilmu Komputer – Universitas Brawijaya

45

LCALL WRITELCD

MOV A, #00010110B

LCALL WRITELCD

MOV A, #00010100B

LCALL WRITELCD

LCALL LDELAY

;menampilkan karakter di data DDRAM 00h dan 04h pada awal LCD

MOV A, #00H

LCALL SETDDRAM

MOV A, #00H

LCALL WRITELCD

LCALL LDELAY

MOV A, #04H

LCALL WRITELCD

LCALL LDELAY

SJMP $

END

Jika seluruh tahap dikerjakan dengan benar, program tersebut akan menampilkan logo

menyerupai “€” dan “Rp”.

Catatan:

Untuk membuat karakter di data DDRAM “00h” (0000*000), maka alamat CGRAM harus dipindah ke “00h” (000|000).

Untuk membuat karakter di data DDRAM “04h” (0000*100), maka alamat CGRAM harus dipindah ke “20h” (100|000).

Penulisan data CGRAM dilakukan secara berurutan mulai dari baris paling atas ( alamat CGRAM terkecil, 000|000 dan 100|000) ke baris paling bawah ( alamat CGRAM terbesar, 000|111 dan 000|111 ). Alamat CGRAM akan bertambah secara otomatis.

Baris terakhir umumnya dikosongkan sebagai tempat untuk kursor, tetapi dapat juga diisi.

Langkah selanjutnya untuk menampilkan karakter yang telah dibuat adalah mengisi Accumulator dengan data DDRAM “00h” dan “04h” lalu memanggil perintah “WriteLCD”.

Data CGRAM juga dapat disimpan dalam EEPROM.

Tugas 4.4

Untuk praktikan hari senin dan selasa:

Buatlah suatu counter yang akan mencacah setiap kali tombol interrupt ditekan dan nilai

hasil pencacahan ditampilkan pada LCD

Untuk praktikan hari rabu dan kamis:

Buatlah suatu program untuk menampilkan input dari keyboard pada LCD.

Untuk praktikan hari jumat:

Buatlah suatu program untuk menampilkan input dari keypad pada LCD.

Fakultas Ilmu Komputer – Universitas Brawijaya

46

Fakultas Ilmu Komputer – Universitas Brawijaya

50

PERCOBAAN 5 DAN 6 PERANCANGAN APLIKASI

Percobaan 5 dan 6 adalah praktikum perancangan suatu aplikasi sederhana yang

memanfaatkan fasilitas mikrokontroler 89S51. Percobaan ini dilakukan secara mandiri dan

mengharuskan praktikan mengajukan dan membuat deskripsi perancangan aplikasi

tersebut.

Apendiks A DT-51

Fakultas Ilmu Komputer – Universitas Brawijaya

51

APENDIKS A DT-51

DT-51 MINIMUM SYSTEM

Blok Diagram

Gambar 6 Blok Diagram DT-51 Minimum System

Konektor Ekspansi

Apendiks A DT-51

Fakultas Ilmu Komputer – Universitas Brawijaya

52

Gambar 7 Konektor Ekspansi DT 51 Minumum System

Peta Memori

Gambar 8 Peta Memori DT 51 Minimum System

Apendiks A DT-51

Fakultas Ilmu Komputer – Universitas Brawijaya

53

DT-51 TRAINER BOARD

Tata Letak

Gambar 9 Tata Letak DT-51 Trainer Board

Konektor Ekspansi

Apendiks A DT-51

Fakultas Ilmu Komputer – Universitas Brawijaya

54

Gambar 10 Konektor Ekspasi pada DT-51 Tainer Board

APENDIKS B: Set Instruksi 8051

Fakultas Ilmu Komputer – Universitas Brawijaya

55

APENDIKS B SET INSTRUKSI 8051

APENDIKS B: Set Instruksi 8051

Fakultas Ilmu Komputer – Universitas Brawijaya

56

APENDIKS B: Set Instruksi 8051

Fakultas Ilmu Komputer – Universitas Brawijaya

57

APENDIKS B: Set Instruksi 8051

Fakultas Ilmu Komputer – Universitas Brawijaya

58

APENDIKS C Kabel-Kabel

Fakultas Ilmu Komputer – Universitas Brawijaya

59

APENDIKS C KABEL-KABEL

Gambar 11 Kabel Tipe X

Gambar 12 Kabel Tipe Y

APENDIKS C Kabel-Kabel

Fakultas Ilmu Komputer – Universitas Brawijaya

60

Gambar 13 Kabel Serial

Gambar 14 Kabel Jumper

Fakultas Ilmu Komputer – Universitas Brawijaya

61

APENDIKS D KODE ASCII