Upload
ganesha-putra
View
51
Download
4
Embed Size (px)
DESCRIPTION
bubu
Citation preview
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
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
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
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
'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•
'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.
•
•
•
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
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
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
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••
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
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
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 ...
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· .
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
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>
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
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
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
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
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
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
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
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
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
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
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 )
• 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
INSTITUTTEKNOLOGIINDONESIA___ •••• _._. _ ~m ••• · .. ',' ••• _.;.';;"_:"';"-". _ ••.• •• _~ __ • • __ ..;-~~-;;;;..=.:;-:-;;-:;_••._••_.,•._ .• _....~_.._ ......•. _._.
LAMPlRAN
Mikrokontroler 89C51
·11
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
--~~~------------------------"""'-"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
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
~ ~
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-~:",;.;,_
,.....
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
~
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
I!il~I