Anda di halaman 1dari 38

MIkROkONTROLER

KELUARGA MCS-51

Jobsheet
Disusun oleh :
Agus Rahmat Ramdan S.Pd

Kompetensi Keahlian Kontrol Proses


Sekolah Menengah Kejuruan Negeri 1 CIMAHI
Jl. Maharmartanegara No 48
BAGIAN

Arsitektur Mikrokontroler dan Keluarga


MCS 51

Banyak vendor dan produsen yang telah memproduksi mikrokontroler


dengan berbagai jenis dan kemampuan, secara umum mikrokontroler
merupakan sebuah mikrokomputer dimana didalamnya terdiri dari CPU, RAM,
ROM dan Input/output (I/O). ATMEL telah memproduksi mikrokontroler AT89S51
yang termasuk keluarga MCS-51. Beberapa fitur dari mikrokontroler AT89S51
antara lain mempunyai Flash PEROM dengan kapasitas 4 kilo Byte, 32 bit
programmable I/O, 2 x16 bit timer/counter, 128 x 8 RAM internal dan beberapa
fitur lain. Programming (Pengisian Flas PEROM) mikrokontroler jenis ini
kompatibel dengan keluarga MCS-51.
Beberapa jenis mikrokontroler buatan ATMEL dengan kapasitasnya dapat
dilihat dalam tabel 1.1 berikut.
Tabel 1.1 Tipe IC Mikrokontroler Keluarga Atmel
Mikrokontroler

Jumlah
Kaki

AT89C1051
AT89C2051
AT89C4051
AT89S51
AT89C52

20
20
20
40
40

AT89S8252

40

AT89S53
AT89S55

40
40

Flash PEROM
1 kbyte
2 kbyte
3 kbyte
4 kbyte
8 kbyte
8 kbyte +2 kbyte
EEPROM
12 kbyte
20 kbyte

Jumlah I/O
15 bit
15 bit
15 bit
4X8 bit
4X8 bit
4X8 bit
4X8 bit
4X8 bit

Konfigurasi hardware mikrokontroler AT89S51 di gambar 1.1 akan diperlihatkan.


Dalam perancangan sebuah sistem elektronika, mikrokontroler dapat
difungsikan untuk berbagai tujuan, misalnya untuk pengendali mesin mainan
anak-anak, pengendali robotic, otomasi sensor untuk pengukuran suhu, cahaya,
kelembaban dan sebagainya, pengendali pengukuran jarak jauh atau telemetri
dan lain-lain.
Efektivitas penggunaan mikrokontroler akan sangat dirasakan apabila
anda merancang system elektronika yang berbasis digital, fungsi-fungsi digital
mayoritas dapat diakomodasi oleh komponen ini, misalnya saja fungsi counter,
timer, Flip-flop (memori), AND, OR, dan lain-lain.
Mikrokontroler merupakan komponen yang dapat dikembangkan
penggunaan dan fungsinya dimana sangat tergantung pada kemampuan dan
penguasaan mind programmer-nya atas kapasitas dan kapabilitas komponen
2

dan algoritma bahasa pemrograman yang dapat digunakan untuk pemrograman


mikrokontroler.
Tentang bahasa pemrograman dan set instruksi MCS 51 akan dibahas
pada Bagian 2 Modul ini.

Gambar. 1.1 Blok Diagram seri AT89S51

1.1 Organisasi Memori


Struktur Memori dalam konfigurasi AT89S51 terbagi menjadi memori
program (hanya baca) dan memori data (baca/tulis). Pembagian alamatnya
seperti gambar 1.2 berikut ini.

Gambar. 1.2 Struktur Memori AT89S51

Memori data atau memori program dalam mikrokontroler dapat juga


diakses dari memori eksternal dengan memfungsikan strobe (tanda) PSEN
(Program Store Enable), RD (read), dan WR (write).
MemoriAT Program, Flash on chipAT89S51 sebesar 4 KB yang
alamatnya selalu 16 bit. Flash PEROM (Programmable and Erasable Read only
Memory) merupakan ROM yang dapat ditulis ulang atau dihapus menggunakan
sebuah perangkat programmer. Program yang ada pada flash PEROM akan
dijalankan pada saat system di-reset, untuk keamanan program yang ada pada
Flash PEROM AT89S51 mempunyai fasilitas lock bit yang terdiri dari:
Lock bit 1, instruksi MOVC yang diseksekusi dari memori eksternal untuk
membaca isi Flash tidak dapat dilakukan.
Lock bit 2, sama dengan lock bit 1, tetapi isi dari flash PEROM tidak dapat
diverivikasi oleh AT89S51 Programmer.
Lock bit 3, sama dengan lock bit 2, tetapi akses ke memori eksternal tidak
dapat dilakukan.
Memori Data, RAM (Random Access Memory) internal pada AT89S51
terdiri atas :
Register Banks (bank register)
AT89S51 mempunyai delapan buah register yaitu R0 sampai dengan R7,
kedelapan register ini selalu terletak pada alamat 00H hingga 07H pada
setiap kali system direset.
Bit Addressable RAM

RAM pada alamat 20H hingga 2FH dapat diakses secara pengalamatan bit
(per bit) sehingga hanya dengan sebuah instruksi saja setiap bit dalam area
ini dapat di set, clear, AND dan OR.
RAM Keperluan Umum
RAM keperluan umum dimulai dari alamat 30H hingga 7FH dan dapat
diakses dengan pengalamatan langsung maupun tidak langsung.
Pengalamatan langsung dilakukan ketika salah satu operand dalam instruksi
merupakan bilangan yang menunjukkan lokasi yang dialamati.
1.2 Special Function Registers (SFR)
Register Fungsi Khusus (SFR) pada mikrokontroler AT89S51 terlihat
dalam tabel 1.2 berikut ini.
Tidak semua alamat pada SFR ini digunakan tetapi terdapat alamatalamat yang tidak dipergunakan tidak diimplementasikan dalam chip.
SFR pada AT89S51 terdapat pada alamat antara 80H sampai FFH,
beberapa dari register-hregister ini juga dapat dialamati per bit sehingga dapat
dioperasikan seperti yang ada pada RAM yang lokasinya dapat dialamati dengan
pengalamatan bit.
Berikut ini SFR SFR ini akan dijelaskan sekilas.
Akumulator
ACC atau akumulator yang menempati alamat E0H digunakan sebagai register
untuk mengolah data pada operasi aritmatika dan logika dan menyimpanannya
secara sementara, dalam program, instruksi mengacunya sebagai A (bukan
ACC).
Tabel 2.1 Special Functions Registers AT89S51
128 bytes
F8
F0
E8
E0
D8
D0
C8
C0
B8
B0
A8
A0
98
90
88
80

B
ACC
PSW
(TCON)
IP
P3
IE
P2
SCON
P1
TCON
P0

(T2MOD)

(RCAP2L)

(RCAP2H)

(TL2)

(TH2)

TL0
DPL

TL1
DPH

TH0

TH1

SBUF
TMOD
SP

PCON

FF
F7
EF
E7
DF
D7
CF
C7
BF
B7
AF
A7
9F
97
8F
87

Register B
Register B (Lokasi F0H) dapat digunakan seperti register A pada operasi
perkalian dan pembagian, untuk instruksi lain dapat diperlakukan sebagai
register scratch pad (papan corat-coret) lainnya.

