; Program Menjalankan Motor Stepper Per-derajat dan Per-Step
; Tugas Mata Kuliah Sistem Mikroprosesor
; Dirancang dan direalisasikan oleh Didi Irwanto dan Ilham
; Teknik Elektronika Industri Politeknik Negeri Jakarta
;===================================================================
ORG 0H
MOV 70H,#80H
MOV 71H,#10H
MOV 20H,#2
MOV 21H,#10
MOV 22H,#1
SCANz: CALL ISI_BUFFER
CALL DISPLAY
setb p3.1
CLR P3.0
MOV C,P3.3
JC LAB1Z
MOV 72h,#0
setb p3.0
JMP KEY_BINTANG
LAB1Z: SETB P3.0
CLR P3.1
MOV C,P3.3
JC SCANZ
MOV 72h,#0FFH
setb p3.1
JMP KEY_BINTANG
KEY_BINTANG:
mov 77h,#09
stopp: CALL DELAY
CALL DELAY
djnz 77h,stopp
MOV 49H,#00H
MOV 50H,#00H
MOV 51H,#00H
MOV 52H,#00H
MOV 59H,#00H
MOV 60H,#00H
MOV 61H,#00H
MOV 62H,#00H
MOV 30H,#22H
MOV 31H,#22H
MOV 32H,#22H
MOV 33H,#22H
MOV 20H,#00H
MOV 21H,#00H
MOV 22H,#00H
MOV 23H,#00H
;======================== scanning Keypad ===========================
SCAN:
CLR P3.0
MOV C,P3.3
JC LAB1
LCALL KEY1
LAB1: MOV C,P3.4
JC LAB2
LCALL KEY4
LAB2: MOV C,P3.5
JC LAB3
LCALL KEY7
LAB3: MOV C,P3.6
JC LAB4
MOV A,72H
CJNE A,#0FFH,PERSETEP
LCALL BINTANG
JMP LAB4
PERSETEP:
LCALL BINTANG_STEP
LAB4: SETB P3.0
CLR P3.1
MOV C, P3.3
JC LAB5
LCALL KEY2
LAB5: MOV C, P3.4
JC LAB6
LCALL KEY5
LAB6: MOV C, P3.5
JC LAB7
LCALL KEY8
LAB7: MOV C, P3.6
JC LAB8
LCALL KEY0
LAB8: SETB P3.1
CLR P3.2
MOV C, P3.3
JC LAB9
LCALL KEY3
LAB9: MOV C, P3.4
JC LAB10
LCALL KEY6
LAB10: MOV C, P3.5
JC LAB11
LCALL KEY9
LAB11: MOV C, P3.6
JC LAB12
mov a,72h
CJNE A,#0FFH,PERSETEx
LCALL key_pagar
JMP LAB12
PERSETEx:
LCALL PAGAR_STEP
LAB12: SETB P3.2
LCALL DISPLAY
LJMP SCAN
;=================================================================
;============== Penanganan Penekanan Masing2 Tombol===============
KEY0:
LCALL XCH_DATA
MOV 20H, #00H
CALL GESERAN
MOV 49H,#00H
LCALL ISI_BUFFER
LCALL DISPLAY
RET
KEY1:
LCALL XCH_DATA
MOV 20H,#01H
CALL GESERAN
MOV 49H,#01H
LCALL ISI_BUFFER
LCALL DISPLAY
RET
KEY2:
LCALL XCH_DATA
MOV 20H, #02H
CALL GESERAN
MOV 49H,#02H
LCALL ISI_BUFFER
LCALL DISPLAY
RET
KEY3:
LCALL XCH_DATA
MOV 20H, #03H
CALL GESERAN
MOV 49H,#03H
LCALL ISI_BUFFER
LCALL DISPLAY
RET
KEY4:
LCALL XCH_DATA
MOV 20H, #04H
CALL GESERAN
MOV 49H,#04H
LCALL ISI_BUFFER
LCALL DISPLAY
RET
KEY5:
LCALL XCH_DATA
MOV 20H, #05H
CALL GESERAN
MOV 49H,#05H
LCALL ISI_BUFFER
LCALL DISPLAY
RET
KEY6:
LCALL XCH_DATA
MOV 20H, #06H
CALL GESERAN
MOV 49H,#06H
LCALL ISI_BUFFER
LCALL DISPLAY
RET
KEY7:
LCALL XCH_DATA
MOV 20H, #07H
CALL GESERAN
MOV 49H,#07H
LCALL ISI_BUFFER
LCALL DISPLAY
RET
KEY8:
LCALL XCH_DATA
MOV 20H,#08H
CALL GESERAN
MOV 49H,#08H
LCALL ISI_BUFFER
LCALL DISPLAY
RET
KEY9:
LCALL XCH_DATA
MOV 20H, #09H
CALL GESERAN
MOV 49H,#09H
LCALL ISI_BUFFER
LCALL DISPLAY
RET
;===============================================================
;=======================Ke Kiri Per Derajat=====================
BINTANG:CALL PULUH
CJNE A,#0,RRR
JMP TTT
RRR: CALL KIRI
TTT: CALL HITUNGAN
CJNE A,#0,WWW
JMP OOO
WWW: CALL KIRI
OOO: CALL SATUAN
CJNE A,#0,HHHHH
JMP LLLL
HHHHH: CALL YG_SATUAN
call long_dl
LLLL: RET
;====================================================================
;===============================Ke Kiri Per Step=====================
BINTANG_STEP:
MOV B,51H
mov a,b
cjne a,#0,bisa_deh1
jmp lewat1
bisa_deh1:
MOV R0,#100
CALL kiri_ST
lewat1:
MOV B,50H
mov a,b
cjne a,#0,bisa_deh2
jmp lewat2
bisa_deh2:
MOV R0,#10
CALL kiri_ST
lewat2:
MOV B,49H
mov a,b
cjne a,#0,bisa_deh3
jmp lewat3
bisa_deh3:
MOV R0,#1
CALL kiri_ST
call long_dl
lewat3: RET
kiri_ST:
MOV A,70H
MASIH: MOV 73H,B
LAGIX: RL A
CJNE A,#10H,OKEH
MOV A,#01
OKEH:
MOV P1,A
MOV P2,A
CALL DELAY
DJNZ 73H,LAGIX
DJNZ R0,MASIH
MOV 70H,A
MOV 71H,A
RET
;==================================================================
;=======================Ke Kanan Per Derajat========================
KEY_PAGAR:
CALL PULUH
CJNE A,#0,RRRY
JMP TTTY
RRRY: CALL KANAN
TTTY: CALL HITUNGAN
CJNE A,#0,WWWY
JMP OOOY
WWWY: CALL KANAN
OOOY:
CALL SATUAN
CJNE A,#0,HHHHHY
JMP LLLLY
HHHHHY: CALL YG_SATUAN_KANAN
call long_dl
LLLLY: RET
;==================================================================
;===============================Ke Kanan Per Step=====================
PAGAR_STEP:
MOV B,51H
mov a,b
cjne a,#0,Zbisa_deh1
jmp Zlewat1
Zbisa_deh1:
MOV R0,#100
CALL kANAN_ST
Zlewat1:
MOV B,50H
mov a,b
cjne a,#0,Zbisa_deh2
jmp Zlewat2
Zbisa_deh2:
MOV R0,#10
CALL kANAN_ST
Zlewat2:
MOV B,49H
mov a,b
cjne a,#0,Zbisa_deh3
jmp Zlewat3
Zbisa_deh3:
MOV R0,#1
CALL kANAN_ST
call long_dl
Zlewat3:RET
KANAN_ST:
MOV A,71H
ZMASIH: MOV 73H,B
ZLAGIX: RR A
CJNE A,#80H,ZOKEH
MOV A,#08H
ZOKEH:
MOV P1,A
MOV P2,A
CALL DELAY
DJNZ 73H,ZLAGIX
DJNZ R0,ZMASIH
MOV 70H,A
MOV 71H,A
RET
;==================================================================
;================Menghitung Pengubahan Derajat ke Step=============
SATUAN:
clr a
MOV DPTR,#STEP
MOV A,49H
ADD A,50H
ADD A,51H
MOVC A,@A+DPTR
MOV 60H,A
RET
PULUH:
MOV A,50H
; CJNE A,#9H,SEMBILAN
; MOV 61H,#0AH
; MOV R0,#0AH
; RET
SEMBILAN:MOV 61H,50H
MOV R0,61H
RET
HITUNGAN:
MOV DPTR,#PERTAMA
CLR A
MOV A,51H
MOVC A,@A+DPTR
MOV 62H,A
MOV R0,62H
RET
;=============================================================
;=============Penggeseran Memori saat Penekanan tombol==========
GESERAN:
MOV 51H,50H
MOV 50H,49H
RET
;===============================================================
;============= Gerakan ke Kiri Derajat: Ratusan & Puluhan=========
KIRI: MOV A,70H
MULAI_KIRI:
MOV 40H,#0
RL A
CJNE A,#10H,XSATU
MOV A,#01
XSATU: MOV P2,A
MOV P1,A
CALL DELAY
RL A
CJNE A,#10H,XDUA
MOV A,#01
XDUA: MOV P2,A
MOV P1,A
CALL DELAY
RL A
CJNE A,#10H,XTIGA
MOV A,#01
XTIGA: MOV P2,A
MOV P1,A
CALL DELAY
RL A
CJNE A,#10H,XEMPAT
MOV A,#01
XEMPAT: MOV P2,A
MOV P1,A
CALL DELAY
RL A
CJNE A,#10H,XLIMA
MOV A,#01
XLIMA: MOV P2,A
MOV P1,A
CALL DELAY
DJNZ r0,MULAI_KIRI
MOV 40H,#1
MOV 70H,A
MOV 71H,A
RET
;==========================================================
;===== Gerakan ke Kanan : Derajat, Ratusan dan puluhannya=============
KANAN: MOV A,71H
MULAI_KANAN:
MOV 40H,#0
RR A
CJNE A,#80H,YSATU
MOV A,#08
YSATU: MOV P2,A
MOV P1,A
CALL DELAY
RR A
CJNE A,#80H,YDUA
MOV A,#08
YDUA: MOV P2,A
MOV P1,A
CALL DELAY
RR A
CJNE A,#80H,YTIGA
MOV A,#08
YTIGA: MOV P2,A
MOV P1,A
CALL DELAY
RR A
CJNE A,#80H,YEMPAT
MOV A,#08
YEMPAT: MOV P2,A
MOV P1,A
CALL DELAY
RR A
CJNE A,#80H,YLIMA
MOV A,#08
YLIMA: MOV P2,A
MOV P1,A
CALL DELAY
DJNZ r0,MULAI_KANAN
MOV 40H,#1
MOV 70H,A
MOV 71H,A
RET
;=============================================================
; ========== Gerakan satuan Kiri==============================
YG_SATUAN:
MOV A,70H
YG_SATUAN_K:
RL A
CJNE A,#10H,XSATUZ
MOV A,#01
XSATUZ: MOV P2,A
MOV P1,A
CALL DELAY
DJNZ 60H,YG_SATUAN_K
MOV 70H,A
mov 71h,a
RET
;=============================================================
;=================== Gerakan Satuan Kanan=====================
YG_SATUAN_KANAN:
MOV A,71H
YG_SATUAN_L:
RR A
CJNE A,#80H,YSATUZ
MOV A,#08
YSATUZ: MOV P2,A
MOV P1,A
CALL DELAY
DJNZ 60H,YG_SATUAN_L
MOV 70H,A
MOV 71H,A
RET
;=============================================================
;================== Delay ================================
delay: mov r1,#20h
del1: mov R7,#0h
MMM: djnz r7,MMM ; R7=R7-1 bila <> 0 ke label delay
djnz r1,del1
RET
;=========================================================
long_dl:
mov 77h,#10
lagixp: call delay
djnz 77h,lagixp
ret
;=========================================================
; Berbagai subrutin untuk Display
;=========================================================
XCH_DATA:
MOV R2,#03H
MOV R1,#22H
MOV R0,#23H
XCH_DATA1:
MOV A,@R0
XCH A,@R1
ANL A,#0FH
MOV @R0,A
DEC R1
DEC R0
DJNZ R2, XCH_DATA1
RET
;
ISI_BUFFER:
MOV 24H, #04H
MOV R1, #20H
MOV R0, #30H
ISI_BUFFER1:
MOV A, @R1
MOVC A,@A+DPTR
MOV @R0, A
INC R0
INC R1
DJNZ 24H, ISI_BUFFER1
RET
DISPLAY:
MOV DPTR,#ANGKA
MOV 25H, #09FH
DISPLAY1:
LCALL DIS8SEG
DJNZ 25H, DISPLAY1
RET
DIS8SEG:
MOV 26H, #03H
MOV R1, #30H
MOV 27H, #0FEH
DIS8SEG1:
MOV A, @R1
MOV P0, A
INC R1
MOV A, 27H
MOV P1, A
SETB C
RLC A
MOV 27H, A
LCALL DELAYDP
MOV P0, #0FFH
MOV P1, #0FFH
DJNZ 26H, DIS8SEG1
RET
; ----------------------Delay Display----------------------------
DELAYDP:
MOV 28H, #0E0H
DELAY1:
DJNZ 28H, DELAY1
RET
;----------------------------------------------------------------
;=============================================================
; database
;-------------------------------------------------------------
ANGKA:
DB 22H,77H,0A4H,25H,71H,29H,28H,67H,20H,21H,0ffh
STEP:
DB 0H,1H,1H,2H,2H,3H,3H,4H,4H,5H,6H,6H;
DB 7H,7H,8H,8H,9H,9H,0AH,0BH,0BH,0CH,0CH;
DB 0DH,0DH,0EH,0EH,0FH,10H,10H,11H,12H,12H
PERTAMA:
DB 00H,0BH,16H,21H,2CH,37H,40H,4DH,58H,64H;
END
0 komentar:
Posting Komentar