scan0001_3 (1)l

50
UNTIIK KALAN(iAN SFNI>(RI DAN TIJ)AK DIPERJlJAL BI~I.IKAN PETUN.JUK PRAKTIKlJM APLIKASI MIKROKONTROLER ATMEL 89C51 LAB()RATORIUM APLIKASI MIKROPROSESOR JURUSAN TEKNIK ELEKTRO FAKUL TAS TEKNOLOGIINDUTRI INSTITUT TEKNOLOCllNnONESIA 2005

Upload: ganesha-putra

Post on 24-Apr-2015

50 views

Category:

Documents


4 download

DESCRIPTION

bubu

TRANSCRIPT

Page 1: scan0001_3 (1)l

UNTIIK KALAN(iAN SFNI>(RIDAN TIJ)AK DIPERJlJAL BI~I.IKAN

PETUN.JUK PRAKTIKlJMAPLIKASI MIKROKONTROLER

ATMEL 89C51

LAB()RATORIUM APLIKASI MIKROPROSESORJURUSAN TEKNIK ELEKTRO

FAKUL TAS TEKNOLOGIINDUTRIINSTITUT TEKNOLOCllNnONESIA

2005

Page 2: scan0001_3 (1)l

TIM ()ENYtJSlJN DAN IlERlJMlJS

BUKU PETUNJUK PRAKTIKUM APLIKASIMIKROPROSESOR

PENANGGUNG JAW AS : Ir. Tris Dewi Indraswati, MT

LABORATORIUM AJ>LIKASI MIKROPI~OSES()RJLJRLJSANTEKNIK ELEKTI~O

FAKULTASTEKNOLOGIINDUSTRIINSTITUT TEKNOLOGI INDONESIA

SERPONG2005

KETUA

ANGGOTA

: ZaIdi Hidayat, ST

: Andi Maulana, ST

Edwin Kamal, ST

Page 3: scan0001_3 (1)l

INSTlTUTTEKNOLOGIINDONESIA

PRAKTIKUM APLlKASI MIKROPROSESOR

MENGGUNAKAN MIKROKONTROLER 89C51

J. Pcndnhuluun

Mikrokontroler adalah mikroprosesor yang dikemas berikut sistem minimumnya

sehingga dengan satu chip ( single chip) sudah langsung bekerja, karena dalam chip

89C51 terdapat port paralel, port serial, internal memori, programmable timer port.

AT89c5l adalah mikrokontroler dengan 4K bytc Flash PEROM

( Programmable and Erasable Read Only Memory ) sehingga dapat diisi ulang dan

dihapus berkali - kali.

Banyak aplikasi yang· menggunakan mikrokontroler ini, kontrol temperatur

ruangan, kontrol ketinggian air, kontrol sistem injeksi bahan bakar mesin. Beberapa

mikrokontroler dihubungkan k\~ komputer pusat untuk mengerjakan fungsi yang lebih

komplek!:, misal mengontrol sebuah pabrik, bendungan, pembangkit listrik, pengamat

cuaca dan lain sebagainya.

II. Tujuan

Tujuan dari prak~ikum aplikasi mikroprosesor antara lain:

• Mcngetahui kemampuan IJC 89C51

• ~lengenallnstruksi - instruksi IJC 89C51

• Mengenal Sistem minimum IJC 89C51

• Membuat aplikasi IJC 89C51

Mlkrokontroler 89C51

Page 4: scan0001_3 (1)l

1'--"fH.JCrlAM' -.'.J"

AUUIH;~S •

I. m REGISTER . 'oj .. "

.1 1.1 ~., "

• BUFFER6 . ~··-1' --_.~!L_ ..._..._._ •..•__

I PROGRAM 1" "

]"'1: fl" 'I I COl)N1Ell"r I'

t"l I, I: DPTR ._)

-- f----II .. ..,, ~~v,I .

11'0111 ~.IIlICII I

'J I'"<: -'"

··>r-";R~5:~3~----1HHnn

Inl.llupl. ",1.1tnd Tim" block.nd 61.lul block

IJUJrtIDRIVERS

"-I' 'I-I'. '.1 L

[l:~~mItt

It Ut. ttlPORT 0

DRIVERS

rc~-"[POliO]

n"

RAM

~::::t~~I.,.[.~"~~..'.,~/ ...

--II-"

• Register B adalah register yang digunakan selama operasi perkalian dan

pembagian.

• Stack Pointer adalah register dengan panjang 8 bit, digunakall dalam proses

penyimpanan dan pengambilan dari/ke stack.

sClllclllara.

Gambar Blc;>ckDiagram Arsitektur lie A T89C.Q.1

IINTR f

TIMING I JClIAND ON /1

CONTROL I REG -ISTE r ..

[J'J I •

,kontroler 89C51

Blok Diagram Mikrokontroler 89C51

Register - register yang terdapat pada mikrokontroler 89C51

1. Register PSW ( Program Status Word) berisi bit - bit status yang berkaitan

den£an kondisi CPU ( eel/lml }'rocessillg Ullit ) saal itu.

2. SFR ( .\jJecial }1;l/1clio/1 Regisler ) adalah register yang memiliki fungsi - fungsi

khL~SUSseperti :

• Akumulator ( A ) adalah register yang digunakan untuk menyimpan data

INSTITUTTEKNOLOGIINDONESIA

Page 5: scan0001_3 (1)l

'okontroler 89C51

2. Kelcmpok instruksi Aritmatika

• ADD atau ADDC adalah instruksi yang melibatkan akumulator dan berfungsi

untuk mcnjumlahkan. Hasilnya akan disimpan pad a akumulator.

Contoh:

..•.'

; Salin data ckst. pad a I(lkas! DPTR kc

akumulator,

A,20h

a,@DP'TRMov

; salin/ pindahkan isi lokasi memori 20h ke

akumulator.

• MOVX (muve ekstemal) adalah instruksi yang digunakan untuk

memindahkan / menyali data. Biasanya instruksi ini digunakan

dalam memindahkan' / menyalin dari memori data eksternal.

Contoh:

• Data Pointer ( DPTR) ada/ah register yang terdiri dari bYle rendah (DPL) dan

byte tinggi ( DPH) yang dapat menyimpan data sebanyak 16 - bit.

• Register serial data buffer ( SBUF ) adalah register yang digunakan dalam

komunikasi serial .

• Register timer ( THO dan TLO ) adalah 'register pencc.cah 16-bit lIntuk masing ­

masing TimerO, Timerl, dan Timer2.

• Register kontrol adalah register ( JP, IE. TMOD. TCON. SCaN. dan PCON)

yang bcrisi bit - bit kontrol, dan status ulltuk sislclll inll'rupsi,

pencacah/pcwaktu, dan port serial .

• Register general purpose ( RO - R7 ) adalah register yang biasa digunakan

untuk pengalamatan tidak langsung.

Instruksi - instruksi 89C51

I. Kelompok Penyalin Data

Il MOV (move) adalah instruksi yang digunakan untllk

memindahkan / menyalin data. Biasanya instrllksi ini digunakan

dalam memindahkan / menyalin dari memori data internal.

Contoh:

Mov

/NSTITUTTEKNOLOGIINDONESIA•

Page 6: scan0001_3 (1)l

'Okontroler 89C51

• SURB adalah instrllksi yang melibatkan akllll111lalor dan berrungsi llnlllk

pengllrallgan. Ilasil dari pcngllrangan ini disimpan dalam akllmliialor.

Contoh:

INSTITUTTEKNOLOGIINDONESIA 4

; isi akllmulalor dcn!4all dala 20h•..

; Kllrangkan nilai dalal11 aklll11111alor

dengan 10h kernlldian simpan di

akul11ulalor.

; iJi akullllllator dengan chlt'l 20h

; tambahkan data #20h dengan isi

akumlllator ( 20h) hasilnya masukkan ke­

akumulator ( 40h).

; bi akumulator dengan data 10h

; isi akumulator dengan data 20h

hasilnya 16 -- bit ( 0200h) high byte disimpan

dalam register B (02h) dan low hyte disimpan

di akumulator (OOh).

A,1I20h

A,HIOh

A,#20h

A, #20h

A,#10h

B,#:!Oh

AD

MOY

ADD

MOY

MOY

MUL

MOY

SUBB

DIV adalah instruksi ~'ang melibatkan akumulafor dan berfungsi untuk

pembagian. Hasilnya 16 - bit high hyte disimpan dalam regisler B dan low

byte disilllpan di akumulalor. Bil OY pada regisler PSW akan disel '0' jika

register B bernilai OOH, jika tidak diset '1'.

MlJL adalah instruksi yang melibatkan akllmlilator dan berfungsi lIntlik

mengalikan. Hasilnya 16 - bit high hyte disimpan dalam register B dan low

hyte disimpan di' akumulator. Bit OY pada register PSW akan diset '0' jika

register B bernilai OOH,jika tidak diset '1'.

Contoh:

INC untuk menaikan suatu nilai ( 1 byte ) yang tersimpan dalam

akumulator, register sebesar 1. Instruksi DEe untuk menurunkan suatu nilai

. ( 1 byte) yang tersimpan dalam akumulator, regi~ter sebesar 1.

Page 7: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA

Contoh:

MOY

INC

DEC

A,#20h

A

A

; isi akumulator dengan data 20h

; naikan nilai akumulator (21 h)

; Turunkan nilai akumulator ( 20h )

3. Kelompok instruksi Logika.

• ANL adalah instruksi yang digunakan untuk me-nol-kan bit

tertentu dari suatu bilangan biner 8 Lit.

Contoh:

MOY A,# I0'10 I0 IOb ; isi akllmlllator dengan data AAh

ANL A,#OOOOllllb; nol-kan bit ke-4 salllpai bit ke -7, kCllludiall

lllaSUkall ke akullllllator nilai akulllulator

sel:arang OAh.

• ORL adalah instruksi yang digunakan lIntllk me-satu-kan bit

tertentu dari suatu bilangan biner 8 bit.

MOY

ORL

A,#10101010b

A,#OOOOll JIb

;ISI akumulator dengan data AAh

; satu-kan bit ke-l dan bit ke -3, kemudiall

masukan ke akumulator nilai akumulator

sekarang AFh.

• XRL adalah instruksi yang digunakan untuk membalikkan ( complement)

beberapa bit terten~u dari suatu bilangan biner 8 bit.

MOY A,#lOlOlOIOb ; isi akumulator dengan data AAh

XRL A,#OOOO1111 b ; balikkall bit ke-2. ke-4, ke-S. dan bit ke 6,

kemudian masukan ke akumulator Ililai

akumulator sekarang ASh.

4. Instriksi pengujian Boolean

• JB ( Jump Bit ) dan JNB ( Jump Not Bit ) adalah instruksi yang

digunakan untuk memeriksa suatu lokasi bit apakah berlogii<a' I ' atau '0'.

Contoh:

Mlkrokontroler 89C51

Page 8: scan0001_3 (1)l

6

; Lompat jika Port 1.0 berlogika . I '.

; Lompat jika Port 1.0 berlogika '0'.

2000h

A,P3.l

900h

A,P3.1

PO.I, $

PO.l,S

ORG:

MOV

JB

JNB

LJMP Tugas _baru

ORG

Tugas_baru : MOV

AJMP Tugas_baru

ORO OF8h

SJMP Tugas_baru

• AJMP ( Abso/ul Jump ) adalah' instruksi yang dapat menjangkau

memori-program MCSSl sejauh 2 KiloByte (=211).

Contoh:

• SJMP ( SOI'l Jump ) adalah instruksi yang dapat menjangkau semua

memori-program MCSSI sejauh - 128 sampai +127.

Contoh:

:ontroler 89C51

5. Kelompok instruksi .Ii 1MI'

• LJMP (I,O/IK Jump) adalah instruksi yang dapat

semua memori-program MCSS! sejauh 64 KiloByte (=21(').

Contoh:

,TITUTTEKNOLOGIINDONESIA

Page 9: scan0001_3 (1)l

ontroler 89C51

7

Memberikan bit" I"kc PorI 0.1 ( PO -

1000h

A,P).!

A,PO , isi RO dengan data pada port not

/\,#OOh, lanjut; bandingkall A dengall data .#OOh,

kemudian lompat ke labellanjut jika

A bellirn sarna dengan data #OOh.•...

RO,#9

RO, Janjut

lanjut: MOV

CJNE

lanjut: MO

DJNZ

ORG

Tugas_baru : MOV

SETB PO. I

00000010)

• CLR adalah instruksi yang digunakan untuk memberikan bit "0" ke register, port

yang besarnya 1 bit.

Contoh:

; isi RO dengan data 9 dcsimal

; kurangi RO,kernudian lornpat ke

label lanjut jika RO belum sama dengan

nol.

• CJNE ( Compare Jump (f No: Equal ) adalah instruksi yang akan

rnembandingkan dua nilai data dan akan rnelompat jika tidflk sarna.

Contoh:

CLR PO.l ; Memberikan bit "0" ke Port 0.1 j adi port 0.1

berlogic "0"

• Push adalah instruksi yang digunakan untuk memasukan 1 byte ke stuck.

6. Kelompok Instruksi SUB-RUTIN

• DJNZ ( /)ecre/lI(!II/ .lump if No! Zero) adalah instruksi yang akan mcngllnlngi I

nilai register serbaguna ( RO-R7 ) atau memori data dan akan rnelornpat jika

belulll nolnilainya.

Contoh :

7. Instruksi Khusus

• SET8 adalah instruksi yang digunakan untuk memberikan bit "I" ke register,

p0l1 yang bcsarnya 1 bit.

Contoh:

!NSTITUTTEKNOLOGIINDONESIA

Page 10: scan0001_3 (1)l

menerllS.

sarna.

Mikrokontroler 89C51

3

; isi akumulator dengan data 01 h

; Geser akumulator 1 bit ke kiri

RO,#10h

A,#30h

@RO,A

A,#20h

A,@RO

MOY

MOY

MOY

MOY

XCH

MOY A}ilOOOOOOOb

RL A

MOV A,#OOOOOOOlb

RL A

; Isikan register RO dengan data 10

; Isikan akumulator dengan data 30h

; Isikan alamat 10h dengan data 30h

; isikan akumulator dengan data 20h

; tukarkan data pada akumulator dengan

data di RO ( A=30, RO=20 )

• $ ( < label> : < instruksi > < label> adalah instruksi pengulangan kctempat yang

;isi akllmlilator dengan data 01 h

;Geser akumulator 1 bit ke kanan

( A=O I OOOOOOb)

• XCH adalah instruksi yang digunakan untuk menukar ~ilai dari suatu alal11al

dengan suatu regist~r ( ex.' Akumulator ).

Contoh :

Contoh:

SJMP $ at au Ulang: SJMP u'lang ; perintah lIntuk mengulang terus

-

( A=OOOOOOIOb)

• RR ( Rotate RighI) adalah instruksi yang melibatkan akul11ulator, yung

mengeser ke Kanan 1 bit.

Contoh :

Push A ; Masukan niai pada akumulator ke stuck ( 07H)

• Pop adalab instruksi yang digunakan untuk I11cngcluarkan I byte dari stuck.

Contoh:

Pop A ; keluar-kan niai dari stuck ( 0711) kc aklll11ulator.

• RL (Rotate Left) adalah instruksi yang melibatkan akumulator, yang mengeser

ke kiri I bit.

Contoh:

Contoh :

INSTITUTTE~NOLOGIINDONESIA••

Page 11: scan0001_3 (1)l

Teori:

Memahami lIrlitan proses pengembangan perangkat lunak assembler

mikrokontroler 89C51 dan mengisi IC mikrokontroler.

Semlla proses pengembangan perangkat lunak melallii perangkat keras komputer

PC kompatibel. Proses pengembangan perangkat lunak ar·sembler mikrokontroler

89C51 meliputi

1.1. Editing

1.2. Assembling

1.3.linking / Convert

1.4. Debugging

1.5. Executing

9

-

MC-Ol : PENERAPAN KOMPUTER

PRAKTIKUM MODUL IPcngembangan perangknt Lunnk nssemhh.· •.

Mikrokontroler 89C51

INSTITUTTEKNOlOGllNDONESIA-.!!!!!I!

Tuju8n :

Tugas pendahuluan :

1. File - file apa saja yang akan dihasilkan jika melakukan proses pengembangan

perangkat lunak assembler mikrokontroler 89C51

2 Sebutkan register - register yang terdapat dalam mikrokontroler 89C51

3. Berapa jumlah memori yang terdapat di dalam mikrokontroler 89C51

4. Gambarkan simbol dari flow chart untllk hal- hal sebagai berikut :

• MemuJai / mengakhiri program

• Penginisialisasian / proses

" Input/Output data

• Kondisi / kcputllsan

Page 12: scan0001_3 (1)l

10

Latihan .ASt

i>rak.A51

ASSEMBLING

Assembling adalah proses merubah Source program dalam bahasa assembly

menjadi bahasa mesin dari mikrokontroler 805 1. Paket perangkat lunak yang digunakan

adalah A8SEMBLER. Oalam praktikum ini digunakan ASM51.

Untuk melakukan proses assembly digunakan perintah

SIM<spas;> < nail'" program timpi' extensi> .

Jika proses assembly tidak ada kesalahan maka akan ditampilkan pesan :

Editing adalah proses membuat Source program. Paket perangkat lunak yang

dUjunakan unluk proses pengcdilnn ( Editor) biusunya digunakan : NOlepad. MS-Dos

Editor. l-!asil dari proses editing merupakan file dengan extensi " .ASt". biasanya

..extensi ini diberikan saat program disimpan

KOMPII,ASI ASM5/

File: C :\8031\colltoh.A51

. Dos 7. /0 ( 038-N) MCS-5/ MA CRO ASSFMRIRR, V2.3

Copyright 1979, 1983, 1986 Intel Corporation

ASSEMBLY COMPLl~'1'E,NO ERROR FOUND

Jika ada kes"lah"", Tekall Clr/-C !!!

Pres.VIIlY key to co1ltinue ...

S. File dengan ekstensi apa yang dapat riiisikan kedalam mikrokontroler

6. Apakah arti dari perintah :

MOV A,#10H

MOV A,@10H

MOVRO,#25

MOV @RO,#25H

UIiiSTITUTTEKNOLOGIINDONESIA

Page 13: scan0001_3 (1)l

II

Linking adalah proses menggabungkan beberapa file object menjadi file

cutable. Paket perangkat lunak yang digunakan untuk melakukan proses linking

alah RL51 ini biasanya uisebut LINKER.

Setelah proses assembly akan didapatkan file dengan exten5:.i .OBJ, kemudian

4i1anj!Jtkandengan proses linking dengan menampilkan ptlsun :

HasHdari proses assembly adalah file - file dengan exstensi ". OBJ" dan " .LST" .

Contoh:

Prak .OBJ dan Prak .LST

btihan .OBJ dan Latihan .LST

HEX TO OBJ KONV~'R1'ElI:

INTEL fVRMA T VI.1 (L) 1986

INPUTFllR

bUTPUTFILE:

Setelah memasukan file - filenya kemudian di enter maka akan tampil pesan :

KOMPlLASl ::J'ELESAI

C:\80JJ>rem @pause;

C:\80JF'-'/'em 80J/sil11 . lIamafile dellKall exsteJlsi .flex ,

C:\80JJ>

Jika ada kesalahan akan ditampilkan pesan :

HUT TEKNOLOGIINDONESIA

ASSF:MRLY COMJ>/,R71 ••: <Jum/ah kesalahan> mmOR FOllND <Baris kesalahal/'

ado kesalahan, 1'ekan Ctr/-C !!!, Press a/~} key to continue ...

Page 14: scan0001_3 (1)l

C:18t))1> A V

Ikrokontroler 89C51

Setelah memilih E: maka akan ditampilkan tampilan simulasi seperti-gambar 1.1. dibawah ini.

12

CMOS ROM

E : 80C51

F: 80C31

HMOS ROM Less

C : 8031

0: 8032

Choose a CPU for simulation

Intel 8051 Family Microcomputers

•••

HMOS ROM

A: 8051/8751

B : 8052/8752

Maka akan ditampil pesan :

1.5. E:XECUTING

• Executing adalah proses melaksanakan program - program yang telah

dikembangkan dan tidak terdapat kesalahan lagi. Proses ini dilakukan melalui proses

SIMULASI. Paket perangkat lunak yang digunakan adalah AVSIMS 1 untuk melakuknn

proses simulasi. Untuk melakukan proses simulasi digunakan perintah :

INSTITUTTEKNOLOGIINDONESIA

1.4. DEBUGGING

Debugging adalah proses mencari kesalahan pada asuatu program. Paket untuk

melaksanakan proses tersebut DEBUGGER. Proses ini secara otomatis akan

dilaksana!<an pada waktu pr~ses assembly dija1ankan dengan menampilkan pesan:

ASS/~MRI, y ('OMP U~TR. ,;·.Jumlah ke.\'alahclII '. RRROR FO lINn, Raris kesalahoJl· .

Page 15: scan0001_3 (1)l

13

TF/TR G/T /1"Il/Mo 0 000o 0 000

:::;:l. ~:;PCI{)~:p::,1:';" ClJR,:::;)[<

OFF HI ON OFF MENU

(';'C'j !:", :

lritSA. STj, ••.:q.. T0. Xo..fd9JT. I EEhOOCF OOoxo:o

Pr 00 0 00 Xl: 0 .9

()~ta-space " .Ovoo 00 00 00 00 00 00 00 00 !iim!!~Hi!E!!i!E!lP6f't$> <

0006 00 00 00 00 00 00 00 00 !iiiWHH1iiEH!!H PO .:1.1::..1:1.11Ot)i0 00 00 00 00 00 00 00 00 ;i:;;;;;~i:;;;;;~i;;;i FF·jj;'J.:t.11111oo.ta 00 00 00 00 00 00 00 00 iHiHiiiiiHiiji;ijiij Pl·· ..·llll111

'~n; :!H: :111.1111:12 1111111F:Hj; 11112.1113 Ihl11JF ;Hi: 111lJ.1l

-"SDdC2"- Ese to scre~n

Pada baris terakhir terdapat perintah - perintah sebagai berikut :

• Dump adalah perintah yang digunakan untuk memanipulasi alamat memori baik

memori internal maupun memori eksternal pada Data Space. Terdapat 2 area

dalam simulator ini, jika area pertama dijadikan sebagai memori internal maka area

kedua dijadikan memori internal dan sebaliknya, atau kedua - duanya dijadi!,:an

memori internal atau memori ek!:ternal.

• Set adalah perintah yang digunakan untuk mendetinisikan memori dari <low

address> sampai <high address> agar dapat di-eksekusi.

• Load adalah perintah yang digunakan untuk memasukan simbol dan objek atau

program yang telah dibuat.

• Quite adalah pcrintah untuk mengakhiri program.

• Memory adalah perintah ya'lg digunakan untuk mengisi, menghapus, memindahkan

isi dari alamat memori tertentu.

GambaI' 1.1. Tampilan simulator AVSIM51

000lH no memory0002H no memory0003H no memory(l004H no memoryOOOSH no memory0006H no memory0007H no memoryOOOSH no memory0009H no memoryOOOAH no memoryOOOBH no memoryOOOCH no memoryOOOOH no memoryOOOEH no memoryOOOFH no memoryOOlOH no memory0011H no memoryOOl2H no memory0013H no memory0014H no memory001SH no memory>SelectCommand - or use arrow keysi,Gl..lilliJ Expressior: cOill1;,andr:1'le He 10

__ (1)-.11il:~~S'€t;,"';:Y;;'dW@R~Ir:f(j¥j:?""""""c"c"'"", ..•......·m.m .••••••.•.•.•.•.•.••·••.••.•.•.•.•.•.••.•••m· .••.•••.•.•.••••••••••

_.~HU •••••.. u •..~~.U~~ •••••• _"'LO.U.U •••• ~Jo:::

t\JkrOkontro~89C51

INSTITUTTEKNOLOGIINDONESIA

Page 16: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA 14

1.6. INSTRUKSJ MLKROKONTROLER soeSl

• ORG

Origin ( ORO) digunakan untuk menunjukan lokasi memori tempat instruksi

atau perintah yang ada' di bawahnya disimpan. Bentuk dari ORG adalah :

ORa <ebpre.'1i>

• END

End diletakan di akhir program, biasanya digunakan untuk mengakhiri proses

assembly ahu mengakhiri program. Bentuk dari END adalah :

ENO

• EQU

Equate digunakan untuk mendefinisikan sebuah simbol atau lumbang

assembler secara bcbas. 13cntukdari EQU adalah :

< variabel> EQU <address a/au data>

Page 17: scan0001_3 (1)l

Mikrokontroler 89C51

15

Ketcrangan

Simbol yang digunakan'~~'t~'k-n'lena;;dabln-'program

dimulai atau diakhiri.

Simbol yang digunakan untuk menandakan bahwa

program melakukan suatu proses atau inisialisasi

( menetapkan nilai - nilai tertentu )

Simbol yang digunakan untuk menandakar bahwa

program melakukan proses input atau output

Simuol yang digunakan 1I1lluk Illcllalldakan bahwa

program melakukan proses pengarnbilan keplltllsan

suatu kondisi tertentu.

/

~ .',l5TART~~TOP /)

Downlondcr

FLOWCHART

Downloader adalah piranti yang digunakan untuk mengisi Ie - Mikrokontroler.

File yang dapat diisikan oleh downloader adalah file dengan extensi " .HEX " .

Sotlware yang digunakan adalah ATMEL 89 series Flash Programmer Versi 3.0 yang

ditunjukan gambar 1.2.

/ .,-

/ INPUT I OUTPUT

< KONDISII KEPUTUSAN >.>.~-

INSTITUTTEKNOLOGIINDONESIA

Page 18: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA

Gambar 1.2. Software down loader AT89c51

Pada dasarnya cara mengisi dan mengosongkan IC-AT89c51 adalah scbagai bcrikut :

I. Masukan file dengan extensi .HEX melalui proses:

Open File ~ < Nama file> . HEX ~ Write ~ OK

Edit ~ Clear ButTer ~ YES ~ OK

Catatan : IC - Harus disimpan terlebih dahulu pada alat pengisian ( down loader ).

Mlkrokor Itroler 89C51

16

Page 19: scan0001_3 (1)l

FINSTITUTTEKNOLOGIINDONESIA~~ !!!!!l! !!!!l

17

END

~'Simulasikan program dibawah ini untuk menjalankan proses pengembangan perangkt Ilinakf,'

tassembler.

rfprognun - program untuk IlIcngatul' Program Status Word (PSW)i&.

1,1 Program untuk mengatur bank data di dalam PSW

ORGOOH

MOY A,#30HMOYRO,AMOY PSW,#00001000BMOV A,#45HMOY RO,AMOV PSW,#OOOI0000BMOY A,#S6HMOY RO,AMOY PSW,#OOO II 0008MOY A,#70HMOY RO.A

SJMP $END

1.2 Program untuk mengetahui status Carry, Paritas, Overflow, dan Auxiliary Carry

ORG OOH

MOY A,#OOOOOOOOBSl.m B /\,#0000000 IBCLRCCLR A

MOY A,#OFFHADD A,#O,lHCLRAMOY A,#80HMOY B,#70HMUL AB

SJMP $

k~:

$f

f Tugas Akhir Modul& .

I. Buat flow chart untuk program 1.1, program 1.2 dan terangkan arti dari tiap instruksi.

2. Terangkan kronologis pembuatan program sampai proses simulasinya.

3. Terangkan arsitektur mikrokontroller 89C5 1.

4. Gambarkan sistem minimum dari mikrokontroler

Mlkrokontroler 89C51

Page 20: scan0001_3 (1)l

2.1. Pendahuluan

Tujuan:

Mempelajari instruksi transfer data, aritmatika, logika dan Interface.

Teori

l3eberapa instrllksi yang digunakan lIntlik proses transler data, opcmsi aritmatika, logika

dan interface yaitl! sebagai berikut :

INSTITUTTEKNOLOGIINDONESIA

MC - 02 : PENERAP AN KOMPUTER

PRAKTIKUM MODUL II

Transfer Data, Operasi Aritmatika, Operasi logika dan kterfacc

Mikrokontroler 89C51

Transfer data Operasi AritmatikaOperasi LogikaOpcrasi Interface-

------ ...-.------MOV ADD ANLPO (~IlH)

MOVX

SUBB ORLPI (90H)

PUSH

MUL XRLP2 (A(IH)

POP

DIV RRP3 (SOH)

XCH

INC RLJNB

DEC

CPLCLR--SWAPSETS--

18

Tugas Pendahuluan :

I. Sebutkan fungsi dari register RO sId R7 dan register DPTR.

2. Datal = 1010101Ob, Data2 = OIOIOOOlb, jika Datal dan Data2 di OR, AND, dan

XOR logikkan berapa hasilnya ... ?

3. Datal = 10101010b, jika di Complement dan di Swap apa hasilnya ... ?

4. Berapa alamat dari PortO sid Port3 pada mikrokontroler ... ?

5. Register - register apa saja yang terlibat dalam proses perkalian, pembagian,

penjumlahal1, dan pengur~ngan.

6. Buat program yang dapat menghasilkan operasi gerbang : OR, AND, NOR,XOR,

danNOT

7. Apa arti dari perintah:

• MOY PO,A

• CJNE A,#0511, ulang

Mikrokontroler 89C51

Page 21: scan0001_3 (1)l

2. Transfer data dari Register ke Memori

Terdapat 2 perantara yang dipakai dalam transfer data yaitu DPTR untuk

transfer memori eksternal dan RO sid R7 untuk transfer memori internal.

Contoh

3. Transfer data dari Memori ke Register

Terdapat dua perantara yang dipakai untuk transfer data daTi memon

internal ke register melalui register general purpose dan transfer rnemori eksternal

ke register melalui data pointer ( DPTR).

Contoh

2.2. Percobaan transfer memori ke register

1. Transfer data dari Register ke Register

Beberapa Register yang biasa digunakan diantaranya Register Akumulator

(A), Register Base (B), dan General Purpose Register ( RO sId R7). Program

dibawah ini untuk memindahkan data di ROkc R2.

Contoh

19

OOH

A,#40h

@DPTR.AA

A,@DfTRRO,#25h

A,#20h({nRO,AA

A,@RO$

OOh

RO,#30

DPTR,#2000hA,RO

@DPTR,ASTOP

OOh

RO,II30h

A,ROR2.A6,R2

STOP

OROMOVMOVXCLRMOVXMOVMOVMOVCLRMOVSJMPEND

OROMOVMOVMOVMOVXSJMPEND

OROMOVMOVMOVMOV

STOP: .. SJMPEND

STOP:

INSTITUTTEKNOLOGIINDONESIA

Mikrokontroler 89C51

Page 22: scan0001_3 (1)l

lkrokontroler 89C51

ORG OOh

MOV DPTR,#3000hMOV RO,#20hMOV R.,,#()() : COUNTERMOV A, #20h

Mengirimkan data dari memori inicrnall\c IIlcmori cksterushl.

Memindahkan ]0 data 20h sid 29 dari memori internal 20h sid 2911 ke memori

eksternal dengan alamat 3000h sid 3009h.

Contoh:

20

OOH

R3,#5 : COUNTERDPTR,#2000hA,#23h@DPTR, ADPTRR3, LOOP$

ORG

MOVMOVMOVMOYXINCDJNZSJMPEND

ORG OOH

MOV RO, #20hMOV A,#10hMOV @RO,AADD A,NOShINC RO

MOV t'mRO,ACLR A

MOV A.20hMOV 25h.AMOV A,21hMOV 26.ASJMP $END

4. Transfer data dari Memori ke Memori

Data yang terdapat di memori internal dengan alamat 20h dan 2\ h akan

dirindahkan ke memori internal dengan alamat 2Sh dan 26h.

Contoh

Menulis data ke memori eksternal

Data sebesar 23h akan diisikan ke alamat mcmori cksternal dcngan alamal

2000h sid 2004h.

Contoh:

LOOP:

~STlTUTTEKNOLOGIINDONESIA

Page 23: scan0001_3 (1)l

2\

; MENGlSI DATA KE MEMORIINTERNA\.,LOOP: MOV @RO,A

INC . A

INC RO

INC R3

CJNE iR3.H 10. LOOPMOV RO,#20H

A+B•/" __ '1.•.~l-_ - ---- -

A,@RO((il[)PTR.A

RODPTRR3.PUTAR$

OOH

RO.# I0000 I() Ib

Rl,#101OI01Ob

A,RO

A.RIA

$

OOH

RO,# 10000 10 Ib

Rl,#10 10 10 lOb

A,RO

A.IH·A

$

D 1....•........ '-, -. ---- . ~( )- -.' -_.-

A.S // _ ../ A.SS

A

SJMP

END

ORGMOVMOVMOVORLCPLSJMPEND

ORG

MOV

MOV

MOV

ANL

('PL

MOVMOVXINCINCDJNZ

SJMPENn

OperasiLogika

1. Percobaan operasi logika

Contoh dibawah ini adalah contoh program untuk menghasilkan opemsi dari

gerbang NAND, NOR dan XOR. Data yang dimusukan adalah 85h dan I\l\h .

PUTAR:

Mikrokontroler 89C51

Page 24: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA

Dibawah ini adalah program untuk membuktikan persamaan gerbang XOR adapull- -Persamaannya adalah sebagai berikut:: A _ XOR _ B = A.B + A.B

22

A

B

....,.,. l'

.... 'X)--'-'- - -.- n'

...-.'/ --- ----~-_,k B

-AB

.~---------------

AB+AB

ORGMOVMOVMOVCPLANLMOVMOVCPLANL

MOVORLMOVSJMPEND

OOH

RO,# 10000 10 1b

Rl,#lOlOlOlObA,ROA

A,RlRJ,AA.RIAA,RO

R4,AA,R3R5,A$

; Data 8511

; Dilta AA1:

; pcrkalian

; pcrkalian

Setelah program dijalankan periksa apakah R3 = 2AH, R4=05H dan R5=2FH

apakah sesuai dengan perhitungan :

Not(A) = 01111110 (A) = 10000101P3 = 00 101010

(B) = 10101010 AND

Not(B) = 01010101 ANDR4::; 00000101 OR

R3 = 00101010 (2AH)

R4 = 00000101 (OSH)RS = 00101111 (2FH)

Mlkrokontroler 89C51

Page 25: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA

2. Interface

Interface adalah suatu sarana yang digunakan uatuk melakukan transfer

data dari mikroprosesor ke pcriphcrnl atau scbaliknya.

Pada 89C51 ini terdiri dari 4 port 1/0 8 bit:

I. Port 0 merup~kan port keluaran/masukan bert ipc open drain hidirecli()/w!

Sebagai pOlt keluaran, masing - masing kakidapat menyerap arus (sir.k)

delapan masukan TTL ( sckitar 3,8 mA). Port ini dikonl1gurasikan scbagai

bus alamat/data bagian rendah selama proses pengaksesan memori data dan

program eksternal.

2. Port 1 merupakan port I/O dwi-arah yang dilengkapi dengan pull up

internal . penyangga keluaran port 1 mampu memberikan 1 menyerap arus

masukan TTL (:1:1.6 mA).

3. Port 2 merupakan' p\>rt I/O dwi-arah yang dilengkapi dengan pull - up

internal. penyangga keluaran port 1 mampu memberikan 1 o1enyerap arus;

masukan TTL (:I:1.6 mA).

4. Port 2 merupakan port 1/0 dwi-arah yang dilengkapi dengan pull lip

internal. pcnyangga keluaran port 1 malllpu Illcmbcrikan 1 Illcnycrap HnlS

masukan TTL (±1.6 mA).

Contoh:

I. Program untuk memasukkan data dari port 0 kemudian disimpan di memori internal 3011

kemudian dikeluarkan di port 1

ORG OOH

MOV RO.#30H

ULANG : MOV A.PO

MOV ·@RO,AMOV Pl,ASJMP ULANGEND

Mlkrokontroler 89C51

Page 26: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA 24•••••• '!!I!!I!!"!!!!

2. Program untllk mcngeluarkan data ke port I yang dapat llIcngcscr I bit dari Lsn kc

MSB dan menggeser 1 bit·dari MSB ke LSB berulang ulang.

ULANG:

ORGMOVMOVMOV

"MOVRRMOVMOVMOVRLMOVSJM?END

OOH

RO.#OOOOOOO I b

R 1.# IOOO()()()()b

A,#ROPI.AA

80.AA,RI

P2,AA

RI,AULANG

ULA:

CACA:

START:

ULANG:

3. Program untuk meng-input sebanyak 7 data Dari PORT 0 kemudian disimpan di

memori internal 30h sid 36h setelah itu dikeluarkan melalui pOl1 2.

ORGOOH

MOV RO,#30H

MOVR2,#7MOV A.PO

CJNE t1.,#OO,CACA

8JMJ> ULANG

MOV ((~RO,AINC RO

DEe R2CJNE R2.#OO. ULANG

MOV RO,#30H

MOV Alli(ROMOV P2.AINC R2

CJNE R2,#7,ULASJMP STARTEND

Tugas Akhir

1. Buat program untuk mengeluarkan data yang dapat menyalakan satu LED dari LSB ke

MSB berulang - ulang dengan operasi logika.

2. Buat program yang dapat mengeluarkan data yang dapat menyalakan satu LED dari

LSB ke MSB berulang - ulang jika rnendapat input data: 01H dan sebaIiknya jika

mendapat dala 021-1menyalakan satll LED dari Msn kc LSB 3 kali.

1 Dliat prcgram lInluk mcmnnpilkan data dad kcy-padke seven scglllC/l1. Scsuai (able

pada lampiran.

Mikrokontroler 89C51

Page 27: scan0001_3 (1)l

Teori :

Mikrokontroler 89C51

Tillle!' 2 JGalc(O) I err «(i)~~~] Mll(()-)]MO( I)

Timcr !

Ml MOModcOpcmsi

0

0()Timcr 13 bit-

----.-.-.-.- .....' __' __ '" ·'_'U •••.-.- ..-.-

0 IITimcr I Counlcr 16 bit

I02Timer mlto relond 8 bit ( pcngisian otomatis)

-.--.--.--- .... -.- ... - '--' .~-,_ .. -."------. --..-- ...-

1 IJTLO ad~lIah timcr/counter 8 bit yang dikontrol olclt kontrol bit standa!'

Timer 0THO adalah timer 8 bit clan dikonlrol oleh komrol bit Timer I

GlIlc(l)

Timer / Counter dan Interrupt

INSTITUTTEKNOLOGIINDONESIA

Me - 03 : PENERAPAN KOMPUTER

PRAKTIKUM MODUL III

J.1. Pendahuluan

Tujuan:

Untuk mempelajari dan mengetahui penggunaan timer/counter serta ISR ( Interrupt

Service Routine) pada mikrokont~'oler 89CS 1.

Adapun fungsi - fungsi dari setiap bit adalah sebagai berikut :

• Gate : Timer akan berjalan jika bit ini di-set dan INTO(ulltuk Timer 0) atau INT I (

untuk Timer 1).

• CIT : 1 = Counter, 0 = Timer

• MI & MO : Untuk memilih mode timer

a. Timer / Counter

Pada mikrokontroler 89CS 1 terdapat 2 timer/counter 16 bit. Untuk mengaksl;:s timer /

counter digunakan register fungsi khusus yaitu register TMOD dun TCON scbagni bcrikut :

1. Timer Mode Register ( TMOD )

Page 28: scan0001_3 (1)l

• TF! : Timer 1 Overflow Flag yang akan di-set jika timer overflow. Bit ini dapat di-

clear oleh software atau oleh hardware pada saat program menuju ke alamat yang di

tunjuk oleh interrupt vector.

• TRI : 1 == Timer 1 aktif, 0 = Timer 1 non-aktif.

•. TFO : Timer 0 Overflow Flag yang akan di-sct jika timer overflow. Bit ini dapat di-

clear oleh software atau oleh hardware pada saat program menlljll ke ala mat yang di

tunjuk oleh interrupt vector.

• TRO : I == Timer 0 aktif, 0 == Timer 0 nOIl-aktif.

20

rroTRO I JEITFJ

2. Timer Control Register (TCON )

Register ini bersifat addressable memi 1iki 4 bit yaitu TF 1, TR I,TFO, & TRO.

Register Timer 1 I Register Intemlpt

I:--JSTITUTTEKNOLOGIINDONESIAII

b. Interrupt

Mikrokontroler 89C51 menyediakan beberapa fasilitas vector int(;rupsi scbagai bcriklll :

• Vektor Interupsi :

Interrul)si FlagAlnmnt Vcldor

Sistem reset

RST 000011-.------

Intcrupsi Ekstcflull 0 IEO 0003h

Intempsi Timer 0

TFO OOOBI1

lnterupsi Eksternal I

lEI 001311

Illterupsi Timer I

---------------.----- .•------- ..

TFI OOIBh

lntcrupsi Scrinl

RI nt.iu TI0023h

• Register IE ( interrupt enable)

Regis,er ini digunakan untuk mengaktifkan interupsi - interupsi yang terdapat pada

mikrokontroler.

Data di-akses secara bit :

EA --ES ETIEXIETOEXO

IE.7

..lEA IEJ1E.2IE. IlE.o

Mikrokontroler 89C51

Page 29: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA 27

Bit Simbol---

FungsilE.7

EAUnluk menghidupkan ( IE::I) clan mematikan (IE=O) selw"Jh inlempsi secara serenlak.

IE.6

- ---lE.5

- -._----_._._ .._~_..~_.._.- ..._ ..- .. -..--'" .... -.. -. -- ........ , •.... ~_.-.,._-, ..,-...lEA ESBit Aklivasi inlcrupsi Port Serial

IE.3

ETIBit Aktivasi inlerupsi Timer J Overflow--

.----- - --.----.-.------IE.2 EXIBit Aklivusi inlcrupsi ekslenwll

ETO

Bit Aklivusi inlerupsi nmflr OO\'erj/cw.-..-

IE.I

IE.O

EXOBil AklivllSi inlerupsi ekslernul 0

• Register IP ( Interrupt Priority)

Terdapat 2 prioritas yang terdapat pada interpsi yaitu prioritas rendah dan prioritas

tinggi. lnterupsi dengan prioritas rendah dapat di-interupsi oleh interupsi yang

berprioritas tinggi dan tidak untuk kebalikannya.

Bit SimbolFa..ngsi

IP.7

- -

IP.6

- -

IP.S

- -

IP.4

PS Bit prioritas unluk inlerupsi Port Serial

IP.3

Bil prioritCl5unluk inlerupsi 'lillieI'I--

PTJ

IP.2

PXIBit priorilas IInlllk inlcrupsi ckslcfllal I

IP.I

PTOBit priorilClsuntuk interupsi 'lImer ()

IP.O

PXOBil prioritlls untllk illlerupsi ckslcrnal ()-

Tugas Pelldabuluall

I. Sebutkan register - register yang berhubungan dengan timer dan tllllgsinya

2. Ada berapa Mode dalam timer dan apa maksudnya.

3. Jika kit~.ingin memakai timer-I dengan mode -I register apa yang diberi data dan

berapa data yang diisikan.

4. Berapa waktu maksimal yang dBpat dilakukan timer dengan mode-D, mode-I, mode-2,

dan mode-3.

S. Apa arti dari perintah:

• JND TrO,$

• JB TFl,$

• S~~~Q _Mikrokontroler 89C51

Page 30: scan0001_3 (1)l

Mikrokontroler 89C51

3.2. Percobaan Timer / Counter

I. Cnntoh program untuk menjalankan timer 0 mode 0 untuk dijadikan delay selama t = H192

Ils(213 x IllS).

28

OH

TMOD.#02HTIIO./I-50

TFO

TRO

TFO,$TROTFO

$

OOHTMOD #OIHTLO,#OCHTHO,#OFEHTFOTRO

TFO,$TROTFO

$

OOH

TMOD,#OOHTFO

TRO

TFO,$TRO

$

ORGMOVMOVCLRSETBJNBCLRCLRSJMPEND

4. Contoh program untuk menjalankan timer 0 mode 3 untuk dijadikan delay selama 50 Ils.

ORG OOH

MOV TMOD,#33HeLR TFOSETB TROJNB TFO,$CLR TROCLR TFOSETB TRIJNB TFI.$CLR TRISJMP $END

ORGMOVMOVMOVCLRSETBJNBCLRCLRSJMPEND

3. Contoh prograllllllltllk Illcnjalankan timer 0 mode 2 lInlllk dijadikan dday selallla 50 ps.

ORG

MOVCLRSETnJNBCLRSJMPEND

2. Contoh program untuk menjalankan timer 0 mode 1 untuk dijadikan delay selama 500 Ils.

INSTITUTTEKNOLOGIINDONESIA

Page 31: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA 29

5. Percobaan Interrupt

Program untuk mengeluarkail data yang dapat bergeser dari kanan ke kiri terliS menerlls ke

port 1. Dengan menginterupsikan (dengan intzrrup eksternal ° ) mengeillarkan data yang

bergeser ke kanan melalui port 2.

KEMBALI :

MAIN: MOV

ULANG:

OROSJMPOROMOVMOVRR

DJNZ,RETI

MOVMOV,'MOVRL

SJMPEND

OOH

MAIN03H

R3,#8A,#OOOOOOO 1b

A

RJ.#OO.KEMBALI

IE.#81H

IP,#OlH

A, #OOOOO()O I b

Pl,AA

ULANG

Tugas Akhir

1. Buat program un~uk mengeluarkan data yang dapat menyalakan satu LED dari LSB ke

MSB bemlang - ular.g dengan operasi logika dengan delay menggunakan timerO, mode

-0.

2. Buat program untuk mengeluarkan data yang dapat menyalakan satu LED dari LSB ke

MSB berulang - ulang dengan operasi logika dengan delay menggunakan timerO, mode

-1.

3. Buat program untuk mengeluarkan data yang dapat menyalakan satu LED dari LSB ke

MSB berulang - ulang dengan operasi logika dengan delay menggunakun timerl, mode ­

0.

4. Buat program yang dapat mengeluarkan data yang dapat menyalakan satu LED dari LSB

ke MSB berulang - ulang jika mendapat input data: °1H dan sebaliknya jika mendapat

data 02H menyalakan satu LED dari MSB ke LSB 3 kali dengan delay menggunakan

timer~O,mode 1.

a:........... !!!!I!!!!!~!!!~l~!_!II!II!!!!l!!!!!!I!!!!I!!!!!!!!!I!!!!!!!!!I!!!!!I!!!!!!!~!!!~l~!I!!!!!!!!!!!I!!!!!!!!!!!!!!!!!!I!!!!!!!!!!!I!!!!!!!!!!I!!!!!!!!II!II!!!!!!!I!!!!!I!!!!!!!!!!

MikrQkontroler 89C51

Page 32: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA

MC - 04 : PENERAPAN KOMPUTER

Praktikum Modul IV

APLIKASII

30

4.1. Pendahuluan

Tujual1:

Mengaplikasikan teori-teori mikrokontroler yang telah dipelajari pada monul sebelumnnya

dengan bantuan perangkat keras sederhana, meliputi :

1. Operasi Interface (input / output)

2. Tranfer memori internal

3. Timer/ Conter

4. Interrupt

Alnt yang digullakun :

I. 1 unit komputer

2. 1 unit Downloader (ATMEL 39C51)

3. I unit sistem minimum ATMEL 89C51

4. 1 unit Derangkat input (push button 8 bit aktif high)

5. I unit perangkat output (led 8 bit)

6. I unit perangkat seven segment

7. I unit push button (4 bit aktiflow)

Tugas Pelldahuluall

I. Buat program untuk membaca data dari Port 0, sebanyak 5 kati, kemudian ditampilkan ke

portl secara berurutan (data dibaca dulu sebanyak 5 kali kemudian ditampilkan).

2. Buat Program untuk menampilkan 4 data dari memori internal dengan alamat awal 24h ke

Port 1, 4 data berikutnya ditampilkan ke Port 2. Datanya bebas.

3. Buat program untuk membuat delay selama 1 detik dene~H1menggunakan timer 0 mode 1

(kristal yang digunakan 11,0592MHz).

Mlkrokontroler 89C51

Page 33: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA ~I

4.2. Percobaan

1. Operasi Interface

A. Mengeluarkan data ke port 1(output)

Blok Diagram

Mikrokontroler

0/ 1---I •••P1.0·P1.7

LEO 8 bit

Flowchart

( START )

.. --_uf

AKUMULA TOR I01151DATA 1 _

LISTING PROGRAM

OROMOY

START:MOY

OOH

A,#OIH

DELAY,\START

'R6,#OFFHR7,#OFFHR7R7,#OO,DL YIR6

R(I.#()().DLY

~m-or:----7L~~O~/

PANGGGIL

DELAY

DAiOl I

AWMULA TOR I___~I~~~~~~BIT

PI,ACALLRLSJMP

MOYMOYDECCJNEDECCJNERETEND

DELAY:

DLY:DLYl:

~..t Mll<rokontroler 89C51

Page 34: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA 32

B. Membaca dllta dari port 0 ditampilkan kc port I

Blok Diagram

IPush Button S bit

t fPO.O. PO.7

Mikrokontroler fPl.0· P1.7

LEOS bft

Flowchart

Mlkrokontroler 89C51

( START

OOH

A,PODELAY

Pt,ASTART

R6,#OFFH

R7,#OFFHR7

R7,#OO,DLYIR6

R6,#OO,DL Y

I

L'-"-"'~"'-'-'-'.BACA PENEKANAN /

TOM80l 01 PORT 0 !SlMPAN 01

AKUMULATOR /

---'-;--, , .

I--'p~~~i"\r .. j ..I OIITA III

AKUMULAIUIII.)I j'TAMPILKAN KE

PORT I /

MOVMOVDEeCJNEDECCJNERET

END

OROMOVCALLMOVSJMP

DELAY:

DLY:DLYl:

START:

NOTE: Lakukan percobaan B, gantikan output led dengan seven segment

LISTING PROGRAM

Page 35: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDON.ESIA

2. Tranfer Mcmori Internul

Blok Diagram

ToPO.O·PO.7

I

~.Mikrokontroler t

Pl.0· P1.7

Seven Segme~t

Keterangan:

//

Alamat memor~internal ~i tllmbahl

____m.t. _.. "ConlerR5 IdikufUlIgi

I

Simpsn di memoriinternal

Conler RS"

&lma dengan 0?

Tam:k! data dimemori internal ke

port 1 sacaraberurulan

- -~.~.. ]~--"--'"(, END )

//

/l __ ..__ ._

N

(A )

(~-'. ~..,I'

Memorllntemal .diset20H

IR5 dl &elubagal1. __konts!. (5 kBlQ

(-'-'BACAl'ENEKANAN ---7TaABOl. DI PORT 0 /SIMPANDI

AKUMULATORL

I·XN .Data = OO~"'"

? "

• Penekanan pushbutton dilakukan 5 kali.

• Setiap pushbutton ditekan datanya disimpan dimemori internal

• Bila tombol tidak ditekan (data = DOh) maka tidak disimpan

• Setelah 5 kali penekanan data ditampilkan ke seven segment me!alui port 1 secara

berurutan mulai dari penekanan yang pertama.

Flowchart

lkrokontroler 89CS 1

Page 36: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA

LISTING PROGRAM

34

ORO

MOV

MOV

START: MOV

CALL

CJNEI .

MOV

INC

DEC

CJNE

CALL

SJMP

TAMPIL_DATA:

MOV

MOV

OKE: MOV

MOV

CALL

DEC

INC

CJNE

RET

OOH

R5.#05

RO.#20H

A,PO

DELAY

A.#OO.&T ART

@RO,A

RO

RS

R5.#OO,ST ART

T AMPIL_OA T A

S

R5,#05

RO.#20H

AJ{!lRO

PI.A

DELAY

R5

RO

R5.#O(),OKE

Ikrokontroler 89C51

DELAY:

OLY2:

DLY:

DLYl:

MOV

MOV

MOV

DEC

CJNE

DEC

CJNE

DEC

CJNE

IWT

END

R4,#3

R6,#OFFH

R7,#OFFH

R7

.R7,#OO,DL Y 1

R6

R6,#()O,DL Y

R4

R4,#OO,DL Y2

Page 37: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA35

3. TIMER/COUNTER

A. Operasi Timer

Blok Diagram

[-----:---lMjkrokonlrole~ 1-P1.0· P1.7

\--------- - --....-..------\•. SflVfln Sflgrnonl

--..------.----------.-- .._---

. Flowchart r '\

~

[.. AKUMULATOR .. 1

OIlSIOATAO

,....•... -.--.

( 'A')'L-

INISIALISASI TIMER,TIMER 0 MODE 0

START TlMER

REGISTER TFO

OIKOSONGKAN

dR~I'I D1KOSONGKAN

· __.t.P __.'

- ..... ----".---

OOH

A,#OOHPl,ADELAY

AA.#OAH.START

A,#OOHSTART

TMOD,#OOH

,A)'-...••.

dl.--(B)PANGGGIL

DELAY

AKUMULATOROIISIOATAO

/-0:

AKUMULATORTAMPILKAN KE

. PORT 1

OATAOI

AKUMULATOR 01TAMBAH 1

-1---/',,-N ~,// DATA 01 '"

,/AKUMULATOR SAMA',-

". OEN~ 10(A/_'?

~

DELAY:

START:

Mlkrokontroler 89C51

LISTING PROGRAM

ORO

MOVMOVCALLINCCJNE

··MOVSJMP

MOV

Page 38: scan0001_3 (1)l

Seven Segment

REGISTER THO

OIISI FFH

Y;

( B )

r ;.;~~!~;;.,OIISI FFH

.. J. .

~_....L·__·"IREGISTER TFOOIKOSONGKAN

......-..... --.- - .-- ..-.-- ..... --

HPI.O· P1.7

REGJSTERT~OIKOSONGKAN I

........ ,ISTAR; OOJNTERj

.. l.INISIALISASI COUNTER. I

CONTER 0 MODe 1

, I

N REGITER TFO • 1?

MikrokoJ1roler

A)..,

B)

TROTFO

TIWTFO.$

tP3.3

J

AKUMULATORI)IISIOATAO

DATA 01

AKl,IMULATOR /TAMPILKAN KE

PORr 1 /

'"PANGGGILI COUNTER

/I

OATAOIAKUMULATOR 01

TAMBAH 1

N:~·AKUMULATOR SAMA'

'. OENGAN 10 (A) />, ? .'

Push Button

CLRCLRSETUJNB

RET

END

B. Operasi counter

Blok Oingnull

Flowchart

INSTITUTTEKNOLOGIINDONESIA

Mikrokontroler 89C51

Page 39: scan0001_3 (1)l

INSTITUTTEKNOlOGllNDONESIA

LISTING I)ROG,RAM

37

DELAY

A

A,#OAH,ST ART

A,#OOHSTARTTMOO.#4IH

THO,#OFFHTLO.#OFFI-ITRO

TFOTIWTFO.$

ORO OOH

MOV A,#OOH

CALLINCCJNEMOVSJMPMOVMOVMOVCLR

CLR

SETB

JNB

RETENO

89C51

DELAY:

START: MOV PI.A

Page 40: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA

4. Interrupt

Blok Diagram

;LP2.0· P2.7

;LP1.0 - P1.7

..j LED

-.l Seven Sogment JL _

38

,Flowchart

AKUMULA TORollSI DATA 1

!~--OATAO'---7'

AKUMULA TOR

·?f:PANGGGIL

DELAY

AKUMULATOROIGESER 1 BIT

KfKIRI

Mlkrokontroler 89C51

TERJADIINTERUPSI

Ot INTRUPTO

~~~_t__....AKUMULATOR

ollSloATAO

AKUMULATOR .i TAMPILKAN KE

L---P-T--j-- ,-.------

PANGGGILDELAY,

DATADtAKUMULATOR

DITAMBAH 1

oATACt

~KUMULATOR. 10....., .... ? .'_I

KEMBALt KE PROSES

SEBELUM INTERUPSI

i---[lTERJADI

INTER,UPSIDIINTRUPT 1

. ..f ...._AKUMULATOR

OIiSI DATAl>

AKUMULATOR -;TAMPILKAN KE

L._n m.-£Qr~~'-:~.jPANGGGIL

DELAY

DATA 01AKUMULATOR

0lKURANGI1

DATA 01AKUMULATOR • 0

", ?

KEMBALI KE PROSESSEBELUM INTERUPSI

Page 41: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA )0

LISTING I)I{OGI{AM

ORG

OOH

SJMPSTART

ORG

03H

SJMP

INTA

ORG

I3HSJMP

INTBSTART: MOV

IE.#85HMOY

IP.#OIHMOY

A,#OIHBALIK:

MOVP2.A

CALLDEJ.,AY

RLA

8JMPBALIK

INTI\.:

MOYA.IIOOl-1

ULANO:MOVPl,A

CAI.I.nm.AY

INC

A

CJNEA.#OAH.ULANG

IW'J'IINTA:

MOYA.#0911ULANGI:

MOVPl.<\CALL

DELAY

DEC

AC'JNE

A.flOOH.lJl.ANG I

RETIDELAY: MOV

R6.#OFFH

DLY:MOYR7,#OFFH

DLYI:

DECR7CJNE

R7,#OO,DLYIDEC

R6

CINER6,#OO,DLY

RET END

IV.3. Tugas Laporan Akhi •.

1. Buat plOgram dan flowchart untuk membaca 5 buah data dad pOltO Gika data yang

dibaca = 0 tidak disimpan), disimpan ke mcmori internal dcngan ala mat awal 40h,

kemudiln data tersebut di tampilkan ke port:'. secara berurutan.

2. 13uat program dan llow~harl, jika tCljadi pCllckanall scballyak :; kali pada cOllter 0

~aka led pada pi akan terlihat berjalan dari kiri kekanan (Rotate right)

3. Buat program dan flowchart, jika terjadi interllpsi di interliptO led padapOli2.1 akan

berkedip sebanYClk 2 kali, jika terjadi interllpsi di interllpll led pada pori I akanlerlihal

berjalan dari kanan kekiri (Rotate left) sebanyak 3 kali. Main program hanya

inisialisai interupsi.

Mikrokontroler 89C51

Page 42: scan0001_3 (1)l

5.2. Percobaan

Pada percobaan kali ini praktikan membuat satu aplikasi sedcrhana dari perangki!t

keras yang telah disediakan.

5.1. Pendahuluan

Tujuan:

1. Membuat aplikasi sedt:rhan.ll dad perangkat keras yang telah disediakan dengan

menjadi!(an mikrokontroler sebagai pengendali.

INSTITUTTEKNOLOGIINDONESIA

Me - 05 : PENERAPAN KOMPUTER

Praktikum Modul V

APLIKASI2

Alat yang dignnakan :

I. I unit kompulcr

2 .. 1 unit Downloadcr (ArMEL 89C51)

3. 1 unit sistem minilllulll ATMEL 89C51

4. 1 unit perangkat input (push button 8 bit aktif high)

5. 1 unit perangkat output (led 8 bit)

6. 1 unit perangkat seven segme:l

7. 1 unit push button (2 bit aktiflow)

8. 1 unit Key-pad

9. 1 unit Optocopler

10. 1 unit Motor Steper berserta driver

11. 1 unit Relay

Mikrokontroler 89C51

40

Page 43: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA___ •••• _._. _ ~m ••• · .. ',' ••• _.;.';;"_:"';"-". _ ••.• •• _~ __ • • __ ..;-~~-;;;;..=.:;-:-;;-:;_••._••_.,•._ .• _....~_.._ ......•. _._.

LAMPlRAN

Mikrokontroler 89C51

·11

Page 44: scan0001_3 (1)l

INSTITUTTEKNOLOGIINDONESIA

Lampiran 1

Ahlt·alat yang diperluh.an

I. 2 unit komputer dengan spesifikasi

• Prosesor Intel Pentium 1

2. 2 Unit Downloader Atmel 89C51

3. 2 set minimum sistem Atmel 89C51

4. 4 buah Ie Mikrokontroler Atmel 8<>C51

5. perangkat keras (hardware) meliputi:

• 2 set pushbutton 8 bit

• 2 set pushbutton 4 bit

• 2 set key-pad

• 4 set perangkat output 8 bit

• 2 set driver motor DC (relay)

• 2 set driver motor stepper

• 2 set driver optokopler

• 2 set seven segment

• 2 set limit switch

Mikrokontroler 89C51

42

Page 45: scan0001_3 (1)l

--~~~------------------------"""'-"l

dec 07060504030201DOHEX.--......•-.._--~_.-'" ..,._ .... ~,.-...~,.~

1 0" 0 01001012H

2

0 001010014H

3

0 001100--0

18H-.---..-. ---'~'-"" --4

0 010001022H

5

0r0 10010024H

6

0 010100028H

7

0 100001042H

80j1 00010044H---- -~._---

90

I1 00100048H

*1 00(l001082H

0

1 000010084H

1#

1 000100088H

dec ABC0EFGHHEXDO

010203040506071

1 00111119FH

2

0 010010125H

3

0 0001101OOH-- -.,.,---4 1 001100't99H

50 100100148H

60 100000141H

70 00111111FI-i-- ..,

,-- --...-.•....--.-,.- ..8 0 000000101H

90 000100109H-.-.-- ..

.----.---- ...-..•... -.. ,.....••.--.•- ..•.•..

0 0 000001103HA

0 0010001I11H

B1 1000001C1H--- -----_ ..•_---,-

C 0 110001153H

0

1 00001018SHE

0 110000161HF

0 111000171H

43

TRUTH TABLE 4 KEY PAD

TRUTH TABLE 4 SEVEN SEGMENT

Mikrokontroler 89C51

INSTITUTTEKNOLOGIINDONESIA

Page 46: scan0001_3 (1)l

II KODE ,NSTROf(SIDALAM

HEKSADESIMALt~MPIRANI.." 1·- ",""~~..'- - ". - " - - .' il

, !

Kode Heksa Jumlah Byte MnemonicOperand

00

1NOP

01

2AJMPKODEADDR

02

3UMPKQDEADDk.

03

IRRA

04

1INCA

05

2INCDATAADDR

06

IINC@RO

07

IINC@Rl

08

1INeRO

09

1INCRl

01'\

1INCR2

OH

1INCR3

OC

1INCR4

OD

1INCR5

OE

1INCR6

OF

1INCR7

10

3mcBIT ADDR. KODEADDR

11

2ACALLKODEADDR

12

3LCALLKODEADDR

13

1RRCA

14

1DEC-A

15

2DEeDATAADDR

16

1DEC@RO

17

1DEC@Rl

18

iDECRO

19

1DECRl

IA

1DECR2

Page 47: scan0001_3 (1)l

~ ~

IB 1DECR3 433ORLDATAADDR.,jDATAIC

1DECR4 442ORLA.#DATAID

1DECR5 452ORLA.DATAADDRIE

1DECR6 461ORLA.@ROIF

1DECR7 471ORLA.@Rl20

3JBBIT ADDR. KODEADDR481ORLA.RO21

2AJMPKODEADDR 491ORLA,Rl22

1RET 4A1ORLA.R2"'"2

IRLA 4B1ORLAm.,.2ADDA.#DATA 4C1ORLA,R4-..•

252ADDA.DATAADDR 4D1ORLA,R5

261ADDA.@RO 4E)ORLA,R6

.,.,IADDA.@Rl 4F1ORLAJ{7-'

28JADDA.RO 502mcKODEADDR

29IADDA,Rl 512ACALLKODEADDR

2A1ADDA.R2 522ANLDATAADDR,A

2B1ADDA.R3 533ANL. DATAADDR,#IDATA

2C1ADDA.R4 542ANLA.#DATA

2D1ADDA.R5 552ANLA.DATAADDR

2E1DDA.R6 561ANL·A,@RO

2F1ADDA.R7 571ANLA.@Rl

303JNBBIT ADDR. KODEADDR581ANLA.RO

31

-ACALLKODEADDR 591ANLA,Rl.•.

321RETI 5A1ANLA,R2

331RLCA 58JANLA.R3

~2ADDCA.#DATA 5C1ANLA.R4

352ADDCA. DAT.~ ADDR 5D1ANLA,R5

36IADocA.@RO 5E1ANLA,R6

37IADOCA.@RI 5F1ANI..A.R7.

38IADOCA.RO 602JZKODEADDR

391ADDCA.RI 6'2AJMPKODEADDR

3AIADOCA.R2 62 .2XRLDATAADDR.A

"38IADOCA.R3 633XRLDATAADDRJIDATA

3CIADDCA.R4 642XRLA.#DATA

3D1ADDCA,R5 6S2XRLA.DATAADDR

3EIADDCA.R6 661XRLA.@RO

3F1ADOCA.R7 671XRLA.@Rl

402JCKODEADDR 681XRLA.RO

412AJMPKODEADDR 691XRLAJll

422ORLDATAADDR,A 6A1XRL..AJt2

·t-~:",;.;,_

Page 48: scan0001_3 (1)l

,.....

6B 1XRLA.R3 931MOVCA,@A+DPI'R6C

1XRLA.R4 942SUBBA,#DATA6D

1XRLA,R5 952SUBBA..DATAADDR6E

IXRLA,R6 961SUBB· A,@RO6F

IXRLAJU 971SUBBA,@RI70

2JNZKODEADDR 981SUBB-A,RO71

2ACALLKODEADDR 991SUBBA..RI72

2ORLC,BIT ADD.R 9A1SUBBA,R273

1JMP@A+DPTR 9B1SUBBA,R374

2MOYA,#DATA 9CISUBBA,R475

3MOYDATAADDR.#DATA 9D1SUBBA,R576

2MOY@RO.#DATA 9E1SUBBA.R677

2MOY@RI.#DATA 9FISlJ"'BB· A,R778

2MOYRO.#DATA AO2ORL· CJBITADDR79

2MOYRl.#DATA Al2AJMPKODEADDR

7A

2MOYR2.'DATA A22MOVC,BITADDR7B

2MOVR3.#DATA A31INCDPfR7C

2MOVR4.#DATA A41MULAB7D

2MOVRS.#DATA A57E

2MOYR6,.Dl(fA A62MOV@RO,DATAADDR7F

2MOVR7.#DATA A72MOV@Rl,DATAADDR80

2SJMPKODEADDR A82MOVRO, DATAADDR81

2AJMPKODEADDR A92MOVRI, DATAADDR82

2ANLC,BITADDR AA2MOV· R2.DATAADDR83

1MoveA.@A+PC AB2MOV.: R).DATAADDR84

1DNAB AC2MOVR4, DATAADDR85

3MOYDATAADDR,DATAADDRAD2MOV.' -RS,DATAADDR86

2MOVDATAADDR.@RO AE2MOV. -. R6, DATAADDR87

2MOVDATAADDR,@RI AF2MOV:: R7. DATAADDR88

2MOYDATAADDR, RO Bo-2ANLC,/BIT ADDR .89

2MOVDATAADDR, RI BI2ACAU..KODEADDR8A

2MOVDATAADDR, R2 B22CPLBITADDR88

2MOYDATA ADDR, R3 831CPLC8C

2MOYDATAADDR, R4 843ONEA,#DATA.KODBADDR8D

2MOYDATAADDR, R5 B53ONEA,DATAADDR.KODEADDR!8E

2MOYDATAADDR, R6 863ONE. @RO,#DATA,KODEADDR:8F

2MOYDATAADDR, R7 B73ONE@RI,#DATA,KODEADDR :,90

3MOYDPTR.#DATA 883ONERo. .DATA, KODEADDR91

2ACALLKODEADDR B93ONE· Rl.'DATA, KODEADDR92

2MOYBITADDR,C BA3ONER2. .DATA, KODEADDR

~

Page 49: scan0001_3 (1)l

BB 3ONERJ. ilDATA. KODE ADDRE3-1MOVXA.@IUBC

3ONER4, #ADATA, KODE ADDRE41a.RABD·

3CJNERS. #DATA, KO~£ ADDRE52MOV.A, DATAADDR .BE

3CJNER6, #DATA, KODE ADORE61MOVA,@RO 0'

BF3ONER1. #DAT.4., KOOE ADORE11MOVA.@Rl

CO2PUSHDATAADDR E81MOVA,RO

CI2AJMPKODEADDR E91MOVA,R}

C22CLRBITADDR EA1MOVAR2

C31CLRC EB1MOVA;R3

C4ISWAPA EeIMOVA,R4

C52XCHA,DATAADDR ED.tMOVA,RS

C61XCHA,@RO EE}MOVA,Rei

C11XCHA,@RI EF1MOVA,R1

C81XCHA,RO FO1MQVX@DPTR,A

C9iXCHA,Rl FI2ACALLKODEADDR

CA1XCHA.R2 [email protected]

CDIXCHA,R3 F31MOVX@Rl,A

CC1XCHA.R4 F41CPLA

CD1XCH.A.RS F52MOVDATAADDR,A

CE1XCHA.R6 F61MOV@RO,A

CF1XCHA,R1 F11MOV@RI,A

002popDATAADDR F8IMOVRO.A

012ACALLKODEADDR F9IMOVRI.A

022. SErBBITADDR FA1MOVR2.A

D31SErBC FBIMOVR3,A

D41DAA FC1MOVR4,A

OS3DJNZDATAADDR, KODEADDRFDIMOVRS.A

D61XCHDA,@RO FE1MOVR6,A

D7IXCHDA.@Rl FF1MOV~7,A

082DJNZRO, KODEADOR

D92DJNZRI, KODE.WDR

DA2DJNZR2. KODEADDR

DB2DJNZR3. KODEADDR

DC2DJNZR4, KODEADOR

DD2DjNZRS, KODE ADDR

DE2DJNZR6, KODEADDR

OF2DJNZR7, KODE ADDR

EO1MOVXA,@DPTR

El2AJMPKODEADDR

E21MOVXA,@RO

Page 50: scan0001_3 (1)l

I!il~I