Program Status Word (PSW)


Register PSW (lokasi D0H) mengandung informasi status program, dalam PSW
status yang tersimpan meliputi: carry bit, the auxiliary carry untuk operasi BCD),
dua bit pemilih bank register, overflow flag, sebuah bit paritas dan dua flag status
yang bias didefinisikan sendiri (user definable).

Gambar 1.3 Program Status Word


Stack Pointer
Register SP ini lokasinya 81H merupakan register dengan panjang 8 bit,
digunakan dalam proses simpan dan ambil ke stack. Nilainya akan dinaikkan
sebelum data disimpan menggunakan instruksi PUSH dan CALL.
Data Pointer
Data Pointer atau DPTR mengandung DPTR untuk byte tinggi (DPH) dan byte
rendah (DPL) yang masing-masing berada dilokasi 83H dan 82H, bersama-sama
membentuk register yang mampu menyimpan alamat 16 bit. Dapat dimanipulasi
sebagai register 16 bit atau sebagai dua register 8 bit terpisah.
Port 0, Port 1, Port 2 dan Port 3
P0, P1,P2 dan P3 masing-masing pada lokasi 80H, 90H, A0H, dan B0H
merupakan pengunci-pengunci (latches), yang digunakan untuk menyimpan data
yang akan dibaca atau ditulis dari/ke port, untuk masing-masing Port 0, Port 1,
Port2 dan Port 3.
Serial Data Buffer
SBUF atau serial data buffer (lokasi 99H) sebenarnya terdiri dari dua register
yang terpisah yaitu penyangga pengirim (transmit buffer) dan penyanga
penerima (receive buffer). Pada saat data disalin ke SBUF, maka data

sesungguhnya dikirim ke penyangga pengirim sekaligus mengawali transmisi


data serial. Sedangkan pada saat data disalin dari SBUF, maka sebenarnya data
tersebut berasal dari penyangga penerima.
Timer Register
Pasangan register (TH0, TL0) dilokasi 8CH dan 8AH, (TH1 dan TL1) dilokasi
8DH dan 8BH serta (TH2, TL2) dilokasi CDH dan CCH merupakan registerregister pencacah 16 bit untuk masing-masing Timer 0, Timer 1 dan Timer 2.
Control Register
Register register IP, IE, TMOD, TCON, T2CON, T2MOD, SCON dan PCON
berisi kontrol dan status untuk sistem interupsi, Pencacah/Pewaktu dan port
serial, akan dijelaskan pada pembahasan selanjutnya.
BAGIAN

Pemrograman Assembly MCS51 dan Instruction Set


2.1 Teknik Merancang Program
Kriteria program yang baik adalah selain program dapat berjalan dengan
baik, juga harus dapat ditelusuri untuk mempermudah pengembangan. Dalam
prakteknya, pembuatan program biasanya diawali dengan membuat flowchart
atau diagram alir, kemudian pseudo code dalam bahasa yang lebih dimengerti
(misalnya pascal atau C) dan bahasa assembler (bahasa mesin).
Diagram alir digunakan untuk mengetahui terlebih dahulu apa yang harus
dikerjakan sebelum mulai membuat program. Contoh diagram alir pada gambar
2.1 berikut.

Gambar 2.1 Diagram alir


Pseudo Code dari diagram alir diatas seperti berikut ini :
ProsesX;
If Hasil = X Then
Begin
ProsesX
End
Else
Begin
ProsesY
End;
Struktur rancangan program biasanya terdiri dari:
Statement(pernyataan), menunjukkan dasar mekanisme dari melakukan
sesuatu , seperti pemberian nilai pada variable atau memanggil sub rutin
Contoh :
Mov
A,#00H ;memberi nilai pada akumulator
Acall
serOut ;memanggil sub ruti SerOut
Loops (Putaran), struktur putaran dilakukan untuk melakukan sebuah
operasi yang dilakukan berulang-ulang. Berbagai macam struktur putaran
biasanya dibentuk oleh While/Do atau Repeat/Until.

Contoh:
Psuedo Code dari Flowchart disamping
sebagai berikut:
[jumlah = 0]
While [panjang>0] do begin
[jumlah = jumlah +@pointer]
[increment pointer]
Decrement panjang]

Gambar 2.2 Contoh Flowchart


While/Do

Program Assemmbly:
Jumlah:
Clr A
Loop:
Cjne R7,#0, Pernyataan
Ajmp Keluar
Pernyataan:
Add A,R0
Inc R0
Dec R7
Ajmp Loop
Keluar:
Ret

Choose (Pilihan), dua buah pernyataan seringkali digunakan dalam


struktur ini adalah If/Then/Else dan Case/Of.
2.2 Pemrograman Assembly
Penulisan program Assembly terdiri dari beberapa bagian, berikut ini satu
contoh penulisan program sumber Assembly
IsiMemori:
Label

Movx

Mnemonic

@DPTR,A
Operand1

;Isi Akumulator ke alamat yang ditunjuk DPTR

Operand2

Komentar

Pembuatan program assembly dapat dilakukan dengan menggunakan


software teks editor seperti Notepad, Editor DOS, Crimson Editor atau
sejenisnya. Kumpulan baris-baris perintah kemudian disimpan (di-save) dengan
ekstension .ASM.
Penjelasan dari bagian-bagian program Assembly diatas seperti berikut
ini:

Label
Label sangat berguna untuk memberi nama pada alamat-alamat yang
dituju, pembuat program tidak harus mengetahui nilai alamat yang akan dituju

cukup menunjuk label maka rutin atau baris perintah (instruksi) sudah dapat
dilaksanakan. Terdapat beberapa ketentuan dalam pembuatan label yaitu :
Harus diawali dengan huruf
Tidak diperbolehkan terdapat label yang sama dalam satu program
assembly
Maksimal 16 karakter
Tidak diperbolehkan adanya karakter spasi dalam penulisan label.
Mnemonic
Mnemonic atau operation code (opcode) adalah kode-kode yang akan dikerjakan
oleh program assembler yang ada pada computer maupun mikrokontroler. Pada
mikrokontroler instruksi yang akan dikerjakan tergantung dari jenis mikrokontroler
yang digunakan.
Sedang Asembler directive sangat tergantung pada program assembler yang
digunakan.
Operand
Operand merupakan pelengkap dari mnemonic, operand yang diperlukan oleh
sebuah mnemonic bisa lebih dari satu, atau tidak memerlukan operand sama
sekali.
Komentar
Komentar tidak mutlak diperlukan dalam sebuah program, tetapi seringkali
komentar diperlukan untuk menjelaskan proses-proses kerja dari program atau
catatan-catatan tertentu pada bagian-bagian program.
2.3 Ekspresi Assembler
Basis Bilangan, dalam pembuatan program operand dapat diekspresikan
dalam berbagai bentuk, mikroprosesor Intel misalnya menggunakan akhiran B
untuk ekspresi bilangan biner, Q untuk octal, H untuk heksa dan D untuk
decimal. Misalnya 10 Desimal dapat diekspresikan dengan menuliskan :
00010101B ;biner
12Q
;octal
10D atau 10 (tanpa akhiran) ;decimal
0AH
;heksa
String Karakter, ekspresi string dilakukan dengan memberikan tanda x
diantara nilai yang diinginkan. Ekpresi ini sangat berguna untuk pembuatan
program yang membutuhkan perintah dengan nilai ASCII dari suatu operand.
Misalnya : Mov
A,#B
Operator Logika, ekspresi ini diperlukan dalam penulisan program yang
memerlukan operasi logika. Operator logika itu antara lain
OR untuk operator logika OR
AND untuk operator logika AND
XOR untuk operator logika XOR

