Escolar Documentos
Profissional Documentos
Cultura Documentos
%
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