Anda di halaman 1dari 14

PRAKTKUM SENSOR DAN SISTEM MIKROPROSESOR

PEMROGRAMAN MIKROKONTROLER MCS 51


Diajukan untuk memenuhi salah satu tugas mata kuliah Praktikum Sensor dan Sistem
Mikroprosesor yang diampu oleh
Drs. Yoyo Somantri.S,T,.M.pd

Disusun oleh:

Hilal Ismail 1700941


Enjang Romadhoni 1704861

PROGRAM STUDI PENDIDIKAN TEKNIK ELEKTRO


DEPARTEMEN PENDIDIKAN TEKNIK ELEKTRO
FAKULTAS PENDIDIKAN TEKNOLOGI DAN KEJURUAN
UNIVERSITAS PENDIDIKAN INDONESIA
BANDUNG
2020
A. Judul Praktikum
PEMROGRAMAN MIKROKONTROLER MCS 51
B. Tujuan Praktikum

1. Mahasiswa dapat memahami dalam penggunaan trainer mikrokontroller MCS 51


2. Mahasiswa dapat memahami prinsip trainer mikrokontroller MCS 51
3. Mahasiswa dapat lebih memahami bahasa pemograman mikrokontroller
C. Kajian Pustaka

Intel MCS-51 (biasa disebut 8051) adalah seri mikrokontroler chip tunggal (MCU)
yang dikembangkan oleh Intel pada tahun 1980 untuk digunakan dalam sistem embedded.
Arsitek set instruksi Intel MCS-51 adalah John H. Wharton. [ Versi asli Intel populer di
tahun 1980-an dan awal 1990-an dan turunan yang kompatibel dengan biner tetap populer
hingga saat ini. Ini adalah contoh komputer set instruksi yang kompleks, dan memiliki ruang
memori terpisah untuk instruksi dan data program.
Keluarga asli MCS-51 Intel dikembangkan menggunakan teknologi N-type metal-
oxide-semiconductor (NMOS) seperti pendahulunya Intel MCS-48, tetapi versi yang lebih
baru, diidentifikasi dengan huruf C dalam namanya (misalnya, 80C51) menggunakan logam
pelengkap– teknologi oksida-semikonduktor (CMOS) dan mengonsumsi daya lebih kecil
dari pendahulunya NMOS. Ini membuatnya lebih cocok untuk perangkat bertenaga baterai.
Arsitektur 8051 menyediakan banyak fungsi (central processing unit (CPU), memori
akses acak (RAM), memori hanya baca (ROM), port input / output (I / O), port serial,
kontrol interupsi , timer ) dalam satu paket :
 Unit logika aritmatika (ALU) 8-bit dan akumulator , register 8-bit (satu register 16-
bit dengan instruksi pemindahan khusus), bus data 8-bit dan bus alamat 2 × 16-bit,
penghitung program , penunjuk data , dan terkait 8/11/16-bit operasi; oleh karena itu
terutama merupakan mikrokontroler 8-bit
 Prosesor Boolean dengan 17 instruksi, akumulator 1-bit, 32 register (4 bit-
addressable 8-bit) dan hingga 144 variabel RAM khusus 1-addressable (18 bit-
addressable 8-bit)
 Lipat gandakan , bagi dan bandingkan instruksi
 4 bank register yang dapat dialihkan dengan masing-masing 8 register ( memori
dipetakan )
 Interupsi cepat dengan switching bank register opsional
 Interupsi dan utas dengan prioritas yang dapat dipilih
 RAM on-chip (IRAM) 128 atau 256 byte
 Bus alamat ganda 16-bit; dapat mengakses 2 × 2 16 lokasi memori: 64 KB (65.536
lokasi) masing-masing dari ROM (PMEM) dan RAM eksternal (XRAM)
 On-chip ROM (tidak termasuk pada varian 803x)
 Empat 8- bit port input / output dua arah, bit addressable
 UART ( port serial )
 Dua penghitung / timer 16-bit
 Mode hemat daya (pada beberapa turunan)

D. Alat dan Bahan

1. Trainer Mikrokontroler MCS 51 kit


2. Keyboard
3. Jobsheet
E. Langkah-langkah

1. Berdoa terlebih dahulu sebelum memulai praktikum


2. Menggunakan pakian praktikum dan menggunakan sepatu
3. Menyiapkan alat dan bahan yang akan digunakan.
4. Membaca intruksi atau perintah yang akan dikerjakan.

F. Program
1. Program
Program : Led Flip-Flop
Deskripsi : Led menyala kedap kedip
Hardwere : P2-X1 atau P2-X2

Flow Chart
Line Mnemonik Desktipsi
Number
001 AWAL :
002 MOV P2,#0FFH Pindahkan data 0FFH ke P2
003 ACALL DELAY Panggil delay
004 MOV P2,#0 Pindahkan data 0 ke P2
005 ACALL DELAY Panggil delay
006 SJMP AWAL Lompat ke label AWAL
007 DELAY : Label
008 MOV R0,#7 Pindahkan data 7 ke R0
009 DEL1 : Label
010 MOV R1,#255 Pindahkan data 255 ke R1
011 DEL2 : Label
012 MOV R2,#255 Pindahkan data 255 ke R2
013 DEL3 : Label
014 DJNZ R2,DEL3 Kurangi R2 jika belum 0 lompat ke DEL 3
015 DJNZ R1,DEL2 Kurangi R1 jika belum 0 lompat ke DEL 2
016 DJNZ R0,DEL2 Kurangi R0 jika belum 0 lompat ke DEL2
017 RET Kembali ke program utama

2.Program
Program : Led Ping-Pong
Deskripsi : Led menyala bolak-balik
Hardwere : P2-X1 atau P2-X2

Flow Chart
Line Mnemonik Deskripsi
Number
001 MOV A,#0FFH Masukan data 0FFH ke Register A/ aktuator
002
003 KIRI : Label
004 MOV P1,A Masukan data dari Register A ke P1
005 ACALL DELAY Panggil Delay
006 RL A Untuk merotasikan bit A ke label KIRI
007 CJNE A,#7FH, Bandingkan data pada 7FH dengan Register
KIRI A, bila tidak sama lompat kembali ke KIRI
008
009 KANAN : Label
010 MOV P1,A Pindahkan data pada Register A ke port P1
011 ACALL DELAY Panggil Delay
012 RR A Rotasikan Bit Akumulator ke label
KANAN
013 CJNE A,#0FEH, Bandingkan data 0FEH dengan isi Register
KANAN A, bila tidak sama lompat pendek ke label
KIRI
014 SJMP KIRI Lompat pendek ke label KIRI
015
016 DELAY : Perhitungan Delay
017 MOV R0,#07H Isi Register 0 dengan data 07H
018 DEL1 :
019 MOV R1,#0FFH Isi Register 1 dengan data 0FFH
020 DEL2 :
021 MOV R2#0FFH Isi Register 2 dengan data 0FFH
022 DEL3 :
023 DJNZ R2,DEL3 Kurangi R2 jika belum 0 lompat ke Del 3
024 DJNZ R1,DEL 2 Kurangi R1 jika belum 0 lompat ke Del 2
025 DJNZ R0,DEL 1 Kurangi R0 jika belum 0 lompat ke Del 1
026 RET Kembali ke program utama

3. Program
Program : Seven Segmen Display1
Deskripsi: Seven Segmen menampilkan angka 0 s.d 9
Hardwere : P2-X1, P2-X2
Flow Chart
Line Mnemonik Deskripsi
Number
001 MULAI Label
002 MOV P1,#0FEH Pindahkan data 0FEH ke P1
003 MOV P2,#0C0H Pindahkan data 0C0H ke P2
004 ACALL DELAY Panggil delay
005 MOV P2,#0F9H Pindahkan data 0F9H ke P2
006 ACALL DELAY Panggil delay
007 MOV P2,#0A4H Pindahkan data 0A4H ke P2
008 ACALL DELAY Panggil delay
009 MOV P2,#0B0H Pindahkan data 0B0H ke P2
010 ACALL DELAY Panggil delay
011 MOV P2,#099H Pindahkan data 099H ke P2
012 ACALL DELAY Panggil delay
013 MOV P2,#092H Pindahkan data 092H ke P2
014 ACALL DELAY Panggil delay
015 MOV P2,#082H Pindahkan data 082H ke P2
016 ACALL DELAY Panggil delay
017 MOV P2,#0F8H Pindahkan data 0F8H ke P2
018 ACALL DELAY Panggil delay
019 MOV P2,#080H Pindahkan data 080H ke P2
020 ACALL DELAY Panggil delay
021 MOV P2,#090H Pindahkan data 090H ke P2
022 ACALL DELAY Panggil delay
023
024 SJMP MULAI Lompat pendek ke label MULAI
025
026 DELAY: Label
027 MOV R0,#07H Pindahkan data 07H ke R0
028 DEL1: Label
029 MOV R1,#0FFH Pindahkan data 0FFH ke R1
030 DEL2: Label
031 MOV R2,#0FFH Pindahkan data 0FFH ke R2
032 DEL3: Label
033 DJNZ R2,DEL3 Kurangi R2 jika belum 0 lompat ke DEL3
034 DJNZ R1,DEL2 Kurangi R1 jika belum 0 lompat ke DEL2
035 DJNZ R0,DEL1 Kurangi R0 jika belum 0 lompat ke DEL1
036 RET Kebali program utama

4. Program
Program : Seven Segmen Display2
Deskripsi : Menampilkan angka 0 s.d 9 dengan menggunakan register DPTR
Hardwere : P2-X1, P2-X2
Flow Chart
Line Mnemonik Deskripsi
Number
001 AWAL: Label
002 MOV P1,#0FEH Pindahkan data 0FEH ke P1
003 MOV R0,#10 Pindahkan data 10 ke R0
004 MOV Pindahkan ANGKA ke DPTR
DPTR,#ANGKA
005 ULANG: Label
006 CRL A Nolkan Akumulator atau Register 0
007 MOVC Menyalin bite/ konstanta bite
A,@A+DPTR
008 MOV P2,A Pindahkan isi Register A ke P2
009 ACALL DELAY Panggil delay
010 INC DPTR Penaikan DPTR dengan 1
011 DJNZ RO,ULANG Kurangi R0 dan lompat jika tidak 0 kelabel
ULANG
012 SJMP AWAL Lompat pendek ke label AWAL
013 ANGKA: Label
014 DB Data yang di isikan ke DPTR
0C0H,0FGH,0A4H
015 DB 0B0H,99H,92H Data yang di isikan ke DPTR
016 DB 82H,0F8H,80H Data yang di isikan ke DPTR
017 DB 90H Data yang di isikan ke DPTR
018 DELAY: Label
019 MOV R1,#7 Pindahkan data 7 ke Register 1
020 DEL1:
021 MOV R2,#0FFH Pindahkan data 0FFH ke Register 2
022 DEL2:
023 MOV R3,#0FFH Pindahkan data 0FFH ke Register 3
024 DEL3:
025 DJNZ R3,DEL3 Kurangi R3 jika belum 0 lompat ke DEL3
026 DJNZ R2,DEL2 Kurangi R2 jika belum 0 lompat ke DEL2
027 DJNZ R1,DEL1 Kurangi R1 jika belum 0 lompat ke DEL1
028 RET Kembali ke program utama
5. Program
Program : Push Button1
Deskripsi : LED menyala sesuai dengan tombol yang ditekan
Hardwere : P1-X2 , P2-X1, P3-Pushbutton

Flow Chart
Line Mnemonik Deskripsi
Number
001 MULAI: Label
002 MOV P1,P3 Pindahkn data pada P3 ke P1
003 SJMP MULAI Lompat pendek ke label MULAI

6. Program
Program : Push Button2
Deskripsi : Ketika saklar 0 ditekan LED menyala, ketika saklar 1 ditekan LED
padam
Hardwere : P1-X2 atau P2-X1, P3-Pushbutton
Flow Chart
Line Mnemonik Deskripsi
Number
001 AWAL: Label
002 JB P3.0,0FF Lompat ke 0FF jika P3.0 set (P3.0 = 1)
003 MOV P2,#0 Pindahkan data 0 ke P2
004 OFF: Label
005 JB P3.7,AWAL Lompat ke 0FFH jika P3.7 set (P3.7 = 1)
006 MOV P2,#0FFH Pindahkan data 0FFH pada P2
007 SJMP AWAL Lompat pendek ke label AWAL
7. Program
Program : Push Button3
Deskripsi : Saklar toggle untuk relay, Ditekan sekali ON, ditekan sakali lagi OFF
Hardwere : P0 - Relay, P3-Pushbutton

Flow Chart
Line Mnemonik Deskripsi
Number
001 AWAL: Label
002 JB P3.0,AWAL Lompat ke label AWAL jika P3.0 set (P3.0 =
1)
003 MOV C,P0.4 Pindahka data pada P0.4 ke Register C
004 CPL C Complemen 1 bit
005 MOV P0.4,C Pindahkan isi pada Register C ke P0.4
006 TUNGGU: Label
007 JNB P3.0,TUNGGU Lompat ke label TUNGGU jika P3.0 tidak
set (P3.0 = 1)
008 SJMP AWAL Lompat pendek ke label AWAL

8. Program
Program : Push Button4
Deskripsi : Men-Onkan relay setelah saklar 0 ditekan 5x, Men-OFFkan relay setelah
saklar 0 ditekan 5x. (tanpa bouncing remover)
Hardwere : P0 - Relay, P3-Pushbutton

Flow Chart
Line Mnemonik Deskripsi
Number
001 MOV R0,#0 Pindahkan data 0 ke Register 0
002 AWAL: Label
003 JB P3.0, AWAL Lompat ke awal jika P3.0 set (P3.0 = 1)
004 INC R0 Penaikan dengan 1 pada R0
005 CJNE Bandingkan data 5 ke R0 jika tidak sama
R0,#5,TUNGGU lompat ke label TUNGGU
006 MOV R0,#0 Pindahkan data 0 ke Register 0
007 MOV C,P0.4 Pindahkan data P0.4 ke Register C
008 CPL C Complemen 1 bit
009 MOV P0.4,C Pindahkan Register C ke P0.4
010 TUNGGU: Label
011 JNB P3.0,TUNGGU Lompat ke label TUNGGU jika P3.0 tidak
set (P3.0 = 0)
012 SJMP AWAL Lompat pendek ke label AWAL

9. Program
Program : Push Button 5
Deskripsi : Men-Onkan relay setelah saklar 0 ditekan 5x, Men-OFFkan relay setelah
saklar 0 ditekan 5x. Dengan bouncing remover
Hardwere : P0 - Relay, P3-Pushbutton
Flow Chart
Line Mnemonik Deskripsi
Number
001 MOV R0,#0 Pindahkan data 0 ke Register 0
002 AWAL : Label
003 JB P3.0,AWAL Lompat ke label AWAL jika P3.0 set (P3.0 =
1)
004 INC R0 Penaikan dengan 1 pada R0
005 CJNE Bandingkan data 5 dengan R0 jika tidak sama
R0,#5,TUNGGU lompat ke label TUNGGU
006 MOV R0,#0 Pindahkan data 0 ke Register 0
007 MOV C,P0.4 Pindahkan P0.4 ke Register C
008 CPL C Complemen 1 bit
009 MOV P0.4,C Pindahkan data dari Register C ke P0.4
010 TUNGGU: Label
011 ACALL DELAY Panggil delay
012 JNB P3.0,TUNGGU Lompat ke label TUNGGU jika P3.0 tidak
set (P3.0 = 0)
013 SJMP AWAL Lompat pendek ke label AWAL
014 DELAY: Label
015 MOV R1,#0FFH Pindahkan data 0FFH ke Register 1
016 DEL1: Label
017 DJNZ R1,DEL1 Kurangi R1 jika belum 0 lompat ke label
DEL1
018 RET Kembali ke program awal

10.Program
Program : Keypad 1
Deskripsi : Display menampilkan angka dari keypad yang ditekan
Hardwere : P1-X2, P2-X1, P3-Keypad
Flow Chart
Line Mnemonik Deskripsi
Number
001 MULAI: Label
002 MOV P1,#0FEH Pindahkan data 0FEH ke P1
003 MOV P3,#0EFH Pindahkan data 0EFH ke P3
004 N1: Label
005 JB P3.0,N2 Lompat ke N2 jika P3.0 set (P3.0 = 1)
006 MOV P2,#0F9H Pindahkan data 0F9H ke P2
007 N2: Label
008 JB P3.1,N3 Lompar ke N3 jika P3.1 set (P3.1 = 1)
009 MOV P2,#0A4H Pindahkan data 0A4H ke P2
010 N3: Label
011 JB P3.2,N4 Lompat ke N4 jika P3.2 set (P3.2 = 1)
012 MOV P2,#0B0H Pindahkan data 0B0H ke P2
013 N4: Label
014 MOV P3,#0DFH Pindahkan data 0DFH
015 JB P3.0,N5 Lompat ke N5 jika P3.0 set (P3.0 = 1)
016 MOV P2,#99H Pindahkan data 99H ke P2
017 N5: Label
018 JB P3.1,N6 Lompat ke N6 jika P3.1 set (P3.1 = 1)
019 MOV P2,#92H Pindahkan data 92H ke P2
020 N6: Label
021 JB P3.2,N7 Lompat ke N7 jika P3.2 set (P3.2 = 1)
022 MOV P2,#82H Pindahkan data 82H ke P2
023 N7: Label
024 MOV P3,#0BFH Pindahkan data pada 0BFH ke P3
025 JB P3.0,N8 Lompat ke N8 jika P3.0 set (P3.0 = 1)
026 MOV P2,#0F8H Pindahkan data 0F8H ke P2
027 N8: Label
028 JB P3.1,N9 Lompat ke N9 jika P3.1 set (P3.1 = 1)
029 MOV P2,#080H Pindahkan data 080H ke P2
030 N9: Label
031 JB P3.2,N0 Lompat ke N0 jika P3.2 set (P3.2 = 1)
032 MOV P2,#090H Pindahkan data 090H ke P2
033 N0: Label
034 MOV P3,#07FH Pindahkan data 07FH ke P3
035 JB P3.1,MULAI Lompat ke MULAI jika P3.1 set (P3.1 = 1)
036 MOV P2,#0C0H Pindahkan data 0C0H ke P2
037 SJMP MULAI Lompat pendek ke label MULAI

Anda mungkin juga menyukai