Ujian Kompentensi Keahlian Siswa Menengah Kejuruan 2016 Teknik Elektronika Industri
Assalamualaikum Wr.wb
Dengan mengucapkan syukur alhamdulillah atas kehadirat Allah SWT karena telah memberikan rahmat dan karunianya kepada kita semua, sehingga kita dapat menjalankan aktivitas dengan baik, dan menghasilkan hasil positif untuk jalan kehidupan kita. Shalawat berangkai salam mudah-mudahan tercurahkan kepada junjungan Nabi Besar kita Muhammad SAW yang telah menunjukkan kita dari jalan yang gelap gulita menuju jalan yang terang benderang.
Baik, blog ini ada sedikit modul tentang Ujian Kompentensi Keahlian Siswa Menengah Kejuruan 2016 Teknik Elektronika Industri.
Komponen yang digunakan ialah:
1. Mikrokontroller 89c51 1 buah
2. Dioda 1N4148 8 buah
3. Transistor BC548 4 buah
4. Push Button (Swith) 4 buah
5. Motor Stepper 1 buah
6. Resistor 10 K Ohm 4 buah
7. Resistor 22 K Ohm 4 buah
8. Capasitor Elco 10 u Farad 1 buah
9. Capasitor 33 p Farad 2 buah
10. Crystal 1 buah
11. Connector 10 Pin (ISP) 1 buah
12. Connector 2 Pin (Vcc dan Ground) 1 buah.
13. Connector 6 Pin (Output Motor Stepper).
Lalu Gambar Layout PCBnya:
Berikutnya Gambar Hasil Jadi Layout dan Gambar Jadi Rangkaiannya.
dan terakhir Bahasa Programnya:
;*******************************************************
;mendefisinikan i/o atau variable
;*******************************************************
motor equ P0 ;mengidentifikasi PO sebagai motor
SW2 equ p1.0 ;mengidentifikasi SW2 sebagai P1.0
SW3 equ p1.1 ;mengidentifikasi SW3 sebagai P1.1
SW4 equ p1.2 ;mengidentifikasi SW4 sebagai P1.2
Org 0000H
;------------------------------------------------------
;*******************************************************
;MAIN PROGRAM (pembacaan kondisi tombol)
;*******************************************************
main_prog: MOV Motor,#000H ;memindah nilai 00h ke motor (semua kutup motor dimatikan)
JNB SW2,sub_90 ;jika SW2 sama dengan 0, maka membaca atau loncat ke sub_90
JNB SW3,sub_180 ;jika SW2 sama dengan 0, maka membaca atau loncat ke sub_180
sjmp main_prog ;lompat pendek ke main_program
;------------------------------------------------------
;*******************************************************
;SUB PROGRAM (PEMBACAAN SW3 / PROGRAM MOTOR 90 DERAJAT)
;*******************************************************
sub_90: MOV R1,#3 ;R1 terisi dengan nilai 3 (mengalami pengulangan selama 3x)
loop_90: MOV motor,#00CH ;kondisi kutup motor 1100
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
MOV motor,#006H ;kondisi kutup motor 0110
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
MOV motor,#003H ;kondisi kutup motor 0011
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
MOV motor,#009H ;kondisi kutup motor 1001
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
DJNZ R1,loop_90 ;pengurangan hingga sama dengan 0, jika tidak maka akan selalu membaca loop_90
MOV motor,#000H ;kondisi kutup motor 0000
SJMP main_prog ;kembali ke main_program
RET
;------------------------------------------------------
;*******************************************************
;SUB PROGRAM (PEMBACAAN SW4 / PROGRAM MOTOR 180 DERAJAT)
;*******************************************************
sub_180: MOV R1,#6 ;R1 terisi dengan nilai 6 (mengalami pengulangan selama 6x)
loop_180: MOV motor,#009H ;kondisi kutup motor 1001
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
MOV motor,#003H ;kondisi kutup motor 0011
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
MOV motor,#006H ;kondisi kutup motor 0110
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
MOV motor,#00CH ;kondisi kutup motor 1100
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
DJNZ R1,loop_180 ;pengurangan hingga sama dengan 0, jika tidak maka akan selalu membaca loop_180
MOV motor,#000H ;kondisi kutup motor 1001
SJMP main_prog ;kembali ke main_program
RET
;------------------------------------------------------
;*******************************************************
;tunda
;*******************************************************
delay: MOV R5,#0ffh ;mengisi R5 dengan nilai ff
MOV R6,#0ffH ;mengisi R6 dengan nilai ff
MOV R7,#4 ;mengisi R7 dengan nilai 4
delay_loop: DJNZ R5,delay_loop ;pengurangan R5 hingga sama dengan 0, jika tidak maka akan selalu membaca delay_loop
DJNZ R6,delay_loop ;pengurangan R6 hingga sama dengan 0, jika tidak maka akan selalu membaca delay_loop
DJNZ R7,delay_loop ;pengurangan R7 hingga sama dengan 0, jika tidak maka akan selalu membaca delay_loop
RET
END
;------------------------------------------------------
;mendefisinikan i/o atau variable
;*******************************************************
motor equ P0 ;mengidentifikasi PO sebagai motor
SW2 equ p1.0 ;mengidentifikasi SW2 sebagai P1.0
SW3 equ p1.1 ;mengidentifikasi SW3 sebagai P1.1
SW4 equ p1.2 ;mengidentifikasi SW4 sebagai P1.2
Org 0000H
;------------------------------------------------------
;*******************************************************
;MAIN PROGRAM (pembacaan kondisi tombol)
;*******************************************************
main_prog: MOV Motor,#000H ;memindah nilai 00h ke motor (semua kutup motor dimatikan)
JNB SW2,sub_90 ;jika SW2 sama dengan 0, maka membaca atau loncat ke sub_90
JNB SW3,sub_180 ;jika SW2 sama dengan 0, maka membaca atau loncat ke sub_180
sjmp main_prog ;lompat pendek ke main_program
;------------------------------------------------------
;*******************************************************
;SUB PROGRAM (PEMBACAAN SW3 / PROGRAM MOTOR 90 DERAJAT)
;*******************************************************
sub_90: MOV R1,#3 ;R1 terisi dengan nilai 3 (mengalami pengulangan selama 3x)
loop_90: MOV motor,#00CH ;kondisi kutup motor 1100
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
MOV motor,#006H ;kondisi kutup motor 0110
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
MOV motor,#003H ;kondisi kutup motor 0011
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
MOV motor,#009H ;kondisi kutup motor 1001
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
DJNZ R1,loop_90 ;pengurangan hingga sama dengan 0, jika tidak maka akan selalu membaca loop_90
MOV motor,#000H ;kondisi kutup motor 0000
SJMP main_prog ;kembali ke main_program
RET
;------------------------------------------------------
;*******************************************************
;SUB PROGRAM (PEMBACAAN SW4 / PROGRAM MOTOR 180 DERAJAT)
;*******************************************************
sub_180: MOV R1,#6 ;R1 terisi dengan nilai 6 (mengalami pengulangan selama 6x)
loop_180: MOV motor,#009H ;kondisi kutup motor 1001
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
MOV motor,#003H ;kondisi kutup motor 0011
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
MOV motor,#006H ;kondisi kutup motor 0110
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
MOV motor,#00CH ;kondisi kutup motor 1100
call delay ;delay
JNB SW4,main_prog ;jika SW4 sama dengan 0, maka membaca atau loncat main_prog
DJNZ R1,loop_180 ;pengurangan hingga sama dengan 0, jika tidak maka akan selalu membaca loop_180
MOV motor,#000H ;kondisi kutup motor 1001
SJMP main_prog ;kembali ke main_program
RET
;------------------------------------------------------
;*******************************************************
;tunda
;*******************************************************
delay: MOV R5,#0ffh ;mengisi R5 dengan nilai ff
MOV R6,#0ffH ;mengisi R6 dengan nilai ff
MOV R7,#4 ;mengisi R7 dengan nilai 4
delay_loop: DJNZ R5,delay_loop ;pengurangan R5 hingga sama dengan 0, jika tidak maka akan selalu membaca delay_loop
DJNZ R6,delay_loop ;pengurangan R6 hingga sama dengan 0, jika tidak maka akan selalu membaca delay_loop
DJNZ R7,delay_loop ;pengurangan R7 hingga sama dengan 0, jika tidak maka akan selalu membaca delay_loop
RET
END
;------------------------------------------------------
Baik sekian dari Saya, lebih dan kurang Saya mohon maaf.
Semoga Berhasil!
Assalamualaikum Wr.wb