Transcript Contoh

PENGANTAR
OLEH :
MIKROKONTROLER
EPYK SUNARNO
1
BAB I. PENDAHULUAN
1.1. Perbedaan MIKROPROSESSOR dan
MIKROKONTROLLER
======================================
MIKROPROSESSOR
Adalah sebuah single chip yang hanya
berisi
CPU ( Central Processing Unit ).
Untuk membentuk sebuah minimum sistem
mikrokomputer dari sebuah mikroprosessor
masih dibutuhkan peralatan pendukung:
RAM ( Random Acces Memory )
ROM (Read Only Memory )
2
I/O ( Unit Input / Output )
MIKROKONTROLLER
Adalah sebuah single chip yang di dalamnya sudah berisi
- CPU ( Central Processing Unit )
- RAM (Random Acces Memory)
- ROM (Read Only Memory)
- I/O (Unit Input / Output)
- Timer/Counter , Serial COM Port.
3
Data Bus (8)
CPU
RAM
ROM
I/O
Port
Address Bus (16)
Blok Diagram MIKROPROSESSOR
4
CPU
RAM
ROM
I/O Port
Serial Port
Timer/Counter
Blok Diagram MIKROKONTROLLER
5
Mikroprosessor diproduksi mulai ± th 1971
dng INTEL yang produksinya type µP
8080
Selanjutnya perkembangan µP :
•
Motorolla
6800
•
RCA
1801
•
MOS Technology
68502
•
Zilog
Z80
6
Mikrokontrller diproduksi mulai
± tahun 1976 dengan INTEL yang
produksinya type 8746 ( MCS-48)
yang di dalamnya sdh ada 1 KByte
EPROM, 64 Byte RAM, 27 I/O dan 8
bit Timer
7
Keluarga Mikrokontroler MCS-51
Type
8051
8051AH
8052AH
80C51BH
83C51FA
83C51FB
ROM
4 K Byte
4 K Byte
4 K Byte
4 K Byte
4 K Byte
4 K Byte
RAM
128 Byte
128 Byte
256 Byte
128 Byte
256 Byte
256 Byte
I/O
4 X 8 Bit
4 X 8 Bit
4 X 8 Bit
4 X 8 Bit
4 X 8 Bit
5 X 8 Bit
8
9
Deskripsi PIN pada MCS-51
No.
Pin
Nama Pin Alter
natif
20
40
GND
VCC
32 ... 39
P0.7 ….P0.0
1…8
P1.0 …. P1.7
21 … 28
P2.0 ….. P2.7
Keterangan
Ground
Power Supply
D7 . D0
A7 .. A0
Port 0 dapat berfungsi sbg I/O biasa, low
order multiplex addres/data
(Port 1) adalah port parallel 8 bit dua
arah (bidirectional) yang dapat
digunakan untuk berbagai keperluan (
general purpose ) I/O
A8 .. A15 (Port 2) Port 2 berfungsi sebagai I/o
biasa atau high order address pada saat
mengakses memory secara 16 bit
10
( MOVX @DPTR )
No.
Pin
Nama
Pin
10 … 17
Alter
natif
PORT 3
RXD
TXD
INT0
INT1
T0
T1
WR
RD
Keterangan
Adalah port paralel 8 bit dua arah yang
memiliki fungsi pengganti sebagai berikut :
10
11
12
13
14
15
16
17
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
Port Serial Input
Port Serial Output
Port External Interrupt 0
Port External Interrupt 1
Port External Timer 0 input
Port External Timer 1 input
External Data Memory Write Strobe
External Data Memory Read Strobe
9
RST
Reset akan aktif dng memberikan input
high selama 2 cycle
30
ALE
Address Latch Enable. Yang digunakan
untuk menahan alamat memory eksternal
selama pelaksanaan Instruksi.
11
No.
Pin
Nama
Pin
Alter
natif
Keterangan
29
PSEN
Adalah pin PSEN (Program Store Enable)
Yang merupakan sinyal pengontrol yang
membolehkan program memory eksternal
masuk kedalam bus selama proses
pemberian/pengambilan intruksi (fetching)
31
EA
Pada kondisi LOW pin ini akan berfungsi
sbg EA (Enable Address) yaitu
mikrokontroller akan menjalankan program
yang ada pada memory eksternal setelah
sistem di RESET
19
XTAL1
Input Oscilator
18
XTAL2
Output Oscilator
12
1.2. Sistem Bilangan
•
•
•
•
Sistem bilangan DESIMAL
Sistem bilangan BINER
Sistem bilangan OKTAL
Sistem bilangan HEKSADESIMAL
13
1.2.1. Sistem bilangan BINER
- Bilangan BINER adalah bilangan berbasis 2
- Lambang bilangannya 0 dan 1
- Sistem bilangan ini dipakai pada sistem
mikrokontroler.
- Contoh konversi bilangan DESIMAL ke
bilangan BINER
Desimal
Biner
-----------------------------------------------------------
0
1
2
3
4
5
0000
0001
0010
0011
0100
0101
Desimal
Biner
---------------------------------------------------------
6
7
8
9
10
11
0110
0111
1000
1001
1010
1011
14
1.2.2. Sistem bilangan OKTAL
- Bilangan OKTAL adalah bilangan berbasisi 8
- Lambang bilangannya 0, 1, 2, 3, 4, 5, 6 dan 7
- Contoh konversi bilangan DESIMAL ke
bilangan OKTAL
Desimal
Oktal
-----------------------------------------------------------
0
1
2
3
4
5
6
0
1
2
3
4
5
6
Desimal
Oktal
---------------------------------------------------------
7
8
9
10
11
12
13
7
10
11
12
13
14
15
15
1.2.3. Sistem bilangan HEKSADESIMAL
-
Bilangan dengan dasar 16
Lambang bilangannya :
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E dan F
-
Contoh konversi bilangan Heksadesimal ke bilangan Biner
Desimal Heksadesimal
--------------------------------------------------------------------------------
0
1
10
11
12
13
14
15
16
17
0
1
A
B
C
D
E
F
10
11
Desimal Heksadesimal
-----------------------------------------------------------------------------
18
19
20
21
22
23
24
25
26
27
12
13
14
15
16
17
18
19
1A
1B
16
BAB II.
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.
17
• 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
18
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]
19
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
20
• Simbol Khusus Assembler
Assembler telah menyediakan beberapa simbol
untuk menunjukkan register tertentu sebagai
operand.
Contoh:
A
Akumulator
R0 …. R7
Register Serbaguna
DPTR
Data Pointer Register 16 Bit
PC
Program Counter
C
Carry Flag
B
Register B
21
• 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.
22
• Pengalamatan Tak Langsung
Untuk melaksanakan pengalamatan
tak langsung digunakan simbol @
Contoh:
MOV
MOV
MOV
A,@R1
@R0,A
@R1,24H
23
• 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.
24
• Pengalamatan Tak Langsung
Contohnya penulisan data 08H pada alamat
50H hingga 57H.
Listing a.1
ORG
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
END
0H
50H,#08H
51H,#08H
52H,#08H
53H,#08H
54H,#08H
55H,#08H
56H,#08H
57H,#08H
25
• Pengalamatan Tak Langsung
Dengan digunakan sistem pengalamatan tak
langsung, dapat diubah menjadi :
Listing a.2.
ORG 0H
MOV R0,#50H
;
LOOP: MOV
@R0,#08H
INC
R0
CJNE
R0,#58H,LOOP
END
26
• 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.
27
• 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 sistem
pengalamatan tak langsung adalah :
MOV
MOV
ADD
MOVX
MOVC
@R0,A
; R0 sebagai reg. penyimpan alamat
A,@R1
; R1 sebagai reg. penyimpan alamat
A,@R0
; R0 sebagai reg. penyimpan alamat
@DPTR,A ; DPTR sebagai reg. penyimpan alamat
A,@A+DPTR
; DPTR sebagai register
penyimpan alamat
28
• 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
MOV
MOV
MOV
A,#05H
A,#45H
B,#0E4H
DPTR,#4356H
29
• 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.
30
• 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.
31
2.2. Register Pada Mikrokontroler
MCS-51
Register:
Adalah tempat menyimpan/mengolah
data sementara pada saat
mikroprosessor / mikrokontroller
bekerja.
32
Pada MCS-51 terdapat antara lain:
REGISTER 8 bit
A: Accumulator
B
R0
R1
R2
R3
R4
R5
R6
R7
REGISTER 16 bit
DPTR
PC
DPH
DPL
PC ( Program Counter )
33
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
34
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)
35
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
36
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
37
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
MOV
MOV
MOV
MOV
MOV
MOV
A,#24H
A,#7FH
A,#0FEH
A,#0F8H
A,#100
A,#255
A,#0FFH
38
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
39
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
40
f. ACCUMULATOR / DIRECT
Instruksi ini akan memindahkan data dari sebuah
alamat internal RAM ke Accumulator tanpa melalui
register lainnya.
Contoh :
MOV
MOV
MOV
MOV
MOV
MOV
MOV
A,20H
A,21H
A,22H
A,23H
A,24H
A,25H
A,2FH
41
g. DIRECT / ACCUMULATOR
Instruksi ini akan memindahkan data dari
Accumulator ke sebuah alamat internal RAM
tanpa melalui register lainnya.
Contoh :
MOV
MOV
MOV
MOV
MOV
MOV
MOV
20H,A
21H,A
22H,A
23H,A
24H,A
25H,A
2FH,A
42
h. ACCUMULATOR / INDIRECT
Type instruksi ini hanya dapat menggunakan
register R0 dan R1 sebagai pointer
Contoh :
MOV
MOV
A,@R0
A,@R1
i. INDIRECT / ACCUMULATOR
Type instruksi ini hanya dapat menggunakan
register R0 dan R1 sebagai pointer
Contoh :
MOV
MOV
@R0,A
@R1,A
43
j. REGISTER / DIRECT
Instruksi ini akan memindahkan data dari sebuah
alamat internal RAM ke Register-register yang
berada di Mikrokontroller.
Contoh :
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
R0,20H
R1,21H
R2,22H
R3,23H
R4,24H
R5,25H
R6,29H
R7,2FH
44
k. DIRECT / REGISTER
Instruksi ini akan memindahkan data dari sebuah
Register ke sebuah alamat internal RAM yang
berada di Mikrokontroller.
Contoh :
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
22H,R0
24H,R1
25H,R2
28H,R3
2AH,R4
2CH,R5
2DH,R6
2EH,R7
45
l. DIRECT / DIRECT
Instruksi ini akan memindahkan data dari sebuah
alamat internal RAM ke sebuah alamat internal
RAM juga.
Contoh :
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
22H,20H
24H,21H
25H,23H
28H,26H
2AH,20H
2CH,29H
2DH,2FH
2EH,21H
46
m. DIRECT / DATA
Pada instruksi ini akan mengisi data pada sebuah
alamat internal RAM secara langsung dengan cara
memasukkan data delapan bit.
Contoh :
MOV
MOV
MOV
MOV
MOV
MOV
MOV
22H,#0FEH
24H,#7EH
25H,#23H
28H,#9FH
2AH,#0D5H
2CH,#0B4H
2DH,#22H
47
n. INDIRECT - DATA
Pada instruksi yang dipakai disini menggunakan
register INDIRECT sebagai register pemrosesnya
dengan diisi data secara langsung.
Contoh :
MOV
MOV
@R0,#21H
@R1,#0C8H
48
o. INDIRECT - DIRECT
Pada instruksi yang dipakai disini menggunakan
register INDIRECT sebagai register pemrosesnya
dengan diisi data dari alamat internal RAM.
Contoh :
MOV
MOV
@R0,21H
@R1,25H
49