mikrokontroler
description
Transcript of mikrokontroler
Erna Kumalasari Nurnawati 1
mikrokontroler
Pertemuan 3
Erna Kumalasari Nurnawati 2 2
PERANGKAT LUNAK MIKROKONTROLER MCS-51
2.1. Pendahuluan
• Sebuah mikrokontroler tidak akan dapat bekerja bila tidak diberikan program kepadanya.
• Sistem kerja mikrokontroler dapat dirubah setiap saat sesuai dengan program yang diberikan kepadanya.
Erna Kumalasari Nurnawati 3 3
• Instruksi-instruksi perangkat lunak berbeda untuk masing-masing jenis mikrokontroller.
• Sebuah mikrokontroler tidak dapat memahami instruksi-instruksi yang berlaku pada mikrokontroler jenis lain.
Contoh:
Mikrokontroler buatan Intel dengan
mikrokontroler buatan Zilog memiliki
perangkat instruksi yang berbeda • Instruksi-instruksi pada mikrokontroler
dikenal sebagai bahasa pemrograman sistem mikrokontroler
Erna Kumalasari Nurnawati 4 4
2.2. Operand dan Ekspresi
Assembler
a. Operand
Bentuk umum semua instruksi dalam assembler Intel dapat dituliskan sebagai berikut:
[LABEL:] MNEMONIC [OPERAND] [OPERAND] [OPERAND] [;KOMENTAR]
Erna Kumalasari Nurnawati 5 5
Jumlah operand tergantung pada type mnemonic. Semua operand dapat dibagi dalam 6 kelompok, yaitu:
1. Simbol Khusus Assembler
2. Pengalamatan Tak Langsung
3. Pengalamatan Langsung (Immediate
Data)
4. Pengalamatan Data
5. Pengalamatan Bit
6. Pengalamatan Kode
7. Operator Assembler
Erna Kumalasari Nurnawati 6 6
• Simbol Khusus Assembler Assembler telah menyediakan beberapa simbol
untuk menunjukkan register tertentu sebagai operand.Contoh:A AkumulatorR0 …. R7 Register SerbagunaDPTR Data Pointer Register 16 BitPC Program CounterC Carry FlagB Register B
Erna Kumalasari Nurnawati 7 7
• Pengalamatan Tak Langsung
Operand pengalamatan tak langsung menunjuk ke sebuah register yang berisi lokasi alamat memory yang akan digunakan dalam operasi.
Lokasi yang nyata tergantung pada isi register saat instruksi dijalankan.
Erna Kumalasari Nurnawati 8 8
• Pengalamatan Tak Langsung
Untuk melaksanakan pengalamatan tak langsung digunakan simbol @
Contoh:
MOV A,@R1
MOV @R0,A
MOV @R1,24H
Erna Kumalasari Nurnawati 9 9
• Pengalamatan Tak Langsung
Pengalamatan tak langsung (Indirect) ini biasa digunakan untuk melakukan penulisan, pemindahan atau pembacaan beberapa data dalam lokasi memori yang mempunyai urutan beraturan.
Jika proses ini dilakukan dengan menggunakan pengalamatan langsung jumlah baris program yang diperlukan akan cukup panjang.
Erna Kumalasari Nurnawati 10 10
• Pengalamatan Tak Langsung
Contohnya penulisan data 08H pada alamat 50H hingga 57H.
Listing a.1ORG 0HMOV 50H,#08HMOV 51H,#08HMOV 52H,#08HMOV 53H,#08HMOV 54H,#08HMOV 55H,#08HMOV 56H,#08HMOV 57H,#08HEND
Erna Kumalasari Nurnawati 11 11
• Pengalamatan Tak Langsung
Dengan digunakan sistem pengalamatan tak langsung, dapat diubah menjadi :
Listing a.2.ORG 0HMOV R0,#50H;
LOOP: MOV @R0,#08HINC R0CJNE R0,#58H,LOOPEND
Erna Kumalasari Nurnawati 12 12
• Pengalamatan Tak Langsung
Dalam listing program a.2 diatas, R0 digunakan sebagai register yang menyimpan alamat dari data yang akan dituliskan. Dengan melakukan penambahan pada isi R0 dan mengulang perintah penulisan data ke alamat yang ditunjuk R0 hingga register ini menunjukkan nilai 57H + 1, atau 58H. Dengan demikian, barisan perintah pada Listing a.1 dapat dieliminasi.
Erna Kumalasari Nurnawati 13 13
• Pengalamatan Tak Langsung
MCS-51 mempunyai sebuah register 16 bit (DPTR) dan dua buah register 8 bit ( R0 dan R1 ) yang dapat digunakan untuk melakukan pengalamatan tidak langsung.
Contoh-contoh perintah yang menggunakan sistempengalamatan tak langsung adalah :
MOV @R0,A ; R0 sebagai reg. penyimpan alamat
MOV A,@R1 ; R1 sebagai reg. penyimpan alamat
ADD A,@R0 ; R0 sebagai reg. penyimpan alamat MOVX@DPTR,A ; DPTR sebagai reg. penyimpan alamat
MOVC A,@A+DPTR ; DPTR sebagai register penyimpan alamat
Erna Kumalasari Nurnawati 14 14
• Pengalamatan Langsung ( Immediate Data )
Proses pengalamatan ini terjadi pada sebuah perintah ketika nilai operand merupakan data yang akan diproses.
Biasanya operand tersebut selalu diawali dengan tanda ‘#’ seperti pada contoh berikut.
MOV A,#05H
MOV A,#45H
MOV B,#0E4H
MOV DPTR,#4356H
Erna Kumalasari Nurnawati 15 15
• Pengalamatan Langsung ( Immediate Data )
Operand yang digunakan pada immediate data juga dapat berupa bilangan bertanda mulai - 256 hingga + 256.
Contoh :MOV A,# -1
sama dengan MOV A,#0FFH
Bilangan -1 adalah sama dengan bilangan 0 dikurangi 1, dalam bentuk heksa bilangan 00H. Jika dikurangi dengan 1, hasilnya adalah 0FFH. Dengan pengertian seperti ini, bilangan -1 dapat dianggap sama dengan 0FFH.
Erna Kumalasari Nurnawati 16 16
• Pengalamatan Data
Proses pengalamatan ini terjadi pada sebuah perintah ketika nilai operand merupakan alamat dari data yang akan diisi, dipindahkan atau diproses.
Contoh :MOV P0,A
Port 0 adalah salah satu I/O pada MCS-51 yang mempunyai alamat 80H. Perintah pada contoh di atas selain mengirimkan data akumulator ke Port 0 juga merupakan perintah pemindahan data dari akumulator ke alamat 80H sehingga dapat juga dituliskan
MOV 80H,A.
Erna Kumalasari Nurnawati 17 17
2.2. Register Pada Mikrokontroler MCS-51
Register:
Adalah tempat menyimpan/mengolah data sementara pada saat mikroprosessor / mikrokontroller bekerja.
Erna Kumalasari Nurnawati 18 18
Pada MCS-51 terdapat antara lain:
REGISTER 8 bit
A: Accumulator R3B R4R0 R5R1 R6R2 R7
REGISTER 16 bit
DPTR DPH DPL PC PC ( Program Counter )
Erna Kumalasari Nurnawati 19 19
2.3. Instruksi Pemrograman Pada Mikrokontroler MCS-51
• Pada MCS-51 mempunyai ± 256 instruksi pemrograman yang secara garis besar dibagi menjadi :
1. Transfer Data
2. Operasi Aritmatika
3. Operasi Logika
4. Manipulasi Variabel Boolean
5. Instruksi Percabangan
Erna Kumalasari Nurnawati 20 20
2.3.1. Instruksi Transfer Data• Instruksi Transfer Data mempunyai beraneka
ragam bentuk yang berbeda yang disesuaikan dengan darimana data tersebut berasal (SOURCE) dan akan ditransfer kemana (DESTINATIONS).
• Instruksi ini menggunakan operand MOV yang tidak mengubah isi data pada sumber ( Source ) dan hanya mengkopi (menggandakan) data dari sumber ( Source ) ke tujuan (Destinations)
Erna Kumalasari Nurnawati 21 21
Jenis-jenis Instruksi Transfer Data
a. ACCUMULATOR / REGISTER
Metode ini adalah mengkopi data dari suatu Register ( R0 – R7 ) ke Accumulator ( A )
Contoh : MOV A,R0
MOV A,R1
MOV A,R2
MOV A,R3
MOV A,R4
MOV A,R5
MOV A,R6
MOV A,R7
Erna Kumalasari Nurnawati 22 22
b. REGISTER / ACCUMULATOR
Metode ini adalah mengkopi data yang berada di Accumulator ( A ) ke suatu Register ( R0 – R7 )
Contoh : MOV R0,A
MOV R1,A
MOV R2,A
MOV R3,A
MOV R4,A
MOV R5,A
MOV R6,A
MOV R7,A
Erna Kumalasari Nurnawati 23 23
c. ACCUMULATOR / DATA ( IMMEDIATE )
Metode ini adalah untuk mengisi data ke dalam Accumulator ( A ) dengan data 8 bit secara langsung. Pada metode ini digunakan tanda # pada data yang akan diisikan.
Contoh : MOV A,#24H
MOV A,#7FH
MOV A,#0FEH
MOV A,#0F8H
MOV A,#100
MOV A,#255
MOV A,#0FFH
Erna Kumalasari Nurnawati 24 24
d. REGISTER / DATA ( IMMEDIATE )
Metode ini adalah untuk mengisi data ke dalam suatu Register ( R0 – R7 ) dengan data 8 bit secara langsung. Pada metode ini digunakan tanda # pada data yang akan diisikan.
Contoh : MOV R0,#24H
MOV R1,#7FH
MOV R2,#0FEH
MOV R3,#0F8H
MOV R4,#100
MOV R5,#255
MOV R6,#0FFH
MOV R7,#0FH
Erna Kumalasari Nurnawati 25 25
e. REGISTER / REGISTER
Metode ini adalah mengkopi data yang berada di Register (R0-R7) ke suatu Register (R0-R7) yang lain.
Contoh : MOV R0,R5
MOV R4,R0
MOV R2,R1
MOV R6,R2
MOV R4,R7
MOV R5,R1
MOV R3,R2
MOV R7,R3
Erna Kumalasari Nurnawati 26 26
f. ACCUMULATOR / DIRECT
Instruksi ini akan memindahkan data dari sebuah alamat internal RAM ke Accumulator tanpa melalui register lainnya.
Contoh : MOV A,20H
MOV A,21H
MOV A,22H
MOV A,23H
MOV A,24H
MOV A,25H
MOV A,2FH
Erna Kumalasari Nurnawati 27 27
g. DIRECT / ACCUMULATOR
Instruksi ini akan memindahkan data dari Accumulator ke sebuah alamat internal RAM tanpa melalui register lainnya.
Contoh : MOV 20H,A
MOV 21H,A
MOV 22H,A
MOV 23H,A
MOV 24H,A
MOV 25H,A
MOV 2FH,A
Erna Kumalasari Nurnawati 28 28
h. ACCUMULATOR / INDIRECT
Type instruksi ini hanya dapat menggunakan register R0 dan R1 sebagai pointer
Contoh : MOV A,@R0
MOV A,@R1
i. INDIRECT / ACCUMULATOR
Type instruksi ini hanya dapat menggunakan register R0 dan R1 sebagai pointer
Contoh : MOV @R0,A
MOV @R1,A
Erna Kumalasari Nurnawati 29 29
j. REGISTER / DIRECT
Instruksi ini akan memindahkan data dari sebuah alamat internal RAM ke Register-register yang berada di Mikrokontroller.
Contoh : MOV R0,20H
MOV R1,21H
MOV R2,22H
MOV R3,23H
MOV R4,24H
MOV R5,25H
MOV R6,29H
MOV R7,2FH
Erna Kumalasari Nurnawati 30 30
k. DIRECT / REGISTER
Instruksi ini akan memindahkan data dari sebuah Register ke sebuah alamat internal RAM yang berada di Mikrokontroller.
Contoh : MOV 22H,R0
MOV 24H,R1
MOV 25H,R2
MOV 28H,R3
MOV 2AH,R4
MOV 2CH,R5
MOV 2DH,R6
MOV 2EH,R7
Erna Kumalasari Nurnawati 31 31
l. DIRECT / DIRECT
Instruksi ini akan memindahkan data dari sebuah alamat internal RAM ke sebuah alamat internal RAM juga.
Contoh : MOV 22H,20H
MOV 24H,21H
MOV 25H,23H
MOV 28H,26H
MOV 2AH,20H
MOV 2CH,29H
MOV 2DH,2FH
MOV 2EH,21H
Erna Kumalasari Nurnawati 32 32
m. DIRECT / DATA
Pada instruksi ini akan mengisi data pada sebuah alamat internal RAM secara langsung dengan cara memasukkan data delapan bit.
Contoh : MOV 22H,#0FEH
MOV 24H,#7EH
MOV 25H,#23H
MOV 28H,#9FH
MOV 2AH,#0D5H
MOV 2CH,#0B4H
MOV 2DH,#22H
Erna Kumalasari Nurnawati 33 33
n. INDIRECT - DATA
Pada instruksi yang dipakai disini menggunakan register INDIRECT sebagai register pemrosesnya dengan diisi data secara langsung.
Contoh :
MOV @R0,#21H MOV @R1,#0C8H
Erna Kumalasari Nurnawati 34 34
o. INDIRECT - DIRECT
Pada instruksi yang dipakai disini menggunakan register INDIRECT sebagai register pemrosesnya dengan diisi data dari alamat internal RAM.
Contoh :
MOV @R0,21H MOV @R1,25H