Top Banner
FAKULTAS TEKNOLOGI KOMUNIKASI DAN INFORMATIKA UNIVERSITAS NASIONAL
24

Pelatihan Mikrokontroler

Jun 28, 2015

Download

Documents

Slametz Pembuka

Pelatihan Mikrokontroler di Fakultas Teknologi komunikasi dan Informatika- UNAS
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Pelatihan Mikrokontroler

FAKULTAS TEKNOLOGI KOMUNIKASI DAN INFORMATIKA

UNIVERSITAS NASIONAL

Page 2: Pelatihan Mikrokontroler

SPESIFIKASI PERALATANHARDWARE

- PC Minimal P3-450 atau Laptop

- Modul Mikrokontroller (Dz - USB AVR+MCS ISP MKII) + Kabel Downloader

SOFTWARE

- Sistem Operasi Windows (98, Me atau XP SP2)

- Topview Simulator

SPESIFIKASI MIKROKONTROLLER (MCS-51)

Mikrokontroller AT89XX (MCS-51) memiliki spesifikasi sebagai berikut :

• 4 x 8 bit port I/O

• RAM internal 128 bytes

• Memiliki 2 buah Timer

• 1 buah port serial

• 5 sumber kendali interupsi

• Memiliki register-register fungsi khusus (SFR)

Susunan pin-pin dari mikrokontroller AT89XX dapat dilihat dari gambar berikut.

Konfigurasi PIN Mikrokontroller AT89XX

Page 3: Pelatihan Mikrokontroler

1. Kode Instruksi Mikrokontroller Type MCS-51 (256 Kode Instruksi)A. Pemindahan Data

Menyalin data dari suatu lokasi (sumber) ke lokasi lain (tujuan), tanpa terjadi perubahan isi data

pada lokasi sumber. Contoh : Mov

B. Aritmatika

Melaksanakan operasi aritmatika, meliputi penjumlahan, pengurangan, penambahan satu

(increment), pengurangan satu (decrement), perkalian dan pembagian.

Contoh : ADD, SUBB, INC, DEC

C. Logika dan Manipulasi Bit

Melaksanakan operasi-operasi logika pada accumulator dan manipulasi bit.

Contoh : AND, OR, CPL.

D. Percabangan

Mengubah urutan pelaksanaan program. Instruksi ini dibedakan atas percabangan bersyarat

(Contoh : CJNE) dan percabangan tanpa syarat (Contoh : ACALL).

E. Stack, I/O, dan Kontrol

Mengatur penggunaan stack, baca/tulis I/O, serta pengontrolan.

2. Teknik Pengalamatan Mikrokontrollera. Pengalamatan Langsung

Teknik pengalamatan langsung dilakukan dengan memberikan nilai ke suatu register secara

langsung. Pengalamatan langsung menggunakan simbol ”#”.

Contoh instruksi : MOV A,#01Hb. Pengalamatan Tidak Langsung

Teknik pengalamatan tidak langsung menunjuk ke sebuah register yang berisi lokasi alamat

memori yang akan digunakan dalam operasi. Lokasi yang sebenarnya tergantung pada isi register

saat instruksi dijalankan. Pengalamatan tidak langsung menggunakan simbol ”@”.

Contoh instruksi: ADD A,@R0 MOV @R0,#30H

c. Pengalamatan Bit

Teknik pengalamatan bit adalah penunjukkan alamat lokasi memori secara bit. Untuk melakukan

pengalamatan bit digunakan simbol titik ”.”.

Contoh instruksi: SETB P2.0 atau CLR P2.1

Page 4: Pelatihan Mikrokontroler

3. Perangkat Instruksi Mikrokontroller

1. ACALL (Absolute Call)

Instruksi ini digunakan untuk memanggil sub-sub rutin program

Format :

ACALL (alamat kode)

2. ANL (Logical AND Immediate Data)

Instruksi ini sebagai instruksi gerbang logika and, yang berfungsi sebagai

pengali data terhadap nilai yang ditentukan.

Format :

ANL A,#DATA

Contoh : ANL A,#0001000B

Ini berarti data acumulator akan dikalikan dengan 00010000 Biner

- Jika A bernilai 11100001 maka hasilnya adalah 00000000

- Jika A bernilai 11110001 maka hasilnya adalah 00010000

3. CJNE (Compare Indirect Address to Immediate Data)

Instrksi ini akan membandingkan data langsung dengan lokasi memori

yang dialamati oleh register R atau Akumulator A. apabila tidak sama

maka instruksi akan menuju ke alamat kode.

Format :

CJNE R,#data,Alamat kode atau CJNE A,#data,Alamat kode

4. CLR (Clear Accumulator)

Instruksi ini akan mereset data akumulator menjadi 00H.

Format :

CLR A

