Você está na página 1de 23

ARSITEKTUR MIKROKONTROLER KELUARGA MCS-51

Mikrokontroller,sebagai terobosan teknologi mikroprosesor dan mikrokomputer,


hadir memenuhi kebutuhan pasar baru sebagai teknologi baru yaitu teknologi
semikonduktor dengan kandungan transistor yang lebih banyak namun hanya
membutuhkan ruang yang kecil serta dapat diproduksi secara massal sehingga harganya
menjadi lebih murah.
SIstem mikrokomputer mampu menangani berbagai macam program aplikasi
misalnya : pengolah kata, pengolah angka, dan lain sebagainya. Sedangkan
mikrokontroler hanya bisa digunakan untuk suatu aplikasi tertentu saja ( hanya satu
program saja yang bisa disimpan ). Perbedaannya lainnya terletak pada perbandingan
RM dan R!M. Pada sistem komputer perbandingan RM dan R!M"nya besar, artinya
program"program pengguna disimpan dalam ruang RM yang relati# besar, sedangkan
rutin"rutin antarmuka perangkat keras disimpan dalam ruang R!M yang kecil.
Sedangkan pada mikrokontroler, perbandingan R!M dan RM"nya yang besar, artinya
program kontrol disimpan dalam R!M (bisa masked R!M atau P$R!M ) yang
ukurannya relati# lebih besar, sedangkan RM digunakan sebagai tempat penyimpan
sementara, termasuk register"register yang digunakan pada mikrokontroler yang
bersangkutan.
%.& !R'(ISSI M$M!RI
%.&.% pemisahan memori program dan data
semua produk mikrokontroler #lash )*+,-%.-& dari atmel memiliki ruang
alamat memori data dan program yang terpisah, pemisahan memori program dan data
tersebut membolehkan memori data diakses dengan alamat * bit, sehingga dengan cepat
dan mudah disimpan dan dimanipulasi oleh ,P/ *"bit. (amun demikian, alamat memori
data %0"bit bisa juga dihasilkan melalui register 1P)R
Memori program hanya bisa dibaca saja. )erdapat memori program yang bisa
diakses langsung hingga 02 3byte. Sedangkan strobe ( tanda ) untuk akses program
memori eksternal melalui sinyal PSEN atau program store enable.
Memori data menempati suatu ruang alamat yang terpisah dari memori program
memori eksternal dapat diakses secara langsung hingga 02 3 byte dalam ruang memori
data eksternal. ,P/ akan memberikan sinyal baca dan tulis, R1 dan 4R, selama
pengaksesan memori data eksternal.
Memori data eksternal dan memori program eksternal dapat dikombinasikan
dengan cara menggabungkan sinyal R1 dan PS$( melalui gerbang (1 dan
keluarannya sebagai tanda baca kememori data program eksternal.
%.&.& M$M!RI PR!'RM
pemetaan bagian ba5ah dari memori program. Setelah reset, ,P/ segera
mengerjakan program mulai dari lokasi 66667. masing"masing interupsi disimpan
pada lokasi yang sudah tetap dalam memori program. Sebuah interupsi menyebabkan
,P/ melompat ke lokasi interusi yang bersangkutan yaitu subrutin layanan interupsi
tersebut
Suatu kon#igurasi perangkat keras untuk eksekusi program eksternal terlihat
bah5a %0 jalur I.! (melalui port 6 dan port &) didedikasikan sebagai bus data maupun
alamat. Port 6 sebagai bus alamat.data yang dimultipleks,yang mengirinmkan byte rendah
dari pencacah program (P,8, program counter lo5 ) sebagai soatu alamt kemudian
berubah dalam kondisi mengambang ( #loat ) selama menunggu deatang byte kode dari
memori program ( eksternal ). Saat byte rendah pada pencacah program sah di P6, sinyal
8$ (address latch enable ) meng"clock byte ini ke suatu pengunci alamat (address
latch ), semantara itu, port & mengirimkan byte tinggi dari pencacah program P,7,
( program counter high ), kemudian PS$( memberikan tanda pada memori eksternal dari
mikrokontroler membaca byte kode tersebut.
lamat memori program panjangnya selalu %0"bit, 5alaupun demikian, jumlah
memori program yang digunakan bi5sa kurang dari 02 3 byte. $ksekusi program
eksternal mengorbankan & port *"bit ( P) dan P& ), karena port tersebut ber#ungsi sebagai
jalur pengalamatan dan.atau pengiriman instruksi dari memori eksternal.
%.&.9. M$M!RI 1)
ruang"ruang memori data internal dan eksternal yang tersedia pada
mikrokontroler #lash dari atmel. ditunjukkan suatu kon#igurasi perangkat keras untuk
mengakses RM hingga & 3 byte. 1alam hal ini ,P/ mengeksekusi instruksi pada pada
#lash internal. Port 6 bertindak sebagai bus alamat .data yang termutipleks ke RM dan 9
jalur pada port & digunakan untuk menghalamani ( page ) RM. ,P/ menghasilkan
sinyal"sinyal R1 dan 4R sesuai kebutuhan selama pengaksesan RM eksternal.
nda dapat menentukan memori data eksternal hingga 02 3 byet. lamt memori data
eksternal bisa % atau & byte. lamat satu"byte sering digunakan untuk membantu satu
atau lebih jalur I.! dalam peng"halaman"an RM, sebagaimana ditunjukkan pada
gambar %.-. alamt dua byte dapat dipakai dalam kasus jika byte alamat tinggi dikirim
melaui port :.
Memori data internal ditunjukkan pada gambar %.0 ruang memori dibagi menjadi
tiga blok yang dikenal sebagai %&* ba5ah (lo5er %&* ), %&* atas (upper %&* ) dan register
#ungsi khusus ( special #unction register ; S<R ).
lamat memori data internal selalu * byte atau %"byte, yang konsekuensinya
hanya mampu mengalamati hingga &-0 byte saja. (amun demikian, modemode
pengalamatan RM internal bisa mengakomodasi hingga 9*2 byte. Pengaksesan
langsung ( direct addressing ) dengan alamat diatas :#h mengakses suatu memori,
sedangkan pengaksesan tak langsung (indirect addressing ) dengan alamat diatas :#h
mengakses ruang memori lain yang berbeda.
Pada gambar diatas ditunjukkan ruang register #ungsi khusus = S<R secara
singkat dalam RM internal lokasi *6h hingga :#h. S<R ini mencakup port"port,pe5aktu
()IM$R ), control peripheral dan lain"lain. Register"register ini hanya bisa diakses
dengan pengalamatan langsung.secara umum, semua mikrokontroler tmel memiliki
alamat"alamat S<R yang sama dalam ruang S<R sebagaimana dalam )*+,-%.-& serta
mikrokontroler lain yang kompatibel.)*+,-%.-& memiliki beberapa S<R tambahan.
$nambelas alamat dalam ruang S<R dapat diakses baik secara byte maupun bit S<R
teralamat"bit memiliki #ormat alamat a5al yang khusus yaitu >>>> >66b atau dalam
#ormat he>adecimal >6h dan >*h, misalnya *6h (mulai dari *6h sampai *:h) untuk P6,
**h untuk ),!( dan seterusnya.
1.3. SET INTRUKSI SECARA SEKILAS
mikrokontroler )*+,-%.-& mengeksekusi set intruksi yang sama. Set intruksi
ini telah dioptimasi untuk aplikasi control *"bit serta menyediakan berbagai macam
mode pengalamatan yang cepat untuk akses RM internal guna mem#asilitasi operasi
byte pada struktur data yang kecil. Set intruksi juga menyediakan dukungan penuh untuk
?ariable"?ariabel %"bit sebagai tipe data yang terpisah, yang membolehkan melakukan
manipulasi bit secara langsung dalam system"sistem kontrol dan logic yang memerlukan
pemrosesan @oolean.
1.3.1 PROGRAM STATUS WORD
PS4 atau program status word berisi bit"bit status yang berkaitan dengan kondisi
,P/ saat itu. PS4, sebagaimana ditunjukkan pada gambar diba5ah berada dalam ruang
S<R status yang tersimpan dalam PS4 meliputi : carry bit, the au>iliary carry ( untuk
operasi @,1 ), dua bit pemilih bank register, o?er#lo5, #lag, sebuah bit paritas dan dua
#lag status yang bisa dide#inisikan sendiri ( user"de#inable ).
,arry bit, selain sebagai status bit sisa ( carry ) pada operasi aritmatika, juga bisa
digunakan sebagai AakumulatorB untuk beberapa operasi @oolean.
@it"bit RS6 dan RS% digunakan untuk memilih salah satu dari empat bank
register, beberapa intruksi merujuk lokasi"lokasi Ram ini sebagai R6, R%, R& hingga R:,
status dari RS6 dan RS% menetukan bank register mana yang digunakan selama eksekusi
program yang bersangkutan.
@it paritas ( parity bit ) menentukan cacah logik A%B dalam akumulator, jika cacah
logic A%B ganjil maka bit bit paritasnya sama dengan % ( P;% ), sebaliknya jika cacahnya
genap maka P;6. dengan demikian cacah logic A%B dalam akumulator ditambah dengan
bit paritas, P, akan selalu berjumlah genap, maka bit paritas ini dinamakan sebagai bit
paritas genap atau e?en parity bit ( karena tugasnya selalu menjaga agar cacah logic A%B
selalu genap ). 1ua bit sisanya ( PS4.% dan PS4.- ) tidak terikat serta dapat digunakan
sebagai #lag yang serbaguna dan #leksibel.
1.3.2 MODE-MODE PENGALAMATAN
1.3.2.1 pengalamaan lang!"ng #$%&e' a$$&e!!%ng (
1alam pengalamatan langsung, operan"operan ditentukan berdasar alamat * bit
( % byte ) dalam suatu intruksi. 7anya RM data internal dan S<R saja yang bisa diakses
secara langsung.
1.3.2.2 Pengalamaan a) lang!"ng #%n$%&e' a$$&e!!%ng (
1alam pengalamatan tak langsung, intruksi menetukan suatu register yang
digunakan untuk menyimpan alamat operan. @aik RM internal maupun eksternal dapat
diakses secara tak langsung.
Register alamat untuk alamat"alamat *"bit bisa menggunakan stack pointer atau
R6 atau R% dari bank register yang dipilih. Sedangkan untuk alamat %0"bit hanya bisa
menggunakan register pointer data %0"bit atau 1P)R.
1.3.2.3 %n&")!%-%n&")!% &eg%!e&
@ank"bank register, yang masing"masing berisi R6 sampai R: atau * register,
dapat diakses melalui intruksi yang op"kodenya mengandung 9"bit spesi#ikasi register
(666 untuk R6, 66% nutuk R% hingga %%% untuk R: ). Pengaksesan register denga cara
demikiann bisa menghemat penggunaan kode intruksi, karena tidak memerlukan sebuah
byte untuk alamat. Saat intruksi tersebut dikerjakan, satu dari delapan register pada bank
yang terilih yang diakses.
1.3.2.* %n&")!%-%n&")!% &eg%!e& )+"!"!
@eberapa intruksi hanya dikhususkan untuk suatu register tertentu. Misalnya suatu
intruksi yang hanya bekerja pada akumulator saja, sehingga tidak memerlukan alamat
byte untuk menunjuk ke akumulator tersebut. 1alam hal ini, op"kodenya sendiri telah
mengandung penunjuk ke register yang benar. Intruksi yang mengacu akumulator sebagai
akan dikodekan dengan op"kode spesi#ik akumulator.
1.3.2.5 ),n!ana !ege&a #%mme$%ae ',n!an! (
(ilai dari suatu konstanta dapat segera menyatu dengan op"kode dalam memori
program. Misalnya , intruksi ,: m,- A./100, yang akan menyimpan konstanta %66
(desimal) ke dalam akumulator. @ilangan yang sama tersebut bisa juga dituliskan dalam
#ormat he>a sebagai 02h # m,- A./1*+ (.
1.3.2.1 Pengalamaan e&%n$e)! # %n$e2e$ a$$&e!!%ng (
Memori program hanya bisa diakses melalui pengalamatan terindeks , mode
pengalamatan ini ditujukan untuk membaca tabel tengok ( look"up tables ) yang
tersimpan dalam memori program ( data yang menyatu dengan program ). Sebuah
register dasar %0"bit ( bisa 1P)R atau pencacah program atau program counter )
menunjuk ke a5al atau dasar tabel dan akumulator di"set dengan angka indeks tabel yang
akan diakses. lamat dari entri table dalam memori program dibentuk dengan
menjumlahkan data akumulator dengan penunjuk a5al table.
)ipe lain dari pengalamatan terindeks digunakan dalam intruksi"intruksi Alompat
bersyaratB. 1alam hal ini, alamat tujuan dari intruksi lompat ( jump ) dihitung sebagai
jumlah dari penunjuk dasar (base pointer ) dengan data akumulator.
1.3.3 INTRUKSI-INTRUKSI ARITMATIKA
Pada table diba5ah ditujukkan da#tar intruksi"intruksi aritmatika ditunjukkan pula
mode"mode pengalamatan yang bisa digunakan pada masing"masing intruksi untuk
mengakses operan CbyteD. Missal perintah 11 ,CbyteD bisa ditulis
11 ,:#h ( pengalamatan langsung )
11 ,R6 (pengalamatan tak langsung )
11 ,R: ( pengalamatan register )
11 ,E%&:( pengalamatan segera )
Pada tabel juga ditunjukkan 5aktu eksekusi masing"masing intruksi, dengan
asumsi menggunakan #rekuensi %& M7F. )erlihat bah5a hampir semua intruksi
aritmatika dikerjakan dalam 5aktu %md kecuali intruksi I(, 1P)R, yang dikerjakan
selama & md dan intruksi"intruksi perkalian serta pembagian, yang msing"masing
dikerjakan selama 2 md
Intruksi I(, 1P)R beroperasi pada penunjuk data ( data pointer ) %0"bit,
sedangkan penunjuk data ini menghasilkan alamat %0"bit untuk memori eksternal.
1engan demikian kemampuan untuk menaikkan penunjuk data dalam satu operasi %0"bit
merup akan suatu #itur yang berguna.
Intruksi M/8 @ digunakan untuk melakukan perkalian antara akumulator
dengan data yang tersimpan dalam register @ dan hasilnya yang %0"bit disimpan ke dalam
Register @ ( menumpuk data yang lama = o?er5rite ) dan akumulator ( ).
Intruksi 1IG @ digunakan untuk melakukan pembagian antara akumulator
dengan data yang tersimpan dalam register @ dan hasilnya, yang *"bit,disimpan dalam
akumulator dan sisanya, yang *"bit juga, disimpan dalam register @ ( menumpuk data
yang lama ). Intruksi ini tidak begitu berman#aat dalam rutin"rutin ApembagianB
aritmatika dibandingkan dengan operasi"operasi kon?ersi radiks ( sistem bilangan ) dan
geser bit ( shi#t ) terprogram. 3arena, dalam operasi penggeseran bit, suatu bilangan jika
dibagi denga A&B , maka secara tidak langsung akan mengalami penggeseran bit kekanan
sebanyak n. Hika digunakan intruksi 1IG @, maka selain dikerjakan selama 2 md,
register @ akan menyimpan bit"bit yang tergeser keluar dari akumulator ( sehingga @
perlu diset lagi ), demikian seterusnya.
I(S)R/3SI"I(S)R/3SI 8!'I3
Instruksi"instruksi logik adalah instruksi yang terdiri dari ($1, !R, $I!R, dan
(!) pada suatu byte dan beroperasi pada masing"masing bit.
Instruksi putar atau rotate R8 , R8, dan lain"lain akan menggeser kekiri atau
kekanan isi akumulator % bit. /ntuk putar kiri, bit MS@ menggeser kekiri akan berpetar
masuk keposisi 8S@, sedangkan putar kanan, 8S@Jlah yang berputar ke posisi MS@.
Instruksi S4P digunakan untuk menukar isi 2"bit (nibel) rendah dan tinggi
pada akumulator. !perasi penukaran 2"bit ini berguna dalam manipulasi @,1.
INSTRUKSI-INSTRUKSI TRANS3E3R DATA
Ta4el In!&")!% T&an!5e& Daa 6ang Menga)!e! Mem,&% Ine&nal
Mnemonik !perasi Mode"mode pengalamatan 4aktu
ekseku
si
1ir Ind Reg Imm
Mo?
,CsumberD
; sumber I I I I %
Mo?
CtujuanD,
)ujuan ; I I I %
Mo?
C)jnD,CSbrD
)ujuan ; sumber I I I I &
Mo?
1P)R,Edata%0
I(, SP
Mo?
AKSPB,sumber
I I& &
P/S7
CsumberD
I(, SP
M!G
AKSPB,CsumberD
I
I,7
,C@yteD
)ukar data byte
antara ,, dan
@yte
I
I,71
,KRi
)ukar data nilai
rendah antara ,,
dan KRi
I I I
P!PCtujuanD M!G
CtujuanD,BKSPB
1ec SP
I
TA7EL INSTRUKSI TRANS3ER DATA MEMORI EKSTERNAL
8$@R
8M)
I(S)R/3SI </('SI 43)/
$3S$3/SI (Ld)
* bit M!GI ,KRi @aca RM
eksternal lokasi Ri
&
* bit M!GI KRi, )ulis RM
eksternal lokasi Ri
&
%0 bit M!GI ,K1P)R @aca RM
eksternal lokasi
1P)R
&
%0 bit M!GI K1P)R, )ulis RM
eksternal lokasi
1P)R
&
TA7EL INSTRUKSI TA7EL TENGOK
I(S)R/3SI </('SI 43)/ $3S$3/SI
(Ld)
M!G, a,KM1P)R @aca memori program di
lokasi (;1P)R)
&
M!G, ,KMP, @aca memori program di
lokasi (aMpc)
&
O33SET RELATI3
lamat tujuan dari lompatan"lompatan ditentukan berdasar sebuah alamat yang
sesungguhnya dalam memori program. @agaimanapun juga, alamat tujuan digabung
dengan byte o##set relati#. Ini merupakan sebuah byte o##set bertanda (&Ns
complement)yang ditambahkan ke P, secara &Ns complement juga jika lompatan
dikerjakan. 1engan demikian, jangkauan lompatan adalah "%&* hingga M %&: byte relati#
terhadap byte pertama yang mengikuti instruksi.
TA7EL INSTRUKSI LOMPATAN
I(S)R/3SI </('SI 43)/ $3S$3/SI
HMP 8M) 8ompat ke alamat &
HMP KM1P)R 8ompat ke M1P)R &
,88 8M) Panggil sunruitn dialamat &
R$) 3embali dari subrutin &
R$)I 3embali dari layanan &
interupsi
TA7EL INSTRUKSI LOMPATAN 7ERS6ARAT
Mnem,n%) Ope&a!% M,$e-M,$e pengalamaan Wa)"
e)!e)"!%
D%& In$ Reg Imm
HO rel 8ompat
;6
3M/8)!R SH &
H(O rel 8ompat
jika
%
6
3/M/8)!R SH &
1H(O
CbyteD,rel
)urun dan
lompat
jika tidak
6
I I &
,H($
,byte,rel
8ompat

%
byte
I I &
,H($
byte,Edata,rel
8ompat
jika
byte
%
Edata
I I &
P$43)/( ,P/
Mikrokontroler atmel -% memiliki oscilator on chip yang dapat digunakan sebagai
sumber detak (clock) ke ,P/. /ntuk menggunakannya, hubungkan sebuah resonator
kristal atau keramik diantara kaki"kaki I)8% dan I)8& pada mikrokontroler dan
hubungkan kapasitornya ke ground.
SIKLUS MESIN
Pembangkit clock internal menentukan rentetan kondisi (state) yang membentuk
sebuah siklus mesin mikrokontroler. Siklus mesin tersebut deberi nomor s% hingga s0,
masing"masing kondisi panjangnya & periode oscilator. 1engan demikian satu siklus
mesin paling lama dikerjakan dalam %& periode oscilator atau %Ld, jika #rek5ensi
kristalnya adalah %& MhF.
STRUKTUR INTERUPSI
)*+,-% menyediakan - sumber interupsi yaitu & interupsi eksternal, & interupsi
pe5aktu dan sebuah interupsi serial. Mikrokontroler -% dari atmel lainnya memiliki
?ektor dan sumber interupsi tambahan.
PENGAKTI3AN INTERUPSI
Masing"masing sumber interupsi dapat diakti#kan dan dimatikan secara indi?idual
atau dengan me"nol"kan bit"nit I$ (interupt enable) dalam S<R. Register I$ ini juga
mengandung sebuah bit untuk akti?asi interupt secara global, yang dapat digunakan
untuk mengakti#kan dan mematikan interupsi secara keseluruhan (global)
)abel I$ pada at*+c-%
PRIORITAS INTERUPSI
Masing"masing sumber interupsi dapat diprogram secara sendiri"sendiri ke salah
satu dari dua tingkat prioritas dengan men"set (%) atau meng"clear (6) bit IP (interupt
priority) yang bersangkutan dalam S<R.
Sebuah interupsi dengan prioritas rendah dapat diinterupsi oleh yang berprioritas lebih
tinggi tetapi tidak untuk yang sama prioritasnya. Sedangkan interupsi yang berprioritas
tertinggi tidak dapat diinterupsi oleh sumber interupsi lainnya. Hika permintaan interupsi
yang berbeda muncul pada saat yang bersamaan maka sumber ijnterupsi yang memiliki
priorityas lebih tinggi yang dilayani terlebih dahulu.tetapi jika dua interupsi dengan
prioritas sama muncul maka metode polling (pengecekan kontinyu) internal akan
menetukan interupsi mana yang akan dilayani pertama kali, dengan demikian pada
masing"masing tingkat prioritas, metode polling digunakan sebagai penentu struktur
prioritas kedua.
TA7EL REGISTER IP #INTERUPT PRIORIT6( PADA AT89C51
SIM@!8 P!SISIS </('SI
" IP.: ,adangan P
" IP.0 ,adangan P
" IP.- ,adangan P
PS IP.2 @it prioritas untuk interupt port serial
P)% IP.9 @it prioritas untuk interupt )imer %
PI% IP.& @it prioritas untuk interupt $ksternal %
P)6 IP.% @it prioritas untuk interupt )imer 6
PI6 IP.6 @it prioritas untuk interupt $ksternal 6
S<R (R$'IS)$R </('SI 37/S/S) P1 3$8/R' -%
Sekumpulan S<R yang terdapat pada mikrokontroler tmel keluarga -%
1. AKUMULATOR
,, atau akumulator yang menempati lokasi $6h digunakan sebagai register
untuk penyimpanan data sementara, dalam program, instruksi mengacunya sebagai
register
2. REGISTER 7
register @ (lokasi <6h) digunakan sebagai operasi perkalian dan pembagian, untuk
instruksi lain dapat diperlakukan sebagai register S,R),7 P1 (Apapan coret"coretB)
lainnya.
9. PROGRAM STATUS WORD
register PS4 (lokasi 167) mengandung in#ormasi status program sebagaimana
telah dijelaskan sebelumnya
*. STACK POINTER
register SP atau stack pointer (lokasi *%7) merupakan register dengan panjang *"
bit, digunakan dalam proses simpan dan ambil dari. le stack. (ilainya akan dinaikkan
sebelum data disimpan dengan menggunakan instruksi P/S7 dan ,88. 4alau stack
nisa menempati lokasi dimana saka dalam RM, register SP akan selalu diinisialisasi ke
6:7 5setelah adanya reset, hal ini menyebabkaQn stack bera5al dari lokasi 6*7.
5. DATA POINTER
register data poimter atau 1P)R mengandung 1P)R untuk byte tinggi (1P7) dan
byte rendah (1P8) yang masing",asing berada di lokasi *97 dan *&7, bersama"sama
membentuk register yang mampu menyimpan alamat %0"bit. 1apat dimanipulasi sebagai
register %0bit atau dua register *"bit yang terpisah.
1. PORT 0. 1.2.3
masing"masing menempati lokasi *67, +67, 67 dan @67 merupakan pengunci"
pengunci (latches), yang digunakan untuk menyimpan data yang akan dibaca atau ditulis
dari.ke port, untuk masing"masing port.
:. SERIAL DATA 7U33ER
S@/< atau serial data bu##er (lokasi ++7) sebenarnya terdiri dari dua register
yang terpisah yaitu register penyangga pengirim (transmitt bu##er) dan penyangga
penerima (recei?e bu##er) pada saat data disalin ke S@/<, maka data sesungguhnya
dikirim ke penyangga pengirim dan sekaligus menga5ali transmitst data serial,
sedangkan saat data disalin dari S@/<, maka sebenarnya data tersebut berasal dari
penyangga penerima.
8. TIMER REGISTER
pasangan register ( )7),)86 ) dilokasi *,h dan *7, ( )7%, )8% ) dilokasi *67
dan *@7 serta ( )7&, )8& ) dilokasi ,17 dan ,,7 merupakan register"register
pencacah %0"bit untuk masing"masing timer 6, timer %, timer &.
9. CAPTURE REGISTER
pasangan register ( R,P7&7, R,P&8 ) yang menempati lokasi ,@7 dan
,7 merupakan register capture untuk mode timer & capture. Pada mode ini, sebagai
tanggapan terjadinya suatu sinyal transisi sinyal dikaki (pin) )&$I (pada )*+,-&.-- ),
)7& dan )8& disalin masing"masing ke R,P&7 dan R,P&8. )imer & juga memiliki
mode isi ulang otomatis %0"bit dan R,P&7 serta R,P&8 digunakan untuk
menyimpan nilai isi ulang tersebut.
10. CONTROL REGISTER
register"register IP, I$, )M!1, ),!(, )&,!(, )&M!1, S,!(, dan P,!(
berisi bit"bit kontrol dan status untuk sistem interupsi.
MODE-MODE PENGALAMATAN DALAM KELUARGA MCS 51
1ata atau operan bisa berada ditempat yang berbeda sehingga dikenal beberapa
cara untuk mengakses data.operan tersebut yang dinamakan sebagai mode pengalamatan
( addressing mode ) antara lain yaitu:
1. M,$e Pengalamaan Sege&a #Imme$%ae A$$&e!!%ng M,$e(
,ara ini menggunakan konstanta yaitu instruksi yang diberikan menyatu dengan
data yang diberikan.
2. M,$e Pengalamaan Lang!"ng #D%&e' A$$&e!!%ng M,$e(
,ara ini dipakai untuk menunjuk data yang berada disuatu lokasi memori dengan
cara menyebut lokasi (alamat) memori tempat data tersebut berada.
3. M,$e Pengalamaan T%$a) Lang!"ng
,ara ini dipakai untuk mengakses data yang berada didalam memori, tetapi lokasi
memori tidak disebut secara langsung tapi di masukkan ke register lain.
*. M,$e Pengalamaan Reg%!e& #Reg%!e& A$$&e!!%ng M,$e(
,ara ini dipakai untuk mengakses data yang sudah berada dalam register
serbaguna sebagai tempat menyimpan data yang praktis dan kerjanya sangat
cepat.
5. M,$e Pengalamaan K,$e T%$a) Lang!"ng #C,$e In$%&e' A$$&e!!%ng
C,$e(
/ntuk keperluan ini M,S -% mempunyai cara penyebutan data dalam memori
program yang dilakukan secara tak langsung
STRUKTUR PORT DAN CARA KER;A
Pada dasarnya mikrokontroler tmel keluarga -% mempunyai dua kelompok
instruksi untuk mengeluarkan data ke port paralel
3elompok instruksi pertama bekerja pada port seutuhnya artinya * jalur #ari port
bersangkutan. 3elompok instruksi kedua hanya berpengaruh pada salah satu jalur atau bit
dari port.
3egunaan lain dari port 6 adalah sebagai saluran data (bus data ; 16 s.d 1:) yang
dipakai dalam pengaksesan memori data atau program eksternal. 3apasitas memori
eksternal bisa mencapai 02 3byte sehingga memerlukan %0 jalur saluran alamat, jalur
alamat 6 s.d : dile5atkan melalui port 6, sedangkan setengah saluran alamat yang lain
(* s.d %-) dile5atkan melalui port &. selain untuk port paralel, port 9 juga dipakai
untuk berbagai macam keperluan sarana input.output yang khusus seperti pe5aktu
(timer), pencacah (counter), dan interupsi.
3eempat port keluarga -% bersi#at d5i arah dan masing"masing memiliki sebuah
pengancing (latching) yang diacu dalam program sebagai register #ungsu khusus (R<3
atau S<R) sebagai P6, P%, P&, dan P9. selain itu juga memiliki sebuah penggerak
keluaran (output dri?er) dan sebuah penyangga masukan (input bu##er) pada masing"
masing kaki"kaki port.
SPESI3IKASI MASING-MASING PORT
Port 6 merupakan port keluaran masukan I.! bertipe open drain bidirectional,
sebagai port keluaran, masing"masing kaki dapat menyerap arus (sink) delapan masukan
))8 (sekitar 9,* m) port 6 juga dapat dikon#igurasikan sebagai bus alamat .data bagian
rendah (lo5 byte) selama proses pengaksessan memori data dan program eksternal. Hika
digunakan dalam mode ini port 6 memiliki pullup internal.
Port % merupakan port I.! d5i arah yang dilengkapi dengan pullup internal,
penyangga keluaran port% mampu memberikan . menyerap arus sebesar empat masukan
))8 (%,0 m).
Port & merupakan port I.! d5i arah yang dilengkapi pullup internal, penyangga
keluaran port & mampu memberikan . menyerap arus empat ))8 (%,0 m). Port & akan
memberikan byte alamat bagian tinggi (high byte) selama pengambilan instruksi dari
memori program eksternal dan selama pengaksesan memori data eksternal yang
menggunakan perintah dengan alamat %0 bit.
Port 9 merupakan port I.! d5i arah dengan pullup internal penyangga keluaran
port 9 dapat memberikan.menyerap arus empat ))8 (%,0 m). Port 9 sebagaimana port %
juga memiliki #ungsi"#ungsi alternati# antara lain menerima sinyal"sinyal kontrol
bersama"sama dengan port & selama pemrograman dan ?eri#ikasi.
7A<ASA PEMROGRAMAN
@ahasa Pemrograman Rang dipakai dan sangat dasar sekali yaitu dengan
menggunakan bahasa assembler, dimana pada pemrograman bahasa assembler lebuh
mudah untuk di logikakan ke dalam bentuk tulisan atau diagram. 1iba5ah ini macam dan
jenis instruksi dari bahasa assembler yang nantinya akan digunakan dimana ketika kita
selesai membuat program akan dicompile terlebih dahulu ke dalam bentuk
e>tension .7$I. 1imana setelah dicompile dan berubah menjadi e>tension .7$I
maka #ile tersebut baru bisa di do5nload atau diisikan ke dalam chip I, mikrokontroller.
KARAKTER STRING
$kspresi string dilakukan dengan memberikan tanda S S diantara nilai yang
diinginkan, ekspresi ini sangat berguna jika pembuat program ingin menuliskan perintah
yang membutuhkan nilai S,II dari suatu operand.
Missal :
Hika programmer ingin mengisikan nilai S,II dari karakter @ ke dalam akumulator ,
perintah M!G ,EN@N akan lebih mudah ditulis daripada perintah M!G ,E2%7 karena
programmer masih harus melihat table S,II terlebih dahulu.
OPERATOR ARITMATIKA
$kspresi ini digunakan untuk mempermudah programmer dalam pemberian nilai
pada operand yang memerlukan proses perhitungan terlebih dahulu , operator aritmatika
terdiri atas :
M : untuk penambahan
" : untuk pengurangan
P : untuk perkalian
. : untuk pembagian
M!1 untuk modulo ( ekspresi sisa setelah pembagian )
OPERATOR LOGIKA
$kspresi ini digunakan untuk mempermudah programmer dalam pemberian nilai
pada operand yang memerlukan proses operasi logika terlebih dahulu, operator"operator
tersebut adalah :
!R untuk ekspresi logika !R
(1 untuk ekspresi logika (1
I!R untuk ekspresi logika $I!R
(!) untuk ekspresi logika komplemen
OPERATOR K<USUS
S7R untuk menggeser kekanan
S78 untuk menggeser kekiri
7I'7 untuk mengambil nilai byte tinggi
8!4 untuk mengambil nilai byte rendah
( ) untuk operasi yang harus didahulukan
OPERATOR RELASIONAL
!perator ini digunakan diantara dua buah operand dan hasilnya adalah 6666
untuk salah serta #### untuk benar operator"operator ini terdiri atas :
$T untuk ekspresi sama dengan
($ untuk ekspresi tidak sama dengan
8) untuk lebih kecil
8$ untuk lebih kecil sama dengan
') untuk lebih besar
'$ untuk lebih besar sama dengan
INSTRUKSI-INSTRUKSI
ADD
Intruksi ini ber#ungsi untuk menambahkan .menjumlahkan akumulator dengan
data yang diinginkan
DA
Instruksi 1 (decimal adjust) dipakai setelah instruksi 11, 11, atau S/@@
digunakan untuk merubah nilai biner * bit yang tersimpan dalam akumulator menjadi &
digit bilangan dalam #ormat @,1
SU77
Instruksi ini ber#ungsi untuk mengurangkan data pada akumulator dengan data
yang diinginkan
INC
Instruksi ini menambahkan nilai akumulator dengan nilai % dan hasilnya disimpan
dalam akumulator
DEC
Instruksi ini melakukan pengurangan data pada akumulator dengan % dan hasilnya
disimpan dalam akumulator
MUL A7
Instruksi ini melakukan perkalian antara akumulator dan register @ hasil dari
perkalian disimpan di akumulator , untuk byte rendah dan register @, untuk byte tinggi
dan jika hasil perkalian lebih dari &-- maka o?er#lo5 #lag akan diset , sedangkan carry
akan selalu clear.
DI= A7
Instruksi ini melakukan pembagian antara akumulator dengan register @ dan hasil
pembagian akan disimpan diakumulator dan sisanya hasil pembagian disimpan diregister
@
DA A
Instruksi ini digunakan untuk mengubag data diakumulator menjadi bentuk @,1.
Instruksi ini akan mengubah sebuah data * bit dalam bentuk he>a & digit.
ANL
Instruksi ini melakukan operasi (1 antara dua ?ariable dan menyimpannya di
?ariable tujuan.
ORL
Instruksi melakukan operasi !R antara dua buah ?ariabel dan menyimpannya di
?ariabel tujuan.
>RL
Instruksi ini melakukan operasi $I!R antara dua buah ?ariabel dan
menyimpannya di ?ariabel tujuan.
CLR
Instruksi ini melakukan perubahan bit menjadi 6
CLR A
Instruksi ini memberikan nilai 6 pada * bit akumulator
CPL A
Instruksi ini melakukan komplemen pada setiap bit dalam akumulator
RL A
Instruksi ini melakukan pergesaeran kekiri % bit untuk setiap bit dalam
akumulator
RLC A
Instruksi ini melakukan pergeseran kekiri % bit dalam akumulator diikuti dengan
carry #lag . bit ke : akan masuk ke carry #lag dan bit carry #lag akan masuk ke bit 6
RR
Instruksi ini melakukan pergeseran ke kanan % bit untuk setiap bit dalam
akumulator
RRC A
Instruksi ini melakukan pergeseran kekanan % bit dalam akumulator diikuti
dengan carry #lag . bit ke : akan masuk ke carry #lag dan bit carry #lag akan masuk ke
bit 6
SWAP A
Instruksi ini melakukan operasi penukaran nibble tinggi dan nibble rendah di
akumulator
MO=
Instruksi ini melakukan pemindahan data dari masukan ke akumulator
MO=>
Instruksi melakukan pemindahan data dari memori eksternal
MO=C
Instruksi ini melakukan pemindahan data dari memori program
PUS<
Instruksi ini melakukan penyimpanan data dari suatu memori ke dalam stack
POP
Instruksi melakukan pengambilan data dari stack menuju ke suatu memori data
>C<
Instruksi ini melakukan penukaran data % dengan data &
SET7
Instruksi ini melakukan perubahan bit menjadi %
;C
Instruksi ini melakukan lompatan ke suatu alamat yang dide#inisikan jika carry
#lag set, jika carry #lag clear akan menjalankan program selanjutnya
;NC
Instruksi ini melakukan lompatan ke suatu alamat yang dide#inisikan jika carry
#lag clear, jika carry #lag set akan menjalankan program selanjutnya
;7
Instruksi ini melakukan lompatan ke suatu alamat jika bit dari register atau
memori set, sedangkan jika clear maka akan menjalankan instruksi program
selanjutnya
;N7
Instruksi ini melakukan lompatan ke suatu alamat jika bit dari register atau
memori clear, sedangkan jika set maka akan menjalankan instruksi program
selanjutnya
;7C
Sama dengan instruksi H@ namun terdapat proses clear pada bit tersebut setelah
lompatan dilakukan
ACALL
Instruksi ini melakukan lompatan ke suatu subroutine yang ditunjuk oleh alamat ,
lompatan yang dapat dilakukan berada di area sebesar & 3 byte
LCALL
Instruksi ini melakukan lompatan ke suatu subroutine yang ditunjuk oleh suatu
alamat dimana lompatan yang dapat dilakukan berada pada area sebesar 02 3 byte
RET
Instruksi ini melakukan lompatan ke alamat yang disimpan dalam SP dan SP"%.
instruksi ini biasa digunakan pada saat kembali dari subroutine yang dipanggil
dengan instruksi ,88 atau 8,88
RETI
Instruksi ini melakukan lompatan ke alamat yang disimpan dalam SP dan SP"%
dan mengembalikan kondisi #lag"#lag interrupt agar interrupt berikutnya dengan
prioritas yang sama dapat dilakukan.
A;MP
bsolute jump melompat dan menjalankan program yang berada dialamat yang
ditentukan
L;MP
8ong jump melompat dan menjalankan program yang berada di alamat yang
ditentukan
S;MP
Short jump melakukan lompatan ke alamat yang ditentukan dengan lompatan
maksimum %&* byte
;MP
Instruksi ini melakukan lompatan menuju alamat yang telah ditentukan
;?
Instruksi ini melakukan lompatan jika akumulator 667 jika tidak 667 maka
instruksi akan dilanjutkan
;N?
Instruksi ini melakukan lompatan ke alamat yang ditentukan jika akumulator tidak
667 dan jika 667 maka instruksi akan dilanjutkan
C;NE
Instruksi ini melakukan perbandingan antara data tujuan dan data sumber serta
melakukan lompatan ke alamat yang ditentukan jika hasil perbandingannya tidak
sama
D;N?
Instruksi ini melakukan pengurangan pada data dengan % dan lompat ke alamat
yang ditentukan jika hasilnya bukan 66
NOP
Instruksi ini ber#ungsi untuk melakukan tundaan pada program sebesar % cycle
tanpa mempengaruhi register"register maupun #lag

Você também pode gostar