DIKELOMPOKKAN MENJADI
5 MENURUT FUNGSI
1. TRANSFER DATA
2. ARITMATIKA
3. LOGIKA & MANIPULASI BIT
4. PERCABANGAN
5. STACK, I/O & KONTROL
1
TRANSFER DATA
Transfer Data :
Register Register Register Memori
Memori Memori Memori Register
2
TRANSFER DATA
3
ARITMATIKA
4
ARITMATIKA
5
LOGIKA & MANIPULASI BIT
6
LOGIKA & MANIPULASI BIT
7
PERCABANGAN
Dibedakan 2 Jenis :
1.Percabangan bersyarat
2.Percabangan tanpa syarat
8
PERCABANGAN….
BERSYARAT
9
PERCABANGAN….
TANPA SYARAT
10
PERCABANGAN
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
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
3.Pengalamatan Bit
27
PENGALAMATAN LANGSUNG
TERBAGI DALAM :
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
30
PENGALAMATAN….
TIDAK LANGSUNG
Contoh :
MOV A,@R0
ADD A,@R1
MOV @R0,A
31
PENGALAMATAN BIT
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
Flash Memory
Memori Program = Baca
Eeprom
Memori Data / Program = Permanen
35
Kapasitas Memori Mikrokontroller Seri MCS51
Flash Memory EEPROM
Type RAM
4 Kbyte No
8 Kbyte No
20 Kbyte No
12 Kbyte No
8 Kbyte 2 Kbyte
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.
40
FORMAT PROGRAM BAHASA
ASSEMBLY
Program Bahasa Assembly Berisikan :
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