Anda di halaman 1dari 17

Pemograman Mikrokontroller AT89S51 by: Ir.

Morlan Pardede, MT

PEMOGRAMAN
MICROCONTROLLER AT89S51

Dari segi modus pengalamatan Mikrokontroler dibedakan atas Pengalamatan


Immediate, Pengalamatan Register, Pengalamatan Langsung, Pengalamatan Tidak langsung,
Pengalamatan Bit.

Pengalamatan Immediate (seketika)


Pengalamatan immediate adalah pengalamatan dimana data mengikuti kode instruksi,
pengalamatan ini ditandai dengan tanda “#”.
Contoh:
MOV A,#25H ; Artinya data 25H diisikan pada akumulator
MOV R1,#37H ; Artinya register R1 diisi dengan 37H
MOV 23H, #87H ; Artinya memori 23H diisi dengan data 87H

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

Pengalamatan Tidak Langsung


Pengalamatan tidak langsung adalah pengalamatan dimana alamat memori tidak langsung
diberikan tetapi melalui register. Bentuk umum pengalamatan tidak langsung ditandai dengan
“@”. Pengalamatan ini hanya melalui register R0,R1 dan register DPTR serta PC

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


Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT

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

Gambar 1. Pemilihan software MIDE-51

Gambar 2. Tampilan awal MIDE-51


- Click File, pilih New
Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT

Gambar 3. Tempat Kerja pada MIDE-51


Ketikkan Program berikut
Program 1.
ORG 00
MOV R1,#24H
MOV R2,#56H
MOV A,#34H
MOV 25H,A
MOV A,R2
MOV @R1,A
SJMP $
END
Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT

Gambar 4. Tampilan program pada MIDE-51

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

Gambar 5. Komentar hasil Comnpile

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

Gambar 6. File tambahan Hasil compile


Gambar Isi Folder SIM_MCS_51 setelah program LAT_1.asm telah dicompile
Untuk melihat program beeserta kode mesin buka file ekstension .LST, untuk melihat
hanya kode mesin buka file ekstension .HEX.

Gambar 7. Tampilan Nilai Hexa hasil Compile


Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT

Gambar 8. Bentuk List dari Hasil Compile

A. Simulasi Program Dengan program AVSIM-51 (Untuk Versi Dos dan Prosesor 32-bit)
Untuk mensimulasikan program kita dapat masuk ke program AVSIM51

Jalankan program simulasi AVSIM-51


Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT

Pilih 8031 dengan mengetik C

Ambil kode mesin dari program yang akan disimulasi dengan mengetik:

-ketik L (Load), P (Program)


-Ketik nama file yang akan disimulasikan: LAT_1.hex
Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT

Gambar 10. Tampilan awal Program Simulasi

-Simulasikan Program secara per step dengan menekan tombol F10


-Setiap penekanan tombol F8 lihat pengaruhnya pada register atau memori
-Simulasikan hingga akhir program.
-Untuk menguji kembali set isi PC pada alamat yang akan diuji ulang dengan cara menekan
tombol esc dan ubah isi PC misalnya ke alamat 0000.

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

4. Compile [ Click Build, Build]


5. Simulasikan dengan mengClick Build and Sim (Arah panah warna Hijau)

6. Jalankan program dengan menekan tombol F10


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

LMPT: INC R1 ;Naikkan alamat


CJNE R1,#04H,ULANG
SJMP $

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

DELAY: MOV R2,#03


DEL: NOP
DJNZ R2,DEL
Pemograman Mikrokontroller AT89S51 by: Ir.Morlan Pardede, MT

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

Anda mungkin juga menyukai