5. DEC (Decrement Indirect Address)

Page 5: Pelatihan Mikrokontroler

Instruksi ini akan mengurangi isi lokasi memori yang ditujukan oleh

register R dengan 1, dan hasilnya disimpan pada lokasi tersebut.

6. DJNZ (Decrement Register And Jump Id Not Zer)

Instruksi ini akan mengurangi nilai register dengan 1 dan jika hasilnya

sudah 0 maka instruksi selanjutnya akan dieksekusi. Jika belum 0 akan

menuju ke alamat kode.

Format : DJNZ Rr,Alamat Kode

7. INC (Increment Indirect Address)

Instruksi ini akan menambahkan isi memori dengan 1 dan menyimpannya

pada alamat tersebut.

Format : INC Rr

8. JB (Jump if Bit is Set)

Instruksi ini akan membaca data per satu bit, jika data tersebut adalah 1

maka akan menuju ke alamat kode dan jika 0 tidak akan menuju ke alamat

kode.

Format : JB alamat bit,alamat kode

9. JNB (Jump if Bit is Not Set)

Instruksi ini akan membaca data per satu bit, jika data tersebut adalah 0

maka akan menuju ke alamat kode dan jika 1 tidak akan menuju ke alamat

kode.

Format : JNB alamat bit,alamat kode

10. JMP (Jump to sum of Accumulator and Data Pointer)

Instruksi untuk memerintahkan loncat kesuato alamat kode tertentu.

Format : JMP alamat kode.

11. MOV

Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai

luar atau alamat lain.

Page 6: Pelatihan Mikrokontroler

Format :

- MOV a,#data (Memindahkan data ke accumulator)

- MOV R,A (Memindahkan Accumulator ke Register)

- MOV Px,Px (Memindahkan data port ke port)

12. ORL (Logical OR Immediate Data to Accumulator)

Instruksi ini sebagai instruksi Gerbang logika OR yang akan

menjumlahkan Accumulator terhadap nilai yang ditentukan.

Format : ORL A,#data

Contoh : ORL A,#0001000B

Ini berarti data acumulator dijumlahkan dengan 00010000 Biner

- Jika A bernilai 11100001 maka hasilnya adalah 11110001

- Jika A bernilai 11110001 maka hasilnya adalah 11110001

13. RET (Return from subroutine)

Intruksi untuk kembali dari suatu subrutin program ke alamat terakhir

subrutin tersebut di panggil.

Format : RET

14. SETB (Set Bit)

Instruksi untuk mengaktikan atau memberikan logika 1 pada sebuat bit

data.

Format : SETB P1.1 (memberikan logika 1 pada Port 1 bit ke 1)

15. CLRB (Clear Bit)

Instruksi untuk memberikan logika 0 pada sebuat bit data.

Format : CLR P1.1 (memberikan logika 0 pada Port 1 bit ke 1)

4. Struktur Program Assembler

$Mod51Org 00h…

Page 7: Pelatihan Mikrokontroler

………End

* Beberapa contoh aplikasi menggunakan LED (output)• Program membuat 1 bit LED berkedip

$Mod51Org 00hStart:

Setb P2.0Acall Two_Seconds_DelayClr P2.0Acall Two_Seconds_DelayAjmp Start

$Include(Tunda.asm)End

• Program membuat 2 kelompok LED berkedip$Mod51Org 00hStart:

Mov P2,#00001111bAcall Two_Seconds_DelayMov P2,#11110000bAcall Two_Seconds_DelayAjmp Start

$Include(Tunda.asm)End

• Program lampu LED berjalan$Mod51Org 00hStart:

Mov A,#01111111bLoop:

Mov P2,ARL A Acall Long_DelayAjmp Loop

$Include(Tunda.asm)End

Page 8: Pelatihan Mikrokontroler

* Beberapa contoh aplikasi menggunakan Tombol (input)• Program membaca input secara 1 Bit

$Mod51Org 00hStart:

Setb P2.0Loop:

Jb P3.0,StartClr P2.0Ajmp Loop

End• Program membaca input secara 1 Byte

$Mod51Org 00hStart:

Mov P2,P3Ajmp Start

End• Program ON/OFF dengan 1 Tombol

$Mod51Org 00hStart:

Jb P3.0,$Clr P2.0Jnb P3.0,$Acall Long_DelayJb P3.0,$Setb P3.0Jnb P3.0,$Acall Long_DelayAjmp Start

$Include(Tunda.asm)End

Page 9: Pelatihan Mikrokontroler

5. Cara membuat prosedur penundaan waktu (Delay)

Untuk membuat prosedure penundaan waktu dapat memanfaatkan pengurangan

nilai sebuah register, kita ketahui bahwa untuk 1 step program (siklus mesin) yang

dilakukan mikrokontroller adalah (Nilai Kristall / 12MHZ) sehingga jika kita