10

NOT untuk operator logika komplemen


Contoh :
Mov A, #39H AND OFH adalah sama dengan Mov A,#9
Mov
A,#-3 adalah sama dengan Mov A,#NOT 3
Operator Khusus, operator-operator ini terdiri dari:
SHR
untuk menggeser ke kanan
Contoh :
Mov A,#00001000B SHR 1 sama dengan
Mov A,#00000100B
SHL
untuk menggeser ke kiri
Contoh:
Mov A,#00001000B SHL 1 sama dengan
Mov A,#00010000B
HIGH
untuk mengambil nilai byte tinggi
Mov A,#HIGH 1234H sama dengan
Mov A,#12H
LOW
untuk mengambil nilai byte rendah
Contoh:
Mov A,#LOW 1234H sama dengan
Mov A,#34H
()
untuk operasi yang harus didahulukan
Contoh:
Mov
A,#(10+4) * 3 bilangan 10 desimal terlebih
dahulu
dijumlahkan dengan 4 sebelum dikalikan dengan 3 karena
adanya operator ().

2.4 Assembler Directive


Assembler Directive (Pengarah Assembler) merupakan mnemonic yang
akan diproses oleh program Assembler. Berikut ini pengarah assembler yang
biasa digunakan untuk program-program assembler.
ORG (Origin)
ORG digunakan untuk menunjukkan lokasi memori tempat instruksi atau
perintah yang ada dibawahnya disimpan. Bentuk dari ORG adalah:
ORG
ekspresi
Contoh :
ORG
2000H
MOV
DPTR,#4000H
Maka perintah MOV
DPTR,#4000H yang berada dibawah ORG #2000H
akan terletak dialamat 2000H.
END

11

END biasanya diletakkan diakhir baris dari file program sumber assembler
sebagai tanda akhir pernyataan bagi program assembler dalam melakukan
proses pemograman.
EQU (Equate)
EQU digunakan untuk mendefinisikan sebuah simbol atau lambang
assembler secara bebas.
Contoh:
Bilangan
EQU
50H
Mov
A,#Bilangan
Bilangan pada instruksi Mov
A,#Bilangan berisi 50H.
BIT
Pengarah BIT digunakan untuk mendefinisikan suatu lambang yang
menunjuk ke suatu lokasi bit pada memori yang dapat dialamati secara per bit.
Contoh:
Flag
Bit 0 ;lambang Flag menunjuk ke lokasi 0 secara
pengalamatan bit
DATA
Pengarah DATA digunakan untuk menyatakan secara langsung alamat
pada memori internal dengan sebuah lambang. Alamat yang dimulai dari 00
hingga 7FH menunjukkan RAM internal dan alamat 80H hingga FFH
menunjukkan alamat dari Register Fungsi Khusus.
Contoh :
BUFFER DATA 32H ;lambang Buffer menunjukkan alamat 32H
IDATA
Sama seperti DATA tapi untuk pengalamatan tidak langsung.
XDATA
Digunakan untuk menyatakan alamat yang ada pada memori eksternal
alamatnya maksimal FFFFH.
CSEG, digunakan untuk memilih lokasi memori program
BSEG, untuk memilih lokasi memori yang dapat dialamati dengan
pengalamatan bit
DSEG, digunakan untuk memilih lokasi memori RAM internal.
ISEG, digunakan untuk memilih lokasi RAM internal untuk pengalamatan
tak langsung.
XSEG, digunakan untuk memilih lokasi di memori eksternal.
DB (Define Byte)
Digunakan untuk memberi nilai tertentu pada memori di lokasi tersebut,
contoh:
ORG
3000H
DB
50H,51H

12

DB terletak di bawah ORG 3000H, data 50H dan 51H akan menempati
lokasi di alamat 3000H dan 3001H.
DW (Define Word)
Biasanya diikuti dengan label dan berfungsi untuk memberi nilai 2 byte
pada lokasi memori tempat DW dituliskan. Nilai 2 byte berasal dari alamat tempat
label diberikan. Contoh:
ORG
2100H
Lokasi1 :
ORG
3000H
DW
Lokasi1 ; alamat 3000H dan 3001H diisi dengan
data 21H dan 00H.
DS (Define String)
DS selalu diikuti dengan angka dan berfungsi untuk menyediakan tempat
sebesar angka tersebut dimulai dari alamat assembler directive ini berada.
Contoh:
DSEG
ORG
50H
Memori1 DS 2
; disediakan tempat sebesar 2 byte
; Mulai dari alamat 50H dari RAM
DBIT
Digunakan untuk menyediakan tempat pada segmen Bit dan dapat
digunakan jika segmen yang aktif adalah BSEG, contoh:
BSEG
; pilih segmen
PetaIO: DBIT
32
; sediakan 32 bit buffer untuk
i/o.

2.5 Sitem Pengalamatan


Sistem pengalamatan dalam pemrograman mikrokontroler terdiri dari
beberapa jenis, berikut ini penjelasannya.
Pengalamatan Segera (immediately addressing)
Pengalamatan ini terjadi pada sebuah perintah ketika nilai operand
merupakan data yanga akan diproses, biasanya selalu diawali dengan tanda #
(kres). Contoh:
Mov
A,#05H ; data didefinisikan bernilai 05H
Mov
A,#data ; data dapat diisi dengan suatu angka
misalnya dengan Data EQU 5
Pengalamatan Langsung (direct addressing)
Digunakan untuk menunjuk data yang ada pada suatu lokasi memori
dengan cara menyebut lokasi memori itu berada, misalnya perintah Mov
A,50H instruksi ini berarti data yang berada pada lokasi 50H disalin ke
akumulator.
13

Pengalamatan Tidak Langsung (indirect addressing)


Pengalamatan ini digunakan untuk mengakses data yang berada di dalam
memori, tetapi memori tidak disebutkan secara langsung melainkan dititipkan ke
register lain. Misalnya:
Mov

A,@R0

;memori yang alamat lokasinya


; tersimpan
; di R0 isinya disalin ke akumulator.

Pengalamatan Register (register addressing)


pengalamatan ini menjadikan register serbaguna R0 sampai R7 sebagai
tempat menyimpan data. Contoh :
Mov
A,R0
; data di R0 disalin ke akumulator
Pengalamatan Kode (code addressing)
Pengalamatan ini dilakukan ketika operand merupakan alamat dari
instruksi JUMP dan CALL (ACALL, JMP, LJMP dan LCALL). Biasanya operand
tersebut akan menunjuk ke suatu alamat yang telah diberi label sebelumnya.
Misalnya:
Acall
Delay
.
Delay:
Mov
B,#0FFH
Pada saat dijalankan program akan lompat menuju sub-rutin berada pada
lokasi memori yang telah diberi label Delay.
Pengalamatan BIT (BIT addressing)
Digunakan untuk menunjuk alamat pada memori atau Register Fungsi
Khusus yang mempunyai kemampuan diakses per bit.
Misalnya:
Setb P3.0 ;memberikan logika 1 pada bit ke 0 pada P3.
2.6 Instruction Set
Secara keseluruhan MCS-51 mempunyai 255 macam instruksi, instruksiinstruksi tersebut dikelompokkan manjadi sebagai berikut.
2.6.1 Kelompok Penyalinan Data
Instruksi dasar untuk kelompok ini adalah MOV, jika perintah MOV A,R7
ini selesai dikerjakan berarti data yang ada di akumulator A sama dengan data
yang ada di R7 yang sebelumnya tersimpan di R7.
Pada memori data MOV dituliskan seperti berikut
Mov
A,20H
;salin isi lokasi memori 20H ke
;akumulator
Mov
A,@R1
;salin isi lokasi yang ditunjuk R1
;ke A
Mov
P3,A
;salin isi A ke latch Port 1
14

