Program Motor Stepper

on Selasa, 25 Oktober 2011
;     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