Anda di halaman 1dari 50

INSTRUKSI PADA MIKRO AT89XX

DIKELOMPOKKAN MENJADI
5 MENURUT FUNGSI
1. TRANSFER DATA
2. ARITMATIKA
3. LOGIKA & MANIPULASI BIT
4. PERCABANGAN
5. STACK, I/O & KONTROL

1
TRANSFER DATA

Fungsinya untuk menyalin data pada suatu


lokasi memori (sumber) ke lokasi memori
tertentu (tujuan), tanpa terjadi perubahan isi
data dari sumber.

Transfer Data :
Register  Register Register  Memori
Memori  Memori Memori  Register

2
TRANSFER DATA

Beberapa Instruksi Transfer Data :


MOV
MOVX
PUSH
POP,dll

3
ARITMATIKA

Instruksi ini memiliki fungsi untuk proses


aritmatika yang meliputi :
penjumlahan, pengurangan, Tambah Satu
(Increment), Kurang Satu (Decrement),
perkalian dan pembagian.

4
ARITMATIKA

Beberapa Instruksi Aritmatika :


ADD INC
SUBB DEC
MUL DIV,dll

5
LOGIKA & MANIPULASI BIT

Instruksi ini sangat berhubungan dengan


operasi – operasi gerbang logika dan
manipulasi bit pada data - data.

Untuk gerbang logika seperti gerbang AND,


OR, EX-OR.
Untuk manipulasi seperti pergeseran data,
membuat high (setb), membuat low (clear).

6
LOGIKA & MANIPULASI BIT

Beberapa Instruksi Logika & Manipulasi Bit :


ANL XRL
ORL CLR
CPL SETB,dll

7
PERCABANGAN

Instruksi ini akan mengakibatkan perubahan


pada urutan normal pelaksanaan program
(bercabang ke suatu alamat tertentu).

Dibedakan 2 Jenis :
1.Percabangan bersyarat
2.Percabangan tanpa syarat

8
PERCABANGAN….
BERSYARAT

Perubahan urutan pelaksanaan program yang


terjadi jika telah memenuhi syarat yang
diinginkan.

Syarat yang mengakibatkan perubahan


urutan program bisa berupa data dan bisa
berupa kondisi dari perangkat I/O.

9
PERCABANGAN….
TANPA SYARAT

Perubahan urutan pelaksanaan program yang


terjadi karena instruksi yang diberikan.

Percabangan tanpa syarat ini biasanya


dinamakan dengan program subroutine.

10
PERCABANGAN

Beberapa Instruksi Percabangan :


JB (bersyarat)
JNB (bersyarat)
CJNE (bersyarat)
ACALL (tidak bersyarat)

11
STACK, I/O dan KONTROL

Instruksi Stack
Bertujuan untuk mengatur penggunaan dari
stack.
Instruksi I/O
Untuk membaca atau menuliskan data ke
port I/O.
Instruksi Kontrol
Untuk proses pengontrolan interface
12
STACK, I/O dan KONTROL

Beberapa Instruksi Logika & Manipulasi Bit :


ANL XRL
ORL CLR
CPL SETB,dll

13
TEKNIK PENGALAMATAN

MIKROPROSESSOR MEMILIKI
BEBERAPA TEKNIK PENGALAMATAN
1.Pengalamatan Register
2.Pengalamatan Immediate
3.Pengalamatan Langsung (Direct)
4.Pengalamatan Register Tak Langsung
5.Pengalamatan Basis-Plus-Indeks
6.Pengalamatan Register Relatif
7.Pengalamatan Basis Relatif-Plus-Indeks
8.Pengalamatan Indeks Terskala 14
PENGALAMATAN
TIDAK LANGSUNG

15
PENGALAMATAN
TIDAK LANGSUNG

16
PENGALAMATAN
TIDAK LANGSUNG

17
PENGALAMATAN
TIDAK LANGSUNG

18
PENGALAMATAN
TIDAK LANGSUNG

19
PENGALAMATAN
TIDAK LANGSUNG

20
PENGALAMATAN
TIDAK LANGSUNG

21
PENGALAMATAN
TIDAK LANGSUNG

22
PENGALAMATAN
TIDAK LANGSUNG

23
PENGALAMATAN
TIDAK LANGSUNG

