Upload
sayyid-imaddudin-al-akram-ii
View
165
Download
28
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
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 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