menggunakan nilai kristal 11,0592Mhz maka untuk satu siklus mesin

membutuhkan waktu 0.9216 uS.

;=====================================================

;Procedure penundaan waktu selama 255usx255us

;=====================================================

Long_Delay: ; Label Long_Delay

Mov R7,#0FFh ; Isikan Register 7 dengan data 0FFH(255)

Long_Delay_1: ; Label Long_Delay

Acall Delay ; Panggil Prosedure Delay

Djnz R7,Long_Delay_1 ;Kurangi Nilai Register7 (R7) dengan 1 jika belum sama

dengan 0 loncat ke prosedure Long_Delay_1

Ret

Delay: ; Label Delay

Mov R6,#0FFh ; Isikan Register 6 (R6) dengan data 0FFH (255)

Djnz R6,$ ; Kurangi Nilai Register6 (R6) dengan 1 jika belum

sama dengan 0 Terus kurangi. (waktu akan tertunda

selama 255 us)

Ret

Page 10: Pelatihan Mikrokontroler

6. Langkah-langkah mempergunakan software Topview Simulator

Membuka Program Notepad

Page 11: Pelatihan Mikrokontroler

Membuat file assembler baru

Menjalankan program Topview simulator

Page 12: Pelatihan Mikrokontroler

Melakukan setting Mikrokontroller

Setting memori Mikrokontroller

Page 13: Pelatihan Mikrokontroler

Tampilan Topview setelah melakukan setting Mikrokontroller

Page 14: Pelatihan Mikrokontroler

Proses mengambil file assembler

Open file assembler

Page 15: Pelatihan Mikrokontroler

Tampilan program assembler

Mengcompile program

Page 16: Pelatihan Mikrokontroler

Melakukan setting simulator

Setting Led dan 7 segment

Page 17: Pelatihan Mikrokontroler

Mengambil *.Hex program

Menampilkan simulator Led dan 7 segment

Tampilan simulator

Page 18: Pelatihan Mikrokontroler

Menjalankan simulator

Mematikan simulator

7. Program menghidupkan display 7 segment

Page 19: Pelatihan Mikrokontroler

abcdefg

DpCom

U?

7SEG

EA/VP31 X1 19

X2 18

RESET 9

P37/RD 17P36/W R 16

P32/INT0 12

P33/INT1 13

P34/T0 14

P35/T1 15

P10 1

P11 2

P12 3

P13 4

P14 5

P15 6

P16 7

P17 8

P0039

P0138

P0237

P0336

P0435

P0534

P0633

P0732

P2021

P2122

P2223

P2324

P2425

P2526

P2627

P2728

PSEN29 ALE/P30

P31/TXD 11P30/RXD 10

VC

C40

GN

D20 89C51

U?

CRYSTAL

10K1uF

VCC

VCC

VCC

VCC

10k

VCC

Rangkaian 7 Segment

Tabel Susunan pin 7segment terhadap port mikrokontroller:

Tampilan

Digit

PX.7 PX.6 PX.5 PX.4 PX.3 PX.2 PX.1 PX.0

Dot g f e d c b a Hex

0 1 1 0 0 0 0 0 0 C0H1 1 1 1 1 1 0 0 1 F9H2 1 0 1 0 0 1 0 0 A4H3 1 0 1 1 0 0 0 0 B0H4 1 0 0 1 1 0 0 1 99H5 1 0 0 1 0 0 1 0 92H6 1 0 0 0 0 0 1 0 82H7 1 1 1 1 1 0 0 0 F8H8 1 0 0 0 0 0 0 0 80H9 1 0 0 1 0 0 0 0 90H

Program menampilkan digit ”0” s/d ”9” pada modul 7 segment.$Mod51Start:Clr P0.1Loop:Mov P1,#11000000b ; Menampilkan Angka 0Acall Two_Seconds_Delay

Page 20: Pelatihan Mikrokontroler

Mov P1,#111111001b ; Menampilkan Angka 1Acall Two_Seconds_DelayMov P1,#10100100b ; Menampilkan Angka 2Acall Two_Seconds_DelayMov P1,#10110000b ; Menampilkan Angka 3Acall Two_Seconds_DelayMov P1,#10011001b ; Menampilkan Angka 4Acall Two_Seconds_DelayMov P1,#10010010b ; Menampilkan Angka 5Acall Two_Seconds_DelayMov P1,#10000010b ; Menampilkan Angka 6Acall Two_Seconds_DelayMov P1,#11111000b ; Menampilkan Angka 7Acall Two_Seconds_DelayMov P1,#10000000b ; Menampilkan Angka 8Acall Two_Seconds_DelayMov P1,#10010000b ; Menampilkan Angka 9Acall Two_Seconds_DelayJmp Loop$Include(Tunda.asm)End