24
PENGALAMATAN
TIDAK LANGSUNG

25
PENGALAMATAN
TIDAK LANGSUNG

26
TEKNIK PENGALAMATAN

MIKROKONTROLLER MEMILIKI
BEBERAPA TEKNIK PENGALAMATAN

1.Pengalamatan Langsung

2.Pengalamatan Tidak Langsung

3.Pengalamatan Bit
27
PENGALAMATAN LANGSUNG

TERBAGI DALAM :

1.Konstanta / Segera (#)


2.Register (R0 s/d R7)
3.Alamat Memori (alamat RAM)
4.Input / Output Mikro (P0 s/d P3)

28
PENGALAMATAN….
LANGSUNG

Contoh :
MOV A,#30h (konstanta)
MOV A,7Fh (alamat memori)
MOV A,R7 (register)
MOV A,P3 (input/output)

29
PENGALAMATAN
TIDAK LANGSUNG

Teknik pengalamatan ini tidak langsung


memasukkan nilai ke alamat tujuan, tetapi
menuju ke sebuah register yang berisi lokasi
alamat yang akan diambil nilainya.
Teknik ini menggunakan register indeks
(R0 & R1) untuk proses pengalamatannya.
Pengalamatan tidak langsung menggunakan
simbol “@” sebagai kode perintahnya.

30
PENGALAMATAN….
TIDAK LANGSUNG

Contoh :
MOV A,@R0
ADD A,@R1
MOV @R0,A

31
PENGALAMATAN BIT

Teknik pengalamatan bit adalah teknik


memindahkan atau mengambil data secara
bit per bit.
Untuk melakukan pengalamatan bit
dengan menggunakan simbol “titik” pada
kode perintahnya.
Pengalamatan bit dapat dilakukan pada
RAM internal alamat 20h s/d 2Fh, Port
dan pada ACC.

32
PENGALAMATAN BIT

Contoh :
Setb 21h.0 (alamat RAM)
Clr P1.2 (port)
Clr A.3 (ACC)

33
LATIHAN
Diketahui isi dari :
1) ACC = A5h, Register B = (2 Digit
NPM anda). Jika data ACC di EX-OR
kan dengan Register B. Berapa isi dari
Akumulator.
2) ACC = 12h, R0 = 35h dan isi alamat
memori internal dari 34h, 35h, 36h dan
37h adalah 91h, 73h, 65h dan 12h.
Berapa isi dari ACC jika perintah berikut
di execute: inc R0
mov A,@R0
34
Memori Pada Mikrokontroller

Random Acces Memory (RAM)


Memori Data = Baca / Tulis

Flash Memory
Memori Program = Baca

Eeprom
Memori Data / Program = Permanen

35
Kapasitas Memori Mikrokontroller Seri MCS51
Flash Memory EEPROM

Type RAM

4 Kbyte No

AT89C51/ AT89S51 8 X 128 BYTE

8 Kbyte No

AT89C52/ AT89S52 8 X 256 BYTE

20 Kbyte No

AT89C55 8 X 256 BYTE

12 Kbyte No

AT89S53 8 X 256 BYTE

8 Kbyte 2 Kbyte

AT89S8252 8 X 256 BYTE