Untuk pemakain pada memori program penulisannya menjadi:


Movc A,@A+DPTR ;DPTR sebagai register tak langsung
Movc A,@A+PC
;PC sebagai register tak langsung
Untuk memori eksternal hanya berlaku bagi mikrokontroler yang
mendukung penggunaan memori eksternal, hanya ada 6 buah instruksi, yaitu:
Movx A,@DPTR
Movx A,@R0
Movx A,@R1
Movx @DPTR,A
Movx @R0,A
Movx @R1,A
2.6.2 Kelompok Instruksi Aritmetik
Instruksi ADD dan ADDC
Kedua instruksi ini selalu melibatkan akumulator, jika isi akumulator
dijumlahkan dengan suatu bilangan maka hasilnya akan kembali ditampung di
akumulator. Perbedaan ADD dan ADDC apabila ADD melakukan operasi yang
melebihi kapasitas 1 byte, maka Carry Flag di PSW akan menunjukkan angka 1.
sedangkan ADDC nilai bit carry sebelumnya ikut dijumlahkan. Contoh penulisan
instruksi ini sebagai berikut:
ADD A,R0
; melalui register serbaguna R0
ADD A,#23H
; langsung dengan suatu bilangan
ADD A,@R0
; dengan isi memori yang ditunjuk R0
ADD A,P1
; dengan isi register P1
Instruksi SUBB
Isi akumulator A dikurangi dengan satu bilangan (1 byte) beserta dengan
bit Carry, hasil pengurangan akan ditampung kembali di Akumulator. Jika terjadi
nilai pengurangan kurang dari 0 maka bit Carry akan bernilai 1. Contoh
penulisannya adalah:
SUBB
A,R0
;A=A-R0-Carry
SUBB
A,#23H ;A=A-23H
SUBB
A,@R1
;A=A-[R1] R1 artinya isi dari R1
SUBB
A,P0
;A=A-P0
Instruksi DA A
Digunakan untuk mengubah nilai biner 8 bit yang tersimpan dalam
akumulator menjadi 2 digit dalam format BCD digunakan setelah instruksi ADD,
ADDC, atau SUBB.
Instruksi MUL AB
Bilangan biner dalam akumulator A dikalikan dengan bilangan biner 8 bit
pada register B, hasil perkalian berupa bilangan biner 16 bit disimpan di B untuk
8 bit bagian atas (high byte) dan di akumulator A untuk 8 bit bagian bawah (low
byte). Bit Overflow (OV) di PSW akan bernilai 1 jika register B bernilai bukan
00H. contoh operasinya:
15

Mov
Mov
MUL

A,#20
B,#10
AB

Instruksi DIV AB
Instruksi pembagian bilangan di A oleh bilangan di B, OV akan bernilai 1
jika register B sebelumnya bernilai.
Instruksi DEC dan INC
DEC digunakan untuk menurunkan suatu nilai (I byte), yang tersimpan di
A, register, nilai langsung atau tak langsung yang melalui register sebesar 1.
INC sebaliknya dari DEC yaitu menaikan nilainya sebesar 1.
Contoh :
DEC A
; artinya A=A-1
DEC R0
; artinya R0 = R0-1
DEC #50H ; artinya jumlahnya adalah 4FH
DEC @R1
; artinya R1-1
INC A
; artinya A=A+1
INC R0
; artinya R0 = R0+1
INC #50H ; artinya jumlahnya adalah 51H
INC @R1
; artinya R1+1
2.6.3 Kelompok Instruksi Logika
Intstruksi yang terdapat pad kelompok ini antara lain operasi AND (ANL),
OR (ORL), XOR (XRL), operasi clear (CLR), komplemen (CPL), pergeseran
kanan atau kiri (RR, RL, RRC, dan RLC) serta instruksi penukaran data (SWAP).
2.6.4 Kelompok Instruksi JUMP
Instruksi dalam kelompok ini ada tiga yaitu LJMP (long jump), AJMP
(absolute jump) dan SJMP (short jump) perbedaan dari ketiga jenis instruksi
tersebut terletak pada luas jangkauan dalam memori program, dimana LJMP
mampu menjangkau 64 Kilobyte sedangkan AJMP menjangkau daerah di 2
Kilobyte yang sama, dan SJMP menjangkau antara -128 sampai +127 byte. Nilai
negative dapat digunakan untuk melompat ke instruksi sebelumnya. Proses
yang dilakukan oleh ketiga instruksi ini persis sama.
2.6.5 Kelompok Instruksi Sub Rutin
Untuk berbagai pertimbangan mungkin saja dalam satu rutin program
diperlukan sub-rutin yang menyimpan potongan program, untuk memanggil subrutin dapat menggunakan instruksi LCALL, ACALL, dan SCALL jangkauannya
setara dengan instruksi JUMP. Untuk kembali pada program sebelumnya setelah
instruksi terakhir sub-rutin digunakan instruksi RET.

2.6.5 Kelompok Instruksi Lompatan Bersyarat


Instruksi JZ /JNZ
16

Instruksi JZ (Jump if Zero) dan instruksi JNZ (Jump if Not Zero) instruksi
Jump untuk memantau nilai akumulator, perhatikan contoh berikut ini:
MOV
A,#0
JNZ
BukanNol
JZ
Nol

BukanNol:

Nol:
.
Dalam contoh tersebut MOV A,#0 menjadika akumulator berisi 0, hal
ini mengakibatkan instruksi JNZ
Bukan Nol tidak dikerjakan, sedangkan JZ
Nol akan terus dikerjakan karena syaratnya dipenuhi.
Instruksi JC/JNC
Instruksi JC (Jump on Carry) /JNC (Jump on Not Carry) digunakan untuk
memantau bit Carry pada Program Status Word (PSW).
Instruksi JB / JNB / JBC
Instruksi JB (Jump on Bit Set), JNB (Jump on Not Bit set) dan JBC (Jump
on Bit Set Then Clear Bit) digunakan untuk memantau bit-bit tertentu, bisa
berupa register-register status tertentu atau bit masukan mikrokontroler.
Instruksi DJNZ dan CJNE
DJNZ (Decrement and Jump if Not Zero) merupakan instruksi yang akan
mengurangi 1 nilai register serbaguna (R0 sampai R7) atau memori data dan
akan melompat ke memori program yang dituju jika setelah 1 tersebut hasilnya
belum nol. Berikut ini contoh penulisannya:
MOV
R0,#23H
DJNZ
R0,$
R0 akan dikurangi 1 hingga R0 belum nol maka pengurangan akan terus
diulangi.
CJNE (Compare And Jump If Not Equal) membandingkan dua nilai yang
disebut MCS dan akan melompat ke memori program yang dituju jika kedua nilai
tersebut tak sama.
Lebih lengkap mengenai instruction set MCS-51 dapat dibaca dalam
lampiran tentang MCS51 Set Instruction.
2.7 Microcontroller USB-MCS51 Software dan ProsesPemograman Source
Code
Software ini dikembangkan oleh Thomas Fischl yang dapat secara
lengkap didownload baik aplikasi dan rangkaiannya pada alamat
http://www.fischl.de/usbasp/ berfungsi sebagai downloader program
yang berbasiskan antarmuka (interface) USB pada PC kedalam mikrokontroler.
Berikut ini langkah-langkah pembuatan dan download program source:
1. Jalankan aplikasi Pinnacle51, Mide51, atau aplikasi programmer lainnya