Program menampilkan digit dengan mode scaning.

Page 21: Pelatihan Mikrokontroler

abcdefg

DpCom

U?

7SEG

EA/VP31 X1 19

X2 18

RESET 9

P37/RD 17P36/W R 16

P32/INT0 12

P33/INT1 13

P34/T0 14

P35/T1 15

P10 1

P11 2

P12 3

P13 4

P14 5

P15 6

P16 7

P17 8

P0039

P0138

P0237

P0336

P0435

P0534

P0633

P0732

P2021

P2122

P2223

P2324

P2425

P2526

P2627

P2728

PSEN29 ALE/P30

P31/TXD 11P30/RXD 10

VCC

40G

ND

20 89C51

11,059200

10K1uF

VCC

VCC

VCC

VCC

abcdefg

DpCom

U?

7SEG

VCC

abcdefg

DpCom

U?

7SEG

VCC

abcdefg

DpCom

U?

7SEG

VCC

abcdefg

DpCom

U?

7SEG

VCC

abcdefg

DpCom

U?

7SEG

VCC

abcdefg

DpCom

U?

7SEG

VCC

abcdefg

DpCom

U?

7SEG

VCC

4k7

P00

4k7

P01

4k7

P02

4k7

P03

4k7

P04

4k7P05

4k7

P06

4k7

P07

P01P02P03P04P05P06P07

P00

33p33p

Apa itu Scaning Mode?

Scaning mode merupakan sistem pengiriman data kepada beberapa alamat secara bergantian.

Pada modul tujuh-51 sistem scaning dimanfatkan untuk mengirimkan data kepada 8 buah sevent

segment.

Dengan mengatur penundaan waktu pengiriman data yang pas, maka akan menimbulkan efek

seolah-olah sevent segmen aktif dalam waktu yang bersamaan.

Bagaimana caranya?

Untuk menampilkan angka 123 pada segmen 0-2 prosesnya adalah sebagai berikut:

kirim data 1 ke seven segment dan aktifkan common segment 1

tunda waktu

kirim data 2 ke seven segment dan aktifkan common segment 2

tunda waktu

kirim data 3 ke seven segment dan aktifkan common segment 3

tunda waktu

langkah tersebut diatas harus likakukan terus dan berulang.

Page 22: Pelatihan Mikrokontroler

Program Menampilkan angka 1,2,3,4 pada display scaning

$Mod51

Start:

Loop:

Mov P0,#11111110b ;Mengaktifkan Common display 1

Mov P1,#0F9h ;Menampilkan Angka 1

Acall Delay

Mov P0,#11111101b ;Mengaktifkan Common display 2

Mov P1,#0A4h ;Menampilkan Angka 2

Acall Delay

Mov P0,#11111011b ;Mengaktifkan Common display 3

Mov P1,#0B0h ;Menampilkan Angka 3

Acall Delay

Mov P0,#11110111b ;Mengaktifkan Common display 4

Mov P1,#99h ;Menampilkan Angka 4

Acall Delay

Jmp Loop

$Include(Tunda.asm)End

Page 23: Pelatihan Mikrokontroler

Lampiran

Langkah membuat program

Kapasitas memori Mikro type AT89xx

Page 24: Pelatihan Mikrokontroler

File Tunda.asm berisi ?

;--- SUBROUTINE PROGRAM DELAY ---

Two_Seconds_Delay:

Mov R5,#0Ah ;PINDAHKAN DATA 0Ah KE REGISTER 5

Two_Seconds_Delay_1:

Acall Long_Delay ;PANGGIL SUB RUTIN LONG DELAY

Djnz R5,Two_Seconds_Delay_1 ;KURANGI DATA R5 DENGAN 1,JIKA HASILNYA TIDAK "0" LOMPAT KE SUB RUTIN TWO SECONDS DELAY 1

Ret ;KEMBALI KE YANG "ACALL" SUB RUTIN TWO SECONDS DELAY

Long_Delay:

Mov R7,#0FFh ;PINDAHKAN DATA 0FFh KE REGISTER 7

Long_Delay_1:

Acall Delay ;PANGGIL SUB RUTIN DELAY

Djnz R7,Long_Delay_1 ;KURANGI DATA R7 DENGAN 1,JIKA HASILNYA TIDAK "0" LOMPAT KE SUB RUTIN LONG DELAY 1

Ret ;KEMBALI KE YANG "ACALL" SUB RUTIN LONG DELAY

Delay:

Mov R6,#0FFh ;PINDAHKAN DATA 0FFh KE REGISTER 6

Djnz R6,$ ;KURANGI DATA R6 DENGAN 1,JIKA HASILNYA TIDAK "0" LOOPING DITEMPAT

Ret ;KEMBALI KE YANG "ACALL" DELAY