36
CODE DIRECTIVE MCS-51
Assembly
Keterangan
Directive
EQU Pendefinisian konstanta
DB Pendefinisian data dengan ukuran satuan 1 byte
DW Pendefinisian data dengan ukuran satuan 1 word
DBIT Pendefinisian data dengan ukuran satuan 1 bit
DS Pemesanan tempat penyimpanan data di RAM
ORG Inisialisasi alamat mulai program
END Penanda akhir program
CSEG Penanda penempatan di code segment
XSEG Penanda penempatan di external data segment
DSEG Penanda penempatan di internal direct data segment
ISEG Penanda penempatan di internal indirect data segment
BSEG Penanda penempatan di bit data segment
CODE Penanda mulai pendefinisian program
XDATA Pendefinisian external data
DATA Pendefinisian internal direct data
IDATA Pendefinisian internal indirect data
BIT Pendefinisian data bit
#INCLUDE Mengikutsertakan file program lain
DAFTAR INSTRUKSI MCS-51
Instruksi Keterangan Singkatan
ACALL Absolute Call
ADD Add
ADDC Add with Carry
AJMP Absolute Jump
ANL AND Logic
CJNE Compare and Jump if Not Equal
CLR Clear
CPL Complement
DA Decimal Adjust
DEC Decrement
DIV Divide
DJNZ Decrement and Jump if Not Zero
INC Increment
JB Jump if Bit Set
JBC Jump if Bit Set and Clear Bit
JC Jump if Carry Set
JMP Jump to Address
Instruksi Keterangan Singkatan
JNB Jump if Not Bit Set
JNC Jump if Carry Not Set
JNZ Jump if Accumulator Not Zero
JZ Jump if Accumulator Zero
LCALL Long Call
LJMP Long Jump
MOV Move from Memory
MOVC Move from Code Memory
MOVX Move from Extended Memory
MUL Multiply
NOP No Operation
ORL OR Logic
POP Pop Value From Stack
PUSH Push Value Onto Stack
RET Return From Subroutine
RETI Return From Interrupt
RL Rotate Left
RLC Rotate Left through Carry
RR Rotate Right
RRC Rotate Right through Carry
SETB Set Bit
SJMP Short Jump
INTERUPSI PADA SERI AT89XX
Interupsi adalah Mekanisme penghentian atau pengalihan
program untuk menjalankan routine interupsi.

Interupsi Pada Mikrokontroller


 Interupsi Eksternal (INT 0 dan INT 1)
 Interupsi Timer (T0 dan T1)
 Interupsi Serial

40
FORMAT PROGRAM BAHASA
ASSEMBLY
Program Bahasa Assembly Berisikan :

 Instruksi – Instruksi Mesin.

 Pengarah Assembler (Mnemonik)

 Kontrol Assembler

 Komentar

41
Membuat file assembly baru
Susunan program assembly
Simpan file assembly
Compile program assembly
Menjalankan program simulasi
Memberhentikan dan mengedit
program
CONTOH PROGRAM OUTPUT
Program membuat 1 bit LED berkedip
#include <sfr51.inc>
Org 00h
Start:
Setb P2.0
Acall Two_Seconds_Delay Program membuat 2 kelompok LED berkedip
Clr P2.0 #include <sfr51.inc>
Acall Two_Seconds_Delay Org 00h
Ajmp Start Start:
#include <Delay.asm> Mov P2,#00001111b
End Acall Two_Seconds_Delay
Mov P2,#11110000b
Acall Two_Seconds_Delay
Program lampu LED berjalan Ajmp Start
#include <sfr51.inc> #include <Delay.asm>
Org 00h End
Start:
Mov A,#01111111b
Loop:
Mov P2,A
RL A
Acall Long_Delay
Ajmp Loop
#include <Delay.asm>
End
CONTOH PROGRAM INPUT
Program membaca input secara 1 Bit
#include <sfr51.inc>
Org 00h
Start:
Setb P2.0
Loop: Jb P3.0,Start
Clr P2.0 Program membaca input secara 1 Byte
Ajmp Loop #include <sfr51.inc>
End Org 00h
Start:
Program ON/OFF dengan 1 Tombol Mov P2,P3
#include <sfr51.inc> Ajmp Start
Org 00h End
Start:
Jb P3.0,$
Clr P2.0
Jnb P3.0,$
Acall Long_Delay
Jb P3.0,$
Setb P3.0
Jnb P3.0,$
Acall Long_Delay
Ajmp Start
#include <Delay.asm>
End
PROGRAM PROCEDURE DELAY
Untuk membuat program penundaan waktu dapat memanfaatkan pengurangan
nilai sebuah register, kita ketahui bahwa untuk 1 step program (siklus mesin) yang
dilakukan mikrokontroller adalah (Nilai Kristal/12Mhz) sehingga jika kita
menggunakan nilai kristal 11,0592Mhz maka untuk satu siklus mesin
membutuhkan waktu 0.9216 uS.
;----------------------------------------------------------------------------
Procedure penundaan waktu selama 255us x 255us
;----------------------------------------------------------------------------
Long_Delay:
Mov R7,#0FFh
Long_Delay_1:
Acall Delay
Djnz R7,Long_Delay_1
Ret
Delay:
Mov R6,#0FFh
Djnz R6,$
Ret

Anda mungkin juga menyukai