17

2. Buat folder baru didalam windows explorer, khusus untuk program


mikrokontroler.
3. Membuat Program sumber (source program) dengan bahasa Assembler
pada text editor seperti Notepad, Pinnacle51, Mide51 Crimson Editor, dll.
4. Simpan program sumber yang sudah dibuat pada pada folder yang
khusus mikrokontroler dengan extention file.asm.
5. Lakukan proses kompilasi dengan compileryang tersedia pada aplikasi
Pinnacle sehingga menghasilkan file Heksa dengan extention file.hex
6. Jalankan aplikasi progisp v1.68 Software portable yang ada dalam folder
windows explorer.
7. Buka folder dimana program berkestensi .hex. disimpan,
8. Lakukan proses flash programmer dengan menekan toolbarwrite to chip
pada aplikasi progisp v1.68.

BAGIAN

Aplikasi Port Paralel Mikrokontroler AT89S51


Dan Percobaan
18

Pada bagian ini kita akan mencoba mengaplikasikan mikrokontroler


AT89S51 yang telah terintegrasi dalam modul MDSR Ver. 0, modul disiapkan
untuk melakukan percobaan pemrograman mikrokontroler, beberapa komponen
yang di-interfacing dengan AT89S51 ini antara lain LED, Seven Segmen, Switch
dan Keypad.
Tetapi sebelum memasuki percobaan kita akan melihat sekilas tentang
konfigurasi pin mikrokontroler AT89S51 untuk mengetahui pola pengawatan
(wiring) dalam Modul MDSR ver. 0 ini.
3.1 Konfigurasi Pin AT89S51

Gambar 3.1 Konfigurasi Pin AT89S51


AT89S51 terdiri dari beberapa bentuk package, seperti gambar diatas,
tetapi yang banyak dipasaran berbentuk PDIP 40 pin. Fungsi dari pin-pin
tersebut bisa dijelaskan dalam table berikut ini:
Tabel 3.1 Tabel Fungsi Pin AT89S51

19

VCC
GND
Port 0 (P0)
Port 1 & Port 2
(P1 &P2)
Port 3 (P3)

RST
XTAL1, XTAL2
EA

Tegangan supply bagi mikrokontroler


Ground
Port I/O dua arah 8 bit dengan konfigurasi open drain, umumnya
memerlukan pull-up
Port I/O dua arah 8 bit dengan internal pull-up
Port I/O dengan 8 bit dan internal pull-up, tetapi mempunyai fungsi alternatif
yaitu :
P3.0
RXD (port input serial)
P3.1
TXD (port output serial)
P3.2
INT0 (interrupt eksternal 0)
P3.2
INT1 (interrupt eksternal 1)
P3.4
T0 (input eksternal timer 0)
P3.5
T1 (input eksternal timer 1)
P3.6
WR (strobe penulisan untuk memori data eksternal)
P3.7
RD (strobe pembacaan untuk memori data eksternal)
Input reset, kondisi high selama dua siklus mesin akan mengembalikan
program pada alamat 0000H
Input untuk internal clock, pin ini dihubungkan dengan kristal
Eksternal Akses, untuk memfungsikan memori internal maka pin ini diberi
logaki high dan apabila mengakses memori eksternal pin ini diberi logika low

3.2 Blok Diagram MODUL DASAR


Secara umum modul MDSR Ver.0 ini mempunyai blok diagram seperti
berikut ini:

Gambar 3.2 Diagram Blok MDSR Ver.0

3.3 Blok Diagram MODUL ADVANCE Ver. 0

Baris LED
Matrix
(P1.0 P1.6)

P0.0 P0.7

P1.0 P1.7

AT89S51

ADC0804
LCD 16 Char
Kolom LED Marix
(P0.0-P0.4)

20

Gambar 3.3 Diagram Blok Modul Advance

SEKOLAH MENENGAH KEJURUAN


NEGERI 1 CIMAHI
Kelompok : Instrumentasi Industri
Jurusan Kontrol Proses

No. Form. : F:ISO-KUR-06

Job Sheet Mikrontroler


Dasar 1
21

Jl. Mahar Martanegara No. 48 Kota Cimahi

Pemrograman LED 8 Bit


1. Tujuan Kegiatan Belajar
- Siswa dapat memahami penggunaan port pada AT89S51 sebagai output
- Siswa mampu merancang program assembler untuk mengendalikan LED
- Siswa mampu membuat minimum system pengendali LED dengan menggunakan
AT89S51
2. Materi
Seperti digambarkan pada diagram blok diatas LED terhubung dengan Port 0
(P0.0 sampai dengan P0.7), contoh program berikut ini dibuat untuk LED pada posisi
Port 0.
vcc
P1.0

P0.0

P1.1

P0.1

P1.2

P0.2

P1.3

P0.3

P1.4

P0.4

P1.5

P0.5

P1.6

P0.6

P1.7

P0.7

P3.0

P2.0

P3.1

P2.1

P3.2

P2.2

P3.3

P2.3

P3.4

P2.4

P3.5

P2.5

P3.6
P3.7

P2.6
P2.7

Gambar 3.3. Hubungan led terhadap port I/O mikrokontroller


Lampu flip-flop pada Port 0
Program1
$mod51
org
0
Mulai:
mov
call
mov
call
jmp
Delay:
mov
Delay1: mov
Delay2: mov
Delay3: djnz

P0,#0
Delay
P0,#0ffh
Delay
Mulai
R7,#50
R6,#100
R5,#100
R5,Delay3

;
;
;
;
;
;
;
;
;
;

Led nyala
panggil subrutin Delay
Led padam
panggil subrutin Delay
lompat ke label mulai
Isi register R7 dengan 50
Isi register R6 dengan 100
Isi register R5 dengan 100
kurangi R5 dengan 1, bila hasil
belum sama dengan 0 maka lompat

22

djnz

R6,Delay2

djnz

R7,Delay1

ke Delay3
; kurangi R6 dengan 1, bila hasil
; belum sama dengan 0 maka lompat
ke Delay2
; kurangi Rl dengan 1, bila hasil
; belum sama dengan 0 maka lompat
ke Delay1
; Keluar dari subrutin

ret
end

Lampu flip-flop nible atas dan nible bawah


Program2
$mod51
ORG
0H
MULAI:
Mov
CALL
Mov
CALL
Sjmp
Delay:
Delay1:
Delay2:
Delay3:

