Anda di halaman 1dari 17

PROYEK AKHIR SISTEM MIKROPROSESOR

KENDALI ARAH PUTAR 2 MOTOR DC BERBASIS MCS-51


MENGGUNAKAN BAHASA ASSEMBLY

Dosen Pengampu:
Hendhi Hermawan

Disusun Oleh:
Shandy Syahrizal Azhar (2 D3 EA/1103141012)

PROGRAM STUDI TEKNIK ELEKTRONIKA


DEPARTEMEN TEKNIK ELEKTRO
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
2015/2016
I. Judul
Kendali Arah Putar Dua Motor DC Berbasis MCS 51 Menggunakan Bahasa Assembly
II. Rancangan Sistem
A. Ringkasan Sistem
Pada project sistem mikroprosesor ini, berisi program yang berfungsi untuk
mengendalikan dua motor DC dengan menggunakan MCS 51 yang dirancang dengan bahasa
assembly. Untuk menghidupkan motor ini harus mengaktifkan Switch ON, kemudian untuk
memilih motor yang digunakan dapat menggunakan Switch motor yang telah disediakan.
Agar motor menyala, password yang dimasukkan pada masing masing motor harus benar.
Sedangkan arah perputaran motor juga dapat diatur dengan dua switch mode. Switch mode
juga berfungsi menyalakan led dengan ketentuan:
a. Saat posisi Switch_Mode 00 motor mati dan LED mati
b. Saat posisi Switch_Mode 01 motor berputar searah jarum jam dan LED
bergeser ke kanan
c. Saat posisi Switch_Mode 10 motor berputar berlawanan arah jarum jam dan
led bergeser ke kiri
d. Saat posisi Switch_Mode 11 motor mati dan LED nyala semua
Sistem ini menggunakan MCS 51sebagai minimum system untuk memasukkan
program. Seadngkan mode switchnya menggunakan DT 51 Trainer Board, begitu juga dengan
nyala LED nya. Output berupa motornya dihubungkan ke EMS H-Bridge 2A.

B. Blok Diagram

Gambar 1 (Blok Diagram)


