Morlan Pardede, MT
PEMOGRAMAN
MICROCONTROLLER AT89S51
Pengalamatan Register
Bentuk umum dari pengalamatan register adalah sebagai berikut:
MOV rd, rs rd=Register Tujuan rs=Register sumber
Contoh:
MOV A,R1 ;Copy isi register R1 ke Acc
MOV R1,A ;Copy isi Acc ke register R1
MOV P1,A ;Copy isi Acc ke Port P1 (Keluarkan isi Acc ke Port P1)
MOV A,P1 ;Copy isi port P1 ke Acc (Baca isi Port P1 ke Acc)
MOV A,R7 ;Copy isi register R7 ke Acc
Pengalamatan Langsung
Pengalamatan Langsung adalah pengalamatan dimana alamat yang diakses lansung
diberikan.
Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT
Contoh:
MOV A,35H ; Copy isi memori 35H ke Acc
MOV 45H,A ;Copykan isi Acc ke memori 45H
MOV 25H,24H ;Isikan memori 24H dicopy ke memori 25H
MOV SBUF,A ;Copykan isi Acc ke Buffer serial (Kirim data secara serial)
MOV A, SBUF ;Copy isi Buffer serial ke Acc
Contoh:
MOV @R1,#32H ;Data 32 diisikan ke memori dimana alamatnya pada R1
MOV A,@R1 ;Isi memori dimana alamatnya pada register R1 dicopy ke Acc.
MOV @R0,A ;Isi Acc dicopy ke memori dimana alamatnya terdapat pada register R0.
MOV @R1,38H ;Isi memori 38H dicopy ke memori dimana alamatnya terdapat pada R1
MOV 45H, @R0 ;Copykan isi memori dimana alamatnya terdapat pada R0 ke memori 45H.
Pengalamatan Bit
Pengalamatan bit adalah pengalamatan yang mengakses bit-bit dari memori.
Contoh:
SETB 20H.2 ; Set bit b2 dari isi memori 20H
CLR 23H.3 ; Clear bit b3 dari isi memori 23H
MOV C,25H.4 ; Copykan bit b4 dari data isi memori 25H ke bit carry
Operasi aritmatika dan logika yang dapat dilakukan pada mikrokontroler AT89S51
adalah:
Operasi Aritmatika:
- Penjumlahan, Pengurangan, Perkalian, Pembagian
Operasi Logika:
-Logika AND, Logika OR, Logika EX-OR, NOT (complement)
- Operasi Banding, Operasi Geser
Instruksi Lompat
Instruksi lompat dibagi atas lompat mutlak dan lompat bersyarat
SJMP alamat ;Lompat relative dimana jangkauan 128 ke belakang dan 127 ke depan
AJMP alamat relative ;Lompat Absolut dimana alamatnya hanya 11-bit atau daerahnya 2kbyte
LJMP alamat ;Lompat jauh alamatnya 16 bit atau daeranya 64kbyte.
JNZ alamat kode ; Lompat jika tidak nol
JNB alamat bit, alamat kode; Lompat jika bit yang diuji logika 0.
JNB 21H.5,TERUS ; Lompat ke label TERUS jika bit b5 dari isi memori 21H logika 0
DJNZ Rr, Alamat kode ;Kurangi isi Rr dan lompat ke alamat kode jika tidak nol.
DJNZ R5,LANJUT ;Kurangi isi Register R5 dan Lompat ke LANJUT jika belum 0.
CJNE A,alamat data,alamat kode ;Bandingkan Acc dengan data dan lompat jika tidak sama ke
alamat kode.
CJNE A,#05,TAMBAH ;Bandingkan isi reg. A dengan data 05 dan melompat ke label
TAMBAH jika tidak sama.
JBC alamat bit,alamat kode; Lompat jika bit yang diuji logika 1 dan logika tersebut dibuat 0.
JBC 27H.2, Lmpt ; Lompat ke label Lmpt jika bit b2 dari isi memori 27H logika 1 dan clear bit
b2 tersebut.
Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT
PERCOBAAN
-Install Program MIDE-51 pada laptop anda
-Buka Program MIDE-51 dengan langkah:
- Start, -All Program, -MIDE-51
Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT
Simpan program dengan nama LAT1.ASM pada Folder SIM_MCS_51 (Dengan membuat
folder terlebih dahulu di D atau E).
-Compile Program dengan meng-Click Build
-Perhatikan komentar yang diberikan computer pada bagian bawah
Jika tidak ada Error berarti penulisan program telah benar. Jika ada error perbaiki program dan
ulangi compile. Setelah decompile dihasilkan tiga file yang baru yaitu bentuk list hasil compile,
bentuk hexa, dan dev seperti ditunjukkan gambar berikut.
Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT
A. Simulasi Program Dengan program AVSIM-51 (Untuk Versi Dos dan Prosesor 32-bit)
Untuk mensimulasikan program kita dapat masuk ke program AVSIM51
Ambil kode mesin dari program yang akan disimulasi dengan mengetik:
B. Simulasi Program Dengan program MIDE (Untuk Prosesor 32-bit atau 64 bit)
Untuk mensimulasikan program kita dapat masuk ke program TS Control 8051 Emulator
yang terdapat pada Zip midepack02518.exe.
1. Ekstract midepack02518.exe dan install
2. Buka Program MIDE
3. Buat Program atau buka program yang akan disimulasikan
Contoh Lat1.asm
Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT
Latihan
Dengan cara yang sama simulasikan program berikut dengan terlebih dahulu member komentar
pada setiap instruksi.
Program 2.
ORG 00
AJMP START ;Lompat ke almat 30H
ORG 30H
START: MOV A,#05 ;Isikan Acc dengan data 05; A=05
MOV R5,#78h ;Isikan register R5 dengan data 78h ; R5=78
MOV R1,#30H ;Isikan register R1 dgn data 30H; R1=30H
MOV R0,#36H ;Isikan register R0 dgn data 36H; R0=36H
MOV 30H,#76h ;Isikan memori 30H dgn data 76H ; (30H)=76H
MOV 32H,A ;Copykan isi Acc ke memori 32H ; (32H)=05
MOV A,@R1 ;Copykan isi memori alamat 30H ke Acc ; A=76
MOV @R0,A ;Copykan isi Acc ke memori 36H; (36H0=76H
END
Program 3.
Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT
ORG 40H
MOV R1,#38H
MOV R0,#27H
MOV 38H,#85H
MOV 27H,#89H
MOV A,@R1
ADD A,@R0
ADDC A,#85H
INC R0
MOV @R0,A
END
Program 4.
ORG 00
AJMP START
ORG 100H
START: MOV A,#02
MOV DPTR,#0100h
MOVC A,@A+PC
db 23H, 59H, 97H, 82H
db 0A2H, 0C5H, 00, 01
END
Program 5.
ORG 00
SJMP START
ORG 30H
START: MOV 35H,#25H
MOV R0,#87H
MOV R1,#32H
MOV R2,#97H
MOV 32H,#89H
MOV A,R0
ADD A,@R1
ADDC A,35H
MOV R0,#36H
MOV @R0,A
Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT
END
Program 6.
ORG 30H
START: CLR C ;Clear Cy
MOV A,#00H ;Acc=00
ULANG: ADD A,#25H ;Acc=Acc+25H
JC SELESAI ;Selesai Jika cY=1
SJMP ULANG ;Ulangi tambahkan
SELESAI: SJMP $ ;Selesai
END
Program 7.
ORG 00
SJMP START
ORG 30H
START: MOV 20H,#05 ;Memori 20H=05
ULANG: JBC 20H.5,SELESAI;Lompat Jika bit5=1
MOV A,20H ;Geser isi memori 20h
RL A ;ke kiri
MOV 20H,A
AJMP ULANG ;Ulangi
SELESAI: SJMP $ ;Selesai
END
Program 8.
;Program Menghitung banyak data yang bit b2 logik 1
ORG 00
SJMP 30H
ORG 30H
START: MOV R2#00 ;Clear counter
MOV DPTR,#100H
MOV R1,#00H ;Set alamat awal
ULANG: MOV A,R1
MOVC A,@A+DPTR;Baca isi memori
ANL A,#04 ;Periksa bit b2
JZ LMPT ;Jika 0 lompat
INC R2 ;Jika 1 naik counter
Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT
ORG 100H
DB 98H, 76H, 39H, 0C8H
DB 0DBH, 85H
END
Program 9.
ORG 00
SJMP START
ORG 30H
MOV A,#00
START: MOV R2,#08
MOV R1,#05
ULANG: ADD A,R2
DJNZ R1, ULANG
MOV 25H,A
END
Program 10.
ORG 00
SJMP START
ORG 30H
START: MOV DPTR,#100H
MOV R1,#00
ULANG: MOV A,R1
MOVC A,@A+DPTR
MOV P3,A
CALL DELAY
INC R1
CJNE R1,#08,ULANG
SJMP START
RET
ORG 0100H
db 0DBH,97H,95H,0DBH
db 0B7H,0DBH,0B7H,5BH
END
org 00
SJMP START
ORG 30H
START: CLR P2.0 ;P2.0 Logika 0
MOV TMOD,#01 ;Set Timer 0 modus 1
ULANG: MOV TH0,#0FCH ;Set counter sehingga mencapai max=50 ms
MOV TL0,#17H
SETB TR0 ;jalankan Timer 0
JNB TF0,$ ;Tunggu hingga 50 ms
CLR TF0 ;Clear TF0 yang sudah logika 1
MOV TH0,#0FCH
MOV TL0,#17H
SETB TR0
CPL P2.0 ;Komplement P2.0
SJMP ULANG ;Ulangi
END