mov
mov
mov
djnz
djnz
djnz
ret

P0,#00001111B ; LED P0.4 s/d P0.7 nyala


DELAY
; panggil subrutin Delay
P0,#11110000B ; LED P3.0 s/d P3.3 nyala
DELAY
; panggil subrutin Delay
MULAI
; lompat ke label mulai
;
R7,#50
; Isi register R7 dengan 50
R6,#100
; Isi register R6 dengan 100
R5,#100
; Isi register R5 dengan 100
R5,Delay3
; kurangi R5 dengan 1, bila hasil
; belum sama dengan 0 maka lompat
ke Delay3
R6,Delay2
; kurangi R6 dengan 1, bila hasil
; belum sama dengan 0 maka lompat
ke Delay2
R7,Delay1
; kurangi Rl dengan 1, bila hasil
; belum sama dengan 0 maka lompat
ke Delay1
; Keluar dari subrutin

end

Running led dari kanan ke kiri


Program3
$mod51
org 0
Mulai:
mov

a,#0ffh

clr
Loop: mov

c
P0,a

call Delay
rlc a
jmp

Loop

;
;
;
;
;
;
;
;
;

Isi register accumulator dengan


FFh
Nolkan carry flag
Pindahkan isi register
accumulator ke P0
Panggil subrutin Delay
Geser ke kiri isi register
accumulator dengan carry
Lompat ke label loop

23

Delay:
Delay1:
Delay2:
Delay3:

mov
mov
mov
djnz

R7,#50
R6,#100
R5,#100
R5,Delay3

;
;
;
;
;

djnz

R6,Delay2

;
;

djnz

R7,Delay1

;
;

ret

Isi register R7 dengan 50


Isi register R6 dengan 100
Isi register R5 dengan 100
kurangi R5 dengan 1, bila hasil
belum sama dengan 0 maka lompat
ke Delay3
kurangi R6 dengan 1, bila hasil
belum sama dengan 0 maka lompat
ke Delay2
kurangi Rl dengan 1, bila hasil
belum sama dengan 0 maka lompat
ke Delay1
Keluar dari subrutin

end

3. Langkah Kerja
- Buat program 1 pada text editor (notepad, pinnacle, crimson editor), kemudian
simpan file tersebut dengan nama file LED dengan ekstensi .asm pada folder
khsusus*.
- Lakukan pengkonversian (meng-compile) file tersebut ke bentuk hexa (.hex)
dengan menggunakan ASM51.exe atau langsung pada aplikasi yang telah tersedia
compilernya.
- Hubungkan AT89S51 downloader ke PC melalui port parallel / serial.
- Jalankan aplikasi Atmel ISP programmer pada PC.
- Download file yang berekstensi .hextersebut ke dalam IC AT89S51 dengan
menggunakan aplikasi Atmel ISP programmer.
- Run target pada Atmel ISP programmer untuk menjalankan hasil yang telah
deprogram.
- Ulangi langkah di atas untuk mencoba program 2 dan 3.
4. Analisa
- Catat perubahan yang dikeluarkan setelah program 1, 2 dan 3 dijlankan**.
- Buat program running led dari kiri ke kanan**!
- Buat program running led secara pingpong**!
- Buat program running led dari luar ke dalam dan dari dalam keluar**!
- Buat program kombinasi dari seluruh program yang telah dibuat**.
5. Kesimpulan
Buat kesimpulan yang diperoleh pada saat praktek**

Keterangan:
* Folder baru yang di dalamnya terdapat file ASM51.exe dan file Mod51
** Dibuat dalam bentuk laporan praktikum
No. Form. : F:ISO-KUR-06
SEKOLAH MENENGAH KEJURUAN
NEGERI 1 CIMAHI
24

Kelompok : Teknologi & Industri


Jurusan Teknik Pendinginan & Tata Udara
Jl. Mahar Martanegara No. 48 Kota Cimahi

Job Sheet Mikrontroler


Dasar 2

Pemrograman Display Seven Segmen


1. Tujuan Kegiatan Belajar
- Siswa dapat memahami penggunaan port pada AT89S51 sebagai output
- Siswa mampu merancang program assembler untuk mengendalikan 7-Segmen
- Siswa mampu membuat minimum system pengaturan display 7-Segmen dengan
menggunakan AT89S51
2. Materi
P1.0

P0.0

P1.1

P0.1

P1.2
P1.3

P0.2
P0.3

P1.4

P0.4

P1.5

P0.5

P1.6

P0.6

P1.7

P0.7

P3.0

P2.0

P3.1
P3.2

P2.1
P2.2

P3.3
P3.4

P2.3
P2.4

P3.5

P2.5

P3.6
P3.7

P2.6
P2.7

f
a
b
c
d
e
g
dot

vcc

vcc

Gambar 3.4. Susunan hubungan 7 segmen dengan port I/O mikrokontroller


Program menampilkan angka 0-9
Program1

$mod51
org
Mulai:
mov
call
mov
call
mov
call
mov
call
mov
call
mov

0
P2,#0c0h
delay
P2,#0f3h
delay
P2,#089h
delay
P2,#0a1h
delay
P2,#0b2h
delay
P2,#0a4h

;
;
;
;
;
;
;
;
;
;
;

keluarkan data angka nol ke P2


panggil sub rutin delay
keluarkan data angka satu ke P2
panggil sub rutin delay
keluarkan data angka dua ke P2
panggil sub rutin delay
keluarkan data angka tiga ke P2
panggil sub rutin delay
keluarkan data angka empat ke P2
panggil sub rutin delay
keluarkan data angka lima ke P2

25

call delay
mov
P2,#084h
call delay
mov
P2,#0f1h
call delay
mov
P2,#080h

;
;
;
;
;
;

panggil sub rutin delay


keluarkan data angka enam ke P2
panggil sub rutin delay
keluarkan data angka tujuh ke P2
panggil sub rutin delay
keluarkan data angka delapan

ke

P2
call delay
; panggil sub rutin delay
mov
P2,#0a0h
; keluarkan data angka sembilan ke P2
call delay
; panggil sub rutin delay
sjmp Mulai
delay:
mov
r7,#100
delay_1:
mov
r6,#100
delay_2:
mov
r5,#100
djnz r5,$
djnz r6,delay_2
djnz r7,delay_1
ret
end

Program menampilkan angka 0-9 dengan metode Look Up Table


Program2
$mod51
org
Mulai:
mov
mov

0
R4,#10
; isi register R4 dengan 10
Dptr,#Tabel_Data ; isi register DPTR dengan alamat
; yang ditunjukkan label Tabel_Data

Loop:
clr
a
movc a,@a+dptr

;
;
;
;
;
;
mov
p2,a ;
call delay
;
inc
dptr ;
djnz r4,Loop
;
;
;
sjmp Mulai

nolkan isi akumulator


copy data ke akumulator dari
lokasi
memori program yang ditunjukkan
oleh isi akumulator ditmbah
dengan isi DPTR
keluarkan data ke P2
panggil sub rutin delay
isi DPTR +1
kurangkan isi R4 dengan 1 dan
lompat ke label Loop jika isi R4
tidak nol

Tabel_Data:
db
0c0h,0f3h,89h,0a1h,0b2h,0a4h,84h,0f1h,80h,0a0h

26

delay:
mov

