49
1 OLEH : EPYK SUNARNO JURUSAN TEKNIK ELEKTRO INDUSTRI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA 2007 B A H A S A A S S E M B L Y Untuk Semester : 3 Sifat : Wajib Jam/Minggu : 3 Jam

OLEH : EPYK SUNARNO

Embed Size (px)

DESCRIPTION

B A H A S A A S S E M B L Y Untuk Semester : 3 Sifat : Wajib Jam/Minggu : 3 Jam. OLEH : EPYK SUNARNO. JURUSAN TEKNIK ELEKTRO INDUSTRI POLITEKNIK ELEKTRONIKA NEGERI SURABAYA INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA 2007. BAB I. PENDAHULUAN - PowerPoint PPT Presentation

Citation preview

1

OLEH :

EPYK SUNARNO

JURUSAN TEKNIK ELEKTRO INDUSTRIPOLITEKNIK ELEKTRONIKA NEGERI SURABAYA

INSTITUT TEKNOLOGI SEPULUH NOPEMBER SURABAYA

2007

B A H A S A A S S E M B L Y

Untuk Semester : 3 Sifat : Wajib

Jam/Minggu : 3 Jam

2

BAB I. PENDAHULUAN1.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 )I/O ( Unit Input / Output )

3

MIKROKONTROLLER

Adalah sebuah single chip yang di dalam-nya sudah berisi

- CPU ( Central Processing Unit )

- RAM (Random Acces Memory)

- ROM (Read Only Memory)

- I/O (Unit Input / Output)

- Timer/Counter , Serial COM Port.

4

Data Bus (8)

Address Bus (16)

Blok Diagram MIKROPROSESSOR

CPU RAM ROM I/OPort

5

Blok Diagram MIKROKONTROLLER

CPURAMROM

I/O PortSerial PortTimer/Counter

6

Mikroprosessor diproduksi mulai ± th 1971 dng INTEL yang produksinya type µP 8080

Selanjutnya perkembangan µP :

• Motorolla 6800

• RCA 1801

• MOS Technology 68502

• Zilog Z80

7

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

8

Type ROM RAM I/O

8051

8051AH

8052AH

80C51BH

83C51FA

83C51FB

4 K Byte

4 K Byte

4 K Byte

4 K Byte

4 K Byte

4 K Byte

128 Byte

128 Byte

256 Byte

128 Byte

256 Byte

256 Byte

4 X 8 Bit

4 X 8 Bit

4 X 8 Bit

4 X 8 Bit

4 X 8 Bit

5 X 8 Bit

Keluarga Mikrokontroler MCS-51

9

10

Deskripsi PIN pada MCS-51

No. Pin

Nama Pin Alter

natif

Keterangan

20 GND Ground

40 VCC Power Supply

32 ... 39 P0.7 ….P0.0 D7 . D0

A7 .. A0

Port 0 dapat berfungsi sbg I/O biasa, low order multiplex addres/data

1 … 8 P1.0 …. P1.7 (Port 1) adalah port parallel 8 bit dua arah (bidirectional) yang dapat digunakan untuk berbagai keperluan ( general purpose ) I/O

21 … 28 P2.0 ….. P2.7 A8 .. A15 (Port 2) Port 2 berfungsi sebagai I/o biasa atau high order address pada saat mengakses memory secara 16 bit ( MOVX @DPTR )

11

No. Pin

Nama Pin

Alter

natif

Keterangan

10 … 17 PORT 3 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

RXD

TXD

INT0

INT1

T0

T1

WR

RD

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.

12

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

13

1.2. Sistem Bilangan

• Sistem bilangan DESIMAL

• Sistem bilangan BINER

• Sistem bilangan OKTAL

• Sistem bilangan HEKSADESIMAL

14

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 Desimal Biner----------------------------------------------------------- ---------------------------------------------------------

0 0000 6 01101 0001 7 01112 0010 8 10003 0011 9 10014 0100 10 10105 0101 11 1011

15

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 Desimal Oktal----------------------------------------------------------- ---------------------------------------------------------

0 0 7 71 1 8 10 2 2 9 113 3 10 124 4 11 135 5 12 146 6 13 15

16

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 Desimal Heksadesimal-------------------------------------------------------------------------------- -----------------------------------------------------------------------------

0 0 18 121 1 19 13

10 A 20 14 11 B 21 15 12 C 22 16 13 D 23 17 14 E 24 18 15 F 25 19 16 10 26 1A 17 11 27 1B

17

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.

18

• 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

19

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]

20

Jumlah operand tergantung pada type mnemonic. Semua operand dapat dibagi dalam 6 kelompok, yaitu:

1. Simbol Khusus Assembler2. Pengalamatan Tak Langsung3. Pengalamatan Langsung (Immediate

Data)4. Pengalamatan Data5. Pengalamatan Bit6. Pengalamatan Kode7. Operator Assembler

21

• 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

22

• Pengalamatan Tak LangsungOperand 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.

23

• Pengalamatan Tak Langsung

Untuk melaksanakan pengalamatan tak langsung digunakan simbol @

Contoh:

MOV A,@R1

MOV @R0,A

MOV @R1,24H

24

• 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.

25

• 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

26

• 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

27

• 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.

28

• 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

29

• 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

30

• 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.

31

• Pengalamatan DataProses 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.

32

2.2. Register Pada Mikrokontroler MCS-51

Register:

Adalah tempat menyimpan/mengolah data sementara pada saat mikroprosessor / mikrokontroller bekerja.

33

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 )

34

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

35

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)

36

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

37

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

38

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

39

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

40

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

41

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

42

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

43

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

44

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

45

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

46

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

47

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

48

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

49

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