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