III. Mapping I/O
A. Detail Koneksi Antar Modul
DT-51 Minimum Sistem DT-51 Trainer Board (A) DT-51 Trainer Board (B) Driver Motor Motor DC
VCC - - J2 pin VMot -
GND - - J2 pin MGND -
PORTA.0 (PORTA&PORTB pin 1) - Switch.0 (PORT INPUT J3 pin 3) - -
PORTA.1 (PORTA&PORTB pin 2) - Switch.0 (PORT INPUT J3 pin 3) - -
PORTA.2 (PORTA&PORTB pin 3) - Switch.0 (PORT INPUT J3 pin 3) - -
PORTA.3 (PORTA&PORTB pin 4) - Switch.0 (PORT INPUT J3 pin 3) - -
PORTA.4 (PORTA&PORTB pin 5) - Switch.0 (PORT INPUT J3 pin 3) - -
PORTA.5 (PORTA&PORTB pin 6) - Switch.0 (PORT INPUT J3 pin 3) - -
PORTA.6 (PORTA&PORTB pin 7) - Switch.0 (PORT INPUT J3 pin 3) - -
PORTA.7 (PORTA&PORTB pin 8) - Switch.0 (PORT INPUT J3 pin 3) - -
PORTB.0 (PORTA&PORTB pin 9) LED.0 (PORT OUTPUT J2 pin 3) - - -
PORTB.1 (PORTA&PORTB pin 10) LED.1 (PORTOUTPUT J2 pin 4) - - -
PORTB.2 (PORTA&PORTB pin 11) LED.2 (PORTOUTPUT J2 pin 5) - - -
PORTB.3 (PORTA&PORTB pin 12) LED.3 (PORTOUTPUT J2 pin 6) - - -
PORTB.4 (PORTA&PORTB pin 13) LED.4 (PORTOUTPUT J2 pin 7) - - -
PORTB.5 (PORTA&PORTB pin 14) LED.5 (PORTOUTPUT J2 pin 8) - - -
PORTB.6 (PORTA&PORTB pin 15) LED.6 (PORTOUTPUT J2 pin 9) - - -
PORTB.7 (PORTA&PORTB pin 16) LED.7 (PORTOUTPUT J2 pin 10) - - -
PORTC.0 (PORTC&PORT1 pin 1) - - J1 pin 1 -
PORTC.1 (PORTC&PORT1 pin 2) - - J1 pin 2 -
PORTC.2 (PORTC&PORT1 pin 3) - - J3 pin 1 -
PORTC.3 (PORTC&PORT1 pin 4) - - J3 pin 2 -
PORTC.4 (PORTC&PORT1 pin 5) - - - -
PORTC.5 (PORTC&PORT1 pin 6) - - - -
PORTC.6 (PORTC&PORT1 pin 7) - - - -
PORTC.7 (PORTC&PORT1 pin 8) - - - -
PORT1.0 (PORTC&PORT1 pin 1) Switch.0 (PORT INPUT J3 pin 3) - - -
PORT1.1 (PORTC&PORT1 pin 2) Switch.0 (PORT INPUT J3 pin 3) - - -
PORT1.2 (PORTC&PORT1 pin 3) Switch.0 (PORT INPUT J3 pin 3) - - -
PORT1.3 (PORTC&PORT1 pin 4) Switch.0 (PORT INPUT J3 pin 3) - - -
PORT1.4 (PORTC&PORT1 pin 5) Switch.0 (PORT INPUT J3 pin 3) - - -
PORT1.5 (PORTC&PORT1 pin 6) Switch.0 (PORT INPUT J3 pin 3) - - -
PORT1.6 (PORTC&PORT1 pin 7) Switch.0 (PORT INPUT J3 pin 3) - - -
PORT1.7 (PORTC&PORT1 pin 8) Switch.0 (PORT INPUT J3 pin 3) - - -
LCD pin 1 GND GND J2 Pin PGND -
LCD pin 2 5V 5V J2 Pin VCC, J2 -
Pin 4, J3 Pin 4
- - - J1 Pin 3
- - - J1 Pin 5
- - - J1 Pin 6
- - - J3 Pin 3
- - - J3 Pin 5
- - - J3 Pin 6
- - - J2 Pin OUT
M1OUT1 MOTOR 1
- - - J2 Pin OUT
M1OUT2 MOTOR 1
- - - J2 Pin OUT
M2OUT1 MOTOR 2
- - - J2 Pin OUT
M2OUT2 MOTOR 2
B. Alat dan Bahan yang Digunakan
PC yang telah terinstal M-IDE 51 dan DT-51 (1 unit)
Kabel usb to Serial (1 unit)
DT 51 Minimum System (1 unit)
Kabel Power (2 buah)
Kabel I/O (4 buah)
Kabel female header (8 buah)
DT 51 Trainer Board (2 unit)
Kabel Buaya (4 buah)
Power Supply (2 unit)
Driver motor EMS H-Bridge 2A (1 unit)
Motor DC 12 V (2 unit)
C. Gambar Rangkaian

Gambar 2 (Gambar Rangkaian)


IV. Alur Kerja Sistem
1. Sistem membaca data dari SW_ON, sistem hanya ON saat SW_ON mendapat
logika 1
2. Selanjutnya, sistem melakukan pemeriksaan pada SW_MOTOR yang akan
dicocokkan dengan SW_PASSWORD. Bila SW_MOTOR berada pada logika 0,
maka sistem hanya akan menjalankan MOTOR 1 bila SW_PASSWORD berada
pada data 0CH. Dan bila SW_MOTOR berada pada logika 1, maka sistem
hanya akan menjalankan MOTOR 2 bila SW_PASSWORD berada pada data
35H.
3. Setelah pemeriksaan SW_MOTOR dan SW_PASSWORD, maka sistem akan
melakukan pemeriksaan SW_MODE. Bila SW_MODE berisi data 00, maka
motor akan diam dan LED mati. Bila SW_MODE berisi data 01, maka motor
yang telah dipilih akan berotasi searah jarum jam (CW) dan LED berotasi ke
kanan. Bila SW_MODE berisi data 10, maka motor yang telah dipilih akan
berotasi berlawanan arah jarum jam (CCW) dan LED berotasi ke kiri. Bila
SW_MODE berisi data 11, maka motor akan berhenti dan semua LED menyala.
Ket:
Password tersebut berasal dari:
Motor 1 : 2 digit NRP terakhir = (12)16 = 0CH
Motor 2 : 2 digit NRP terakhir + 2 digit terkhir tahun masuk + angkatan ELKA
mahasiswa= (12+14+27)16 = (53)16 = 35H
Diagram Alirnya adalah sebagai berikut:

Gambar 3 (Diagram Alir Sistem)