r7,#100

mov

r6,#100

delay_1:
delay_2:
mov
r5,#100
djnz r5,$
djnz r6,delay_2
djnz r7,delay_1
ret
end

Program menampilkan angka A-F dengan metode Look Up Table


Program3
$mod51
org

0
mov
mov

R4,#6
Dptr,#Tabel_Data

Loop:
clr
movc
mov
call
inc
djnz
sjmp
;
Tabel_Data:
db
;
delay:
mov
delay_1:
mov
delay_2:
mov
djnz
djnz
djnz
ret

a
a,@a+dptr
p2,a
delay
dptr
r4,Loop
0
090h,086h,0cch,83h,8ch,9ch
r7,#100
r6,#100
r5,#100
r5,$
r6,delay_2
r7,delay_1

end

3. Langkah Kerja

27

Buat program 1 pada text editor (notepad, pinnacle, crimson editor), kemudian
simpan file tersebut dengan nama file Seven-Segment dengan ekstensi .asm pada
folder khsusus*.
Lakukan pengkonversian (meng-compile) file tersebut ke bentuk hexa (.hex)
dengan menggunakan ASM51.exe atau langsung pada aplikasi yang telah tersedia
compilernya.
Hubungkan AT89S51 downloader ke PC melalui port parallel / serial.
Jalankan aplikasi Atmel ISP programmer pada PC.
Download file yang berekstensi .hextersebut ke dalam IC AT89S51 dengan
menggunakan aplikasi Atmel ISP programmer.
Run target pada Atmel ISP programmer untuk menjalankan hasil yang telah
deprogram.
Ulangi langkah di atas untuk mencoba program 2 dan 3.

4. Analisa
- Catat perubahan yang dikeluarkan setelah program 1, 2 dan 3 dijlankan**.
- Buat program menampilkan hitungan mundur**.
- Buat program menampilkan hitungan 0-99**.
5. Kesimpulan
Buat kesimpulan yang diperoleh pada saat praktek**

Keterangan:
* Folder baru yang di dalamnya terdapat file ASM51.exe dan file Mod51
** Dibuat dalam bentuk laporan praktikum
SEKOLAH MENENGAH KEJURUAN

No. Form. : F:ISO-KUR-06

28

NEGERI 1 CIMAHI
Kelompok : Insrtrumentasi Industri
Jurusan Kontrol Proses
Jl. Mahar Martanegara No. 48 Kota Cimahi

Job Sheet Mikrontroler


Dasar 3

Pemrograman Input Switch


1. Tujuan Kegiatan Belajar
- Siswa dapat memahami penggunaan port pada AT89S51 sebagai I/O
- Siswa mampu merancang program assembler untuk mengendalikan LED dan 7Segmen dengan input switch
- Siswa mampu membuat minimum system pengaturan LED dan display 7-Segmen
dengan menggunakan AT89S51
2. Materi
vcc
P1.0

P0.0

P1.1

P0.1

P1.2

P0.2

P1.3

P0.3

P1.4

P0.4

P1.5

P0.5

P1.6

P0.6

P1.7

P0.7

P3.0

P2.0

P3.1

P2.1

P3.2

P2.2

P3.3

P2.3

P3.4

P2.4

P3.5

P2.5

P3.6
P3.7

P2.6
P2.7

Gambar 3.5. Susunan hubungan switch I/O dengan port I/O mikrokontroller
Program menghidup-matikan led dengan switch I/O
Program1
$mod51
org
Mulai:

0
mov
a,P3
cjne a,#0fbh,Terus

mov
P0,#0
sjmp Mulai

;
;
;
;
;
;
;
;

cjne a,#0f7h,Mulai

copy data P3 ke akumulator


bandingkan isi akumulator
dengan FBh
dan lompat ke label Terus
jika tidak sama,jika sama
eksekusi program dibawahnya
nyalakan led
lompat ke awal program

Terus:
bandingkan

isi

akumulator

dengan F7h

29

mov
P0,#0ffh
sjmp Mulai

;
;
;
;
;

dan lompat ke label Mulai


jika tidak sama,jika sama
eksekusi program dibawahnya
matikan led
lompat ke awal program

end

Progam toggle switch


Program2
$mod51
org
Mulai:

0
mov
a,P3
cjne a,#0fbh,Mulai

; copy data P3 ke a
;
bandingkan
isi

cjne r0,#0,Terus

;
;
;
;

dan lompat ke label Mulai


jika tidak sama,jika sama
eksekusi program dibawahnya
bandingkan isi R0 dengan 0 dan

mov
mov

;
;
;
;
;

label Terus jika tidak sama,


jika sama
eksekusi program dibawahnya
isi R0 dengan 1
nyalakan led

akumulator

dengan FBh

lompat ke

r0,#1
P0,#0

Tunggu:
mov
a,P3
cjne a,#0ffh,Tunggu

; copy data P3 ke a
;
tunggu
hingga

sjmp Mulai

; lompat ke awal program

mov
r0,#0
mov
P0,#0ffh
sjmp Tunggu

; isi R0 dengan 0
; matikan led
; lompat ke label tunggu

tombol-tekan

dilepas
Terus:

end

P1.0

P0.0

P1.1

P0.1

P1.2

P0.2

P1.3

P0.3

P1.4

P0.4

P1.5
P1.6

P0.5
P0.6

P1.7

P0.7

P3.0

P2.0

P3.1

P2.1

P3.2

P2.2

P3.3

P2.3

P3.4

P2.4

P3.5

P2.5

P3.6

P2.6

P3.7

P2.7

g
a
b
c
d
e
f
dot

vcc

vcc

30

Gambar 3.6. Susunan switch I/O dengan port I/O mikrokontroller dan 7 seg

Program counter berdasarkan input switch


Program3
$mod51
org

0
mov

r0,#0

Mulai:
mov
a,P3
cjne a,#0fbh,Mulai
call Delay
Tunggu:
mov
a,P3
cjne a,#0ffh,Tunggu
call Delay
inc
r0
cjne r0,#10,Lanjut
mov
r0,#0
Lanjut:
cjne r0,#0,Banding1
mov
P2,#0c0h
sjmp Mulai
Banding1:
cjne r0,#1,Banding2
mov
P2,#0f3h
sjmp Mulai
Banding2:
cjne r0,#2,Banding3
mov
P2,#089h
sjmp Mulai
Banding3:
cjne r0,#3,Banding4
mov
P2,#0a1h
sjmp Mulai
Banding4:
cjne r0,#4,Banding5
mov
P2,#0b2h
sjmp Mulai
Banding5:
cjne r0,#5,Banding6
mov
P2,#0a4h
sjmp Mulai
Banding6:
cjne r0,#6,Banding7
mov
P2,#084h
sjmp Mulai

31

Banding7:
cjne r0,#7,Banding8
mov
P2,#0f1h
sjmp Mulai
Banding8:
cjne r0,#8,Banding9
mov
P2,#080h
sjmp Mulai
Banding9:
cjne r0,#9,Mulai
mov
P2,#0a0h
sjmp Mulai
Delay:
mov

r7,#100

Delay1:
mov
r6,#200
djnz r6,$
djnz r7,Delay1
ret
end

3. Langkah Kerja
- Buat program 1 pada text editor (notepad, pinnacle, crimson editor), kemudian
simpan file tersebut dengan nama file Switch dengan ekstensi .asm pada folder
khsusus*.
- Lakukan pengkonversian (meng-compile) file tersebut ke bentuk hexa (.hex)
dengan menggunakan ASM51.exe atau langsung pada aplikasi yang telah tersedia
compilernya.
- Hubungkan AT89S51 downloader ke PC melalui port parallel / serial.
- Jalankan aplikasi Atmel ISP programmer pada PC.
- Download file yang berekstensi .hextersebut ke dalam IC AT89S51 dengan
menggunakan aplikasi Atmel ISP programmer.
- Run target pada Atmel ISP programmer untuk menjalankan hasil yang telah
deprogram.
- Ulangi langkah di atas untuk mencoba program 2 dan 3.

4. Analisa
- Catat perubahan yang dikeluarkan setelah program 1, 2 dan 3 dijlankan**.
- Buat program running led dari kanan ke kiri jika salah salah satu switch ditekan
dan running led dari kiri ke kanan jika switch lainnya ditekan.
- Buat program nyala led per step jika salah satu switch ditekan dan padam led per
step jika switch lainnya ditekan.
- Buat program Up-Down binary counter (4 bit) ditampilkan di LED.
- Buat program Up-Down decade counter ditampilkan ke 7 segmen.
5. Kesimpulan
Buat kesimpulan yang diperoleh pada saat praktek**
32

Keterangan:
* Folder baru yang di dalamnya terdapat file ASM51.exe dan file Mod51
** Dibuat dalam bentuk laporan praktikum
No. Form. : F:ISO-KUR-06
SEKOLAH MENENGAH KEJURUAN
NEGERI 1 CIMAHI
Kelompok : Insrtrumentasi Industri
Job Sheet Mikrontroler
Jurusan Kontrol Proses
Dasar 4
Jl. Mahar Martanegara No. 48 Kota Cimahi

Pemrograman Keypad
1. Tujuan Kegiatan Belajar
- Siswa dapat memahami penggunaan port pada AT89S51 sebagai I/O

33

Siswa mampu merancang program assembler untuk mengendalikan 7-Segmen


dengan input keypad
Siswa mampu membuat minimum system pengaturan display 7-Segmen melalui
keypad dengan menggunakan AT89S51

2. Materi
1

P1.3
P1.2
P1.1
P1.0

P3.4
P3.5
P3.6
P3.7

Gambar 3.7. Susunan konfigurasi keypad matrik

P1.3
P1.2
P1.1
P1.0

P3.4
P3.5
P3.6
P3.7

P1.7

P0.0

P1.6

P0.1

P1.5

P0.2

P1.4

P0.3

P1.3

P0.4

P1.2
P1.1

P0.5
P0.6

P1.0

P0.7

P3.0

P2.0

P3.1

P2.1

P3.2

P2.2

P3.3

P2.3

P3.4

P2.4

P3.5

P2.5

P3.6

P2.6

P3.7

P2.7

g
a
b
c
d
e
f
dot

vcc

vcc

Gambar 3.8. Susuna keypad matrik dengan 7 segmen

Program menampilkan 0-9 dan A-F


Program1
$mod51
org

Mulai:
mov
P1,#0f7h
jb
P3.7,Key1
mov
P2,#0f3h
sjmp Mulai
Key1:

34

jb
P3.6,Key2
mov
P2,#089h
sjmp Mulai
Key2:
jb
P3.5,Key3
mov
P2,#0a1h
sjmp Mulai
Key3:
jb
P3.4,Key4
mov
P2,#090h
sjmp Mulai
Key4:
mov
P1,#0fbh
jb
P3.7,Key5
mov
P2,#0b2h
sjmp Mulai
Key5:
jb
P3.6,Key6
mov
P2,#0a4h
sjmp Mulai
Key6:
jb
P3.5,Key7
mov
P2,#084h
sjmp Mulai
Key7:
jb
P3.4,Key8
mov
P2,#086h
sjmp Mulai
Key8:
mov
P1,#0fdh
jb
P3.7,Key9
mov
P2,#0f1h
sjmp Mulai
Key9:
jb
P3.6,Key10
mov
P2,#080h
sjmp Mulai
Key10:
jb
P3.5,Key11
mov
P2,#0a0h
sjmp Mulai
Key11:
jb
P3.4,Key12
mov
P2,#0cch
sjmp Mulai
Key12:
mov
P1,#0feh
jb
P3.7,Key13
mov
P2,#09ch
sjmp Mulai
Key13:
jb

P3.6,Key14
35

mov
P2,#0c0h
sjmp Mulai
Key14:
jb
P3.5,Key15
mov
P2,#08ch
ljmp Mulai
Key15:
jb
P3.4,Key16
mov
P2,#083h
ljmp Mulai
Key16:
ljmp Mulai
end

Program menampilkan 0-9 dan A-F dengan metode Look Up Table


Program2
$mod51
org

Mulai:
mov
mov
mov
mov

73h,#4
r5,#0f7h
DPTR,#Angka
71h,#0

mov
mov

70h,#07fh
72h,#0

mov
mov
call
mov
cjne
mov
add
movc
mov
sjmp

P1,r5
a,P3

Ulang:
Ulang1:
delay
a,P3
a,70h,Geser1
a,72h
a,71h
a,@a+DPTR
P2,a
Mulai

Geser1:
inc
72h
mov
a,70h
RR
a
mov
70h,a
mov
a,72h
cjne a,#4,Ulang1
NextScan:
mov
add
mov

a,71h
a,#4
71h,a

36

mov
a,r5
RR
a
mov
r5,a
djnz 73h,Ulang
mov
P0,#0ffh
ljmp mulai
Delay:
mov

r7,#50

Delay1:
mov
r6,#100
djnz r6,$
djnz r7,Delay1
ret
Angka:
db
db
db
db

0f3h,89h,0a1h,090h
0b2h,0a4h,84h,086h
0f1h,80h,0a0h,0cch
9ch,0c0h,8ch,83h

end

3. Langkah Kerja
- Buat program 1 pada text editor (notepad, pinnacle, crimson editor), kemudian
simpan file tersebut dengan nama file Keypad dengan ekstensi .asm pada folder
khsusus*.
- Lakukan pengkonversian (meng-compile) file tersebut ke bentuk hexa (.hex)
dengan menggunakan ASM51.exe atau langsung pada aplikasi yang telah tersedia
compilernya.
- Hubungkan AT89S51 downloader ke PC melalui port parallel / serial.
- Jalankan aplikasi Atmel ISP programmer pada PC.
- Download file yang berekstensi .hextersebut ke dalam IC AT89S51 dengan
menggunakan aplikasi Atmel ISP programmer.
- Run target pada Atmel ISP programmer untuk menjalankan hasil yang telah
deprogram.
- Ulangi langkah di atas untuk mencoba program 2.

4. Analisa
- Catat perubahan yang dikeluarkan setelah program 1, 2 dijalankan**.
- Buat program penampilan angka 0-9 dan huruf A-F pada display 7 segmen
sebagaimana susunan keypad pada pesawat telepon.
5. Kesimpulan
Buat kesimpulan yang diperoleh pada saat praktek**

37

Keterangan:
* Folder baru yang di dalamnya terdapat file ASM51.exe dan file Mod51
** Dibuat dalam bentuk laporan

38