V. Penjelasan Program
Pada program ini setiap variable digunakan sebagai penamaan, sehingga program akan
lebih mudah dipahami. Misal kita menuliskan MOV A, #DATACW.Itu artinya register A
diisikan dengan nilai DATACW, yaitu 2000H.
PORTA EQU 2000H ;input password
PORTB EQU 2001H ;LED arah motor
PORTC EQU 2002H ;input kendali
PORTCW EQU 2003H
DATACW EQU 90H
;(1001 000)

DATACW bernilai 90H. Berasal dari:


D7 D6 D5 D4 D3 D2 D1 D0
Achive 0 0 Port A Port C 0 Port B Port C
PPI (1=in High Low
0=out) Nible nibble
1 0 0 1 0 0 0 0
D7 bernilai 1 karena sebagai enable PP1
D6 dan D5 Not Use
D4 yaitu PORT A yang digunakan sebagai input password sehingga bernilai 1
D3 yaitu High Nibble dari PORT C
D2 not used
D1 yaitu PORT B karena sebagai output sehingga bernilai 0
D0 yaitu Low Nibble dari PORT C
ORG 4000H
AJMP INITPPI
ORG 4100H

Pada tahap ini dilakukan inisisalisasi setiap port yang digunakan. Inisialisasi digunakan
untuk menunjukkan fungsi port sebagai input atau output. Port yang diinisialisasi adalah
PORTA, PORTB, PORTC.
ORG 4000H berarti program dimulai pada alamat 4000H. Sehingga bagian awal
inisialisasi berada pada alamat 4000H. Sedangkan ORG 4100H berarti program utama
berada pada alamat 4100H.
Pada MOV A, #DATACW, sebelum DATACW terdapat tanda #, berarti nilai dari
DATACW dipindah ke register A. Sedangkan pada MOVX @DPTR, A, karena sebelum
DPTR terdapat tanda @, berarti nilai A dipindah ke alamat yang ditunjukkan oleh register
DPTR. Penggunaan MOVX karena pengalamatan berhubungan dengan I/O, bukan hanya
internal CPU
Opcode PUSH yang berfungsi untuk member nilai awal pada proses penampilan rotasi
LED.
INITPPI: MOV A,#DATACW
MOV DPTR,#PORTCW
MOVX @DPTR,A
MOV A,#01H
PUSH ACC

Program counter akan melompat ke alamat yang ditunjukkan label jika memenuhi syarat.
Jika PORT1 bit 0 mendapat logika high, maka PC akan menuju label MULAI, jika tidak
PC menuju ke alamat selanjutnya. Pada alamat selanjutnya jika PORT1 bit 0 mendapat
logika low, maka PC menuju label MATI.
Opcode JB berfungsi mengambil nilai 1 pada SW_ON sehingga apabila bernilai 1
program akan lompat ke label MULAI
Opcode JNB berfungsi mengambil nilai 0 pada SW_ON sehingga apabila bernilai 0
program akan lompat ke label MATI
MAIN: JB P1.0,MULAI
JNB P1.0,MATI

Opcode JB berfungsi mengambil nilai 1 pada SW_MOTOR sehingga apabila bernilai 1


program akan lompat ke label MOTOR2
Opcode JNB berfungsi mengambil nilai 0 pada SW_MOTOR sehingga apabila bernilai 0
program akan lompat ke label MOTOR1
MULAI:
JB P1.1,MOTOR2
JNB P1.1,MOTOR1

PORT A dihubungkan dengan nilai register A, saat register A tidak bernilai 0CH program
akan lompat ke label MATI
Saat bernilai 0CH, akan lompat ke label MODEMOT1
MOTOR1: MOV DPTR,#PORTA
MOVX A,@DPTR
CJNE A,#0CH, MATI
SJMP MODEMOT1

PORT A dihubungkan dengan nilai register A, saat register A tidak bernilai 35H program
akan lompat ke label MATI
Saat bernilai 35H, akan lompat ke label MODEMOT2
MOTOR2: MOV DPTR,#PORTA
MOVX A,@DPTR
CJNE A,#35H, MATI
SJMP MODEMOT2

Saat Switch bit ke dua bernilai 1 maka akan lompat ke SATU


Saat Switch bit ke dua tidak bernilai 1 maka akan lompat ke NOL
MODEMOT1: JB P1.2,SATU
SJMP NOL

Pada label SATU, Saat Switch bit ke tiga bernilai 1 maka akan lompat ke MODE11. Saat
Switch bit ke tiga tidak bernilai 1 maka akan lompat ke MODE10
Pada label NOL, Saat Switch bit ke tiga bernilai 1 maka akan lompat ke MODE01. Saat
Switch bit ke tiga tidak bernilai 1 maka akan lompat ke MODE00
SATU: JB P1.3,MODE11
SJMP MODE10
NOL: JB P1.3,MODE01
SJMP MODE00

Pada label MODE11, pada PORT B diberi nilai 0FF dari register A. Sehingga LED nyala
semua.
Pada label MODE11, pada PORT C diberi nilai 0FF dari register A. Sehingga motor 1
mati.
Kemudian program akan kembali lompat ke label MAIN untuk melakukan looping
MODE11: MOV A, #0FFH
MOV DPTR,#PORTB
MOVX @DPTR,A
MOV A,#0FFH
MOV DPTR,#PORTC
MOVX @DPTR,A
JMP MAIN

Pada label MODE10, pada PORT B diberi nilai 01H dari register A yang tadi sudah
diinisialisasi. Sehingga LED menyala pada bit 1 kemudian digeserke kiri oleh opcode
RL.
Program terdapat tunda yang dipanggil dari label DELAY
Pada label MODE01, pada PORT C diberi nilai 02 dari register A. Sehingga motor 1
berputar berlawanan arah jarum jam
Kemudian program akan kembali lompat ke label MAIN untuk melakukan looping
MODE10: POP ACC
RL A
PUSH ACC
MOV DPTR, #PORTB
MOVX @DPTR, A
CALL DELAY
CALL DELAY
MOV A,#02H
MOV DPTR,#PORTC
MOVX @DPTR,A
LJMP MAIN

Pada label MODE01, pada PORT B diberi nilai 01H dari register A yang tadi sudah
diinisialisasi. Sehingga LED menyala pada bit 1 kemudian digeser ke kanan oleh opcode
RR.
Program terdapat tunda yang dipanggil dari label DELAY
Pada label MODE01, pada PORT C diberi nilai 01H dari register A. Sehingga motor 1
berputar searah jarum jam
Kemudian program akan kembali lompat ke label MAIN untuk melakukan looping
MODE01: POP ACC
RR A
PUSH ACC
MOV DPTR, #PORTB
MOVX @DPTR, A
CALL DELAY
CALL DELAY
MOV A,#01H
MOV DPTR,#PORTC
MOVX @DPTR,A
LJMP MAIN

Pada label MODE00, pada PORT B diberi nilai 00H dari register A. Sehingga LED mati
semua.
Pada label MODE00, pada PORT C diberi nilai 00H dari register A. Sehingga motor 1
mati.
Kemudian program akan kembali lompat ke label MAIN untuk melakukan looping
MODE00: MOV A, #0000H
MOV DPTR,#PORTB
MOVX @DPTR,A
MOV A,#0000H
MOV DPTR,#PORTC
MOVX @DPTR,A

Berikut ini merukapan label dari MATI yang berisi PORT B dan PORT C diberi nilai
00H sehinngga LED dan motor mati
MATI: MOV A,#00H
MOV DPTR, #PORTB
MOVX @DPTR,A
MOV A,#00H
MOV DPTR, #PORTC
MOVX @DPTR,A
LJMP MAIN

Pada label MODEMOT2 ini programnya hampir sama dengan MODEMOT 1, yang
membedakan hanya alamat pada motor yang terhubung pada PORT C
MODEMOT2: JB P1.2,SATU1
SJMP NOL0
SATU1: JB P1.3,MOD11
SJMP MOD10
NOL0: JB P1.3,MOD01
SJMP MOD00
MOD11: MOV A, #00FFH
MOV DPTR,#PORTB
MOVX @DPTR,A
MOV A,#00FFH
MOV DPTR,#PORTC
MOVX @DPTR,A
LJMP MAIN
MOD10: POP ACC
RL A
PUSH ACC
MOV DPTR, #PORTB
MOVX @DPTR, A
CALL DELAY
CALL DELAY
MOV A,#20H
MOV DPTR,#PORTC
MOVX @DPTR,A
LJMP MAIN
MOD01: POP ACC
RR A
PUSH ACC
MOV DPTR, #PORTB
MOVX @DPTR, A
CALL DELAY
CALL DELAY
MOV A,#10H
MOV DPTR,#PORTC
MOVX @DPTR,A
LJMP MAIN
MOD00: MOV A, #0000H
MOV DPTR,#PORTB
MOVX @DPTR,A
MOV A,#0000H
MOV DPTR,#PORTC
MOVX @DPTR,A
LJMP MAIN

Karena clock MCS-51 cukup cepat, maka kita perlu program delay untuk mengamati
perubahan output program. R2 dan R3 termasuk register bank. Penggunaan label DELAY
dan Dell memungkinkan delay dilakukan lebih lama, karena susunannya yang kaskade.
DELAY: MOV R2, #0FFH
DELL: MOV R3, #0FFH
DJNZ R3, $
DJNZ R2, DELL
RET
END
VI. Lampiran
A. Dokumentasi

Gambar 4 (Gambar Rangkaian)

Gambar 5 (Kondisi motor 2 on, motor tidak


berputar, switch mode 11, sehingga led nyala
semua)

Gambar 6 (Kondisi motor 2, switch 01, led geser


kanan)

Gambar 7 (Kondisi motor 2, switch 10, led


geser kiri)
Gambar 8 (Kondisi motor 2 on, tidak berputar,
Switch mode 00, sehingga led mati)

Gambar 9 (Switch Password Motor 1= 0CH)

Gambar 10 (Switch Password Motor 2= 35H)


B. Program Keseluruhan

;Alias
PORTA EQU 2000H
PORTB EQU 2001H
PORTC EQU 2002H
PORTCW EQU 2003H
DATACW EQU 90H

ORG 4000H
AJMP INITPPI
ORG 4100H

INITPPI: MOV A,#DATACW


MOV DPTR,#PORTCW
MOVX @DPTR,A
MOV A,#01H
PUSH ACC

MAIN: JB P1.0,MULAI
MOV A, #00H
MOV DPTR,#PORTB
MOVX @DPTR,A
JNB P1.0,MATI

MULAI: JB P1.1,MOTOR2
JNB P1.1,MOTOR1

MOTOR1: MOV DPTR,#PORTA


MOVX A,@DPTR
CJNE A,#0CH, MATI
SJMP MODEMOT1

MOTOR2: MOV DPTR,#PORTA


MOVX A,@DPTR
CJNE A,#35H, MATI
SJMP MODEMOT2

MODEMOT1: JB P1.2,SATU
SJMP NOL

SATU: JB P1.3,MODE11
SJMP MODE10

NOL: JB P1.3,MODE01
SJMP MODE00

MODE11: MOV A, #0FFH


MOV DPTR,#PORTB
MOVX @DPTR,A
MOV A,#0FFH
MOV DPTR,#PORTC
MOVX @DPTR,A
JMP MAIN

MODE10: POP ACC


RL A
PUSH ACC
MOV DPTR, #PORTB
MOVX @DPTR, A
CALL DELAY
CALL DELAY
MOV A,#02H
MOV DPTR,#PORTC
MOVX @DPTR,A
LJMP MAIN

MODE01: POP ACC


RR A
PUSH ACC
MOV DPTR, #PORTB
MOVX @DPTR, A
CALL DELAY
CALL DELAY
MOV A,#01H
MOV DPTR,#PORTC
MOVX @DPTR,A
LJMP MAIN

MODE00: MOV A, #0000H


MOV DPTR,#PORTB
MOVX @DPTR,A
MOV A,#0000H
MOV DPTR,#PORTC
MOVX @DPTR,A
LJMP MAIN

MATI: MOV A,#00H


MOV DPTR, #PORTB
MOVX @DPTR,A
MOV A,#00H
MOV DPTR, #PORTC
MOVX @DPTR,A
LJMP MAIN

MODEMOT2: JB P1.2,SATU1
SJMP NOL0

SATU1: JB P1.3,MOD11
SJMP MOD10
NOL0: JB P1.3,MOD01
SJMP MOD00

MOD11: MOV A, #0FFH


MOV DPTR,#PORTB
MOVX @DPTR,A
MOV A,#0FFH
MOV DPTR,#PORTC
MOVX @DPTR,A
JMP MAIN

MOD10: POP ACC


RL A
PUSH ACC
MOV DPTR, #PORTB
MOVX @DPTR, A
CALL DELAY
CALL DELAY
MOV A,#04H
MOV DPTR,#PORTC
MOVX @DPTR,A
LJMP MAIN

MOD01: POP ACC


RR A
PUSH ACC
MOV DPTR, #PORTB
MOVX @DPTR, A
CALL DELAY
CALL DELAY
MOV A,#08H
MOV DPTR,#PORTC
MOVX @DPTR,A
LJMP MAIN

MOD00: MOV A, #0000H


MOV DPTR,#PORTB
MOVX @DPTR,A
MOV A,#0000H
MOV DPTR,#PORTC
MOVX @DPTR,A
LJMP MAIN

DELAY: MOV R2, #0FFH


DELL: MOV R3, #0FFH
DJNZ R3, $
DJNZ R2, DELL
RET
END

Anda mungkin juga menyukai