Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTEGRANTES:
SEMESTRE: VII
AREQUIPA- PERU
2014
IMPLEMENTACION DE UN MOTOR PASO A PASO
OBJETIVOS:
INTRODUCCION:
DIAGRAMA DE BLOQUES
INICIO
MANUALMENTE O MANUALMENTE
AUTOMATICAMENTE
DERECHA O DERECHA
IZQUIERDA
IZQUIERDA
HACER GIRAR
EL MOTOR
IZQUIERDA
IZQUIERDA HACER GIRAR
EL MOTOR
HACER GIRAR DERECHA
EL MOTOR
IZQUIERDA
FIN
IMPLEMENTACION DE UN MOTOR PASO A PASO
DESARROLLO:
simulación de un motor.
• Realizamos un menú que nos permita visualizar las opciones que se tienen para el
grados .
IMPLEMENTACION DE UN MOTOR PASO A PASO
• Creación de retarso.
FUNCIONANDO EL PROGRAMA :
IMPLEMENTACION DE UN MOTOR PASO A PASO
GIRO A LA IZQUIERDA
IMPLEMENTACION DE UN MOTOR PASO A PASO
IMPLEMENTACION DE UN MOTOR PASO A PASO
#start=stepper_motor.exe#
#start=led_display.exe#
data segment
ANGLE dw 0, 1125, 2250, 3375, 4500, 5625, 6750, 7875, 9000, 10125,
db " ",13,10
db " ",13,10
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
mov ds, ax
mov es, ax
setup:
OUT 7, AL
functionator:
CALL MOUSEGRAB
JMP functionator
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH SI
PUSH DI
JE ZERO
SUB DI, SI
SHL DI, 1
MOV BX, 64
SUB BX, DI
MOV DI, BX
OUT 199, AX
JMP DONEDEGREE
LEFTDEGREE:
SUB SI, DI
SHL SI,1
OUT 199, AX
JMP DONEDEGREE
ZERO:
XOR AX, AX
OUT 199, AX
DONEDEGREE:
POP DI
POP SI
RET
CHECKDEGREES ENDP
;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;
push ax
push bx
push cx
resetstep:
CMP SI, DI
JE DONERESET
JG LEFTCOMMAND
RIGHTCOMMAND:
SUB DI, SI
MOV CX, DI
GORIGHT1:
CALL DELAY
CALL MOVERIGHT
CMP CX, 1
JE DONERESET
DEC CX
JMP GORIGHT1
JMP DONERESET
LEFTCOMMAND:
SUB SI, DI
MOV CX, SI
GOLEFT1:
CALL DELAY
CALL MOVELEFT
CMP CX, 1
JE DONERESET
DEC CX
IMPLEMENTACION DE UN MOTOR PASO A PASO
JMP GOLEFT1
DONERESET:
MOV SI, 0H
MOV DI, 0H
POP CX
POP BX
POP AX
RET
RESETIT ENDP
;;;;;;;;;;;;;;;;;;;;;
;creates a delay;;;;;
;;;;;;;;;;;;;;;;;;;;;
mov ax, 5
countit:
cmp ax, 0
je donedelay
dec ax
jmp countit
donedelay:
IMPLEMENTACION DE UN MOTOR PASO A PASO
ret
delay endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IN AL, 7
RIGHT1:
JMP DONERIGHT
IMPLEMENTACION DE UN MOTOR PASO A PASO
RIGHT2:
JMP DONERIGHT
RIGHT3:
JMP DONERIGHT
RIGHT4:
DONERIGHT:
JE RESETSI
inc SI
JMP FINALRIGHT
RESETSI:
MOV SI, 1H
FINALRIGHT:
CALL checkdegrees
RET
MOVERIGHT ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IMPLEMENTACION DE UN MOTOR PASO A PASO
IN AL, 7
LEFT1:
JMP DONELEFT
LEFT2:
OUT 7, AL
JMP DONELEFT
LEFT3:
OUT 7, AL
JMP DONELEFT
IMPLEMENTACION DE UN MOTOR PASO A PASO
LEFT4:
OUT 7, AL
DONELEFT:
JE RESETDI ;when
inc DI
JMP FINALLEFT
RESETDI:
MOV DI, 1H
FINALleft:
CALL CHECKDEGREES
RET
MOVELEFT ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH CX
PUSH BX
INT 33H
INT 33H
JE GOMOUSE
IMPLEMENTACION DE UN MOTOR PASO A PASO
POP BX
POP CX
JMP MOUSEDONE
GOMOUSE:
JL MOUSEDONE
JL RESETMOUSE
JL DIRECTMOUSE
JL INPUTMOUSE
JL TURNMOUSE
JL RIGHTMOUSE
JL LEFTMOUSE
JG MOUSEDONE
DIRECTMOUSE:
POP BX
POP CX
IMPLEMENTACION DE UN MOTOR PASO A PASO
CALL DIRECT
JMP MOUSEDONE
INPUTMOUSE:
POP BX
POP CX
CALL ENTER
JMP MOUSEDONE
TURNMOUSE:
POP BX
POP CX
CMP BH, 1
JE CONT_TURN_MOUSE
JMP MOUSEDONE
RIGHTMOUSE:
POP BX
POP CX
CALL MOVERIGHT
JMP MOUSEDONE
LEFTMOUSE:
POP BX
POP CX
CALL MOVELEFT
JMP MOUSEDONE
CONT_TURN_MOUSE:
CMP BL, 1
JE TURNCLOCK_MOUSE
CALL TURNCCW
JMP MOUSEDONE
IMPLEMENTACION DE UN MOTOR PASO A PASO
TURNCLOCK_MOUSE:
CALL TURNCW
JMP MOUSEDONE
RESETMOUSE:
POP BX
POP CX
CALL RESETIT
MOUSEDONE:
RET
MOUSEGRAB ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INT 16H
JZ DONE
int 16h
JE FINISH
IMPLEMENTACION DE UN MOTOR PASO A PASO
JE TURNIT
JE GOLEFT
JE GORIGHT
JE GORESET
JE DIRECTION
JE INPUT
JMP DONE
INPUT:
CALL ENTER
JMP DONE
TURNIT:
CMP BH, 1
JE CONTINUOUSTURN
JMP DONE
IMPLEMENTACION DE UN MOTOR PASO A PASO
DIRECTION:
CALL DIRECT
JMP DONE
GOLEFT:
CALL MOVELEFT
JMP DONE
GORIGHT:
CALL MOVERIGHT
JMP DONE
GORESET:
CALL RESETIT
JMP DONE
CONTINUOUSTURN:
CMP BL, 1
JE TURNCLOCK
CALL TURNCCW
JMP DONE
TURNCLOCK:
CALL TURNCW
DONE:
RET
KEYPRESS ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IMPLEMENTACION DE UN MOTOR PASO A PASO
TURNCWLOOP:
CALL MOVELEFT
CALL DELAY
INT 16H
JNZ doneturning
PUSH CX
PUSH BX
INT 33H
POP BX
POP CX
JNE TURNCWLOOP
doneturning:
RET
TURNCW ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TURNCCWLOOP:
CALL MOVERIGHT
CALL DELAY
IMPLEMENTACION DE UN MOTOR PASO A PASO
INT 16H
JNZ doneturningccw
PUSH CX
PUSH BX
INT 33H
POP BX
POP CX
JNE TURNCCWLOOP
doneturningccw:
RET
TURNCCW ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH BX
MOV DL, 5
INT 10H
MOV BH, 0H
IMPLEMENTACION DE UN MOTOR PASO A PASO
INT 10H
MOV DL, 0H
INT 10H
POP BX
JE MANTURN
INT 21H
JMP DONEENTER
MANTURN:
INT 21H
MOV BH, 0
doneenter:
RET
ENTER ENDP
IMPLEMENTACION DE UN MOTOR PASO A PASO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH BX
MOV DL, 9
INT 10H
MOV BH, 0H
INT 10H
MOV DL, 0H
INT 10H
POP BX
JE CCWCOUNT
INT 21H
IMPLEMENTACION DE UN MOTOR PASO A PASO
JMP DONEDIRECT
CCWCOUNT:
INT 21H
MOV BL, 0
donedirect:
ret
DIRECT ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV AL, 0H
MOV CH, 0H
MOV CL, 0H
MOV DH, 24
MOV DL, 79
INT 10H
MOV BH, 0H
MOV DH, 2H
INT 10H
INT 21H
RET
BLUBOX ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV AL, 0
MOV BH, 7
MOV CH, 0
MOV CL, 0
MOV DH, 24
MOV DL, 79
INT 10H
MOV BH, 0H
MOV DH, 0H
IMPLEMENTACION DE UN MOTOR PASO A PASO
MOV DL, 0H
INT 10H
RET
CLEARSCREEN ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;program is finished;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
FINISH:
call clearscreen
mov ah, 9
mov ah, 1
int 21h
int 21h
ends
end start ; set entry point and stop the assembler. #start=stepper_motor.exe#
#start=led_display.exe#
data segment
IMPLEMENTACION DE UN MOTOR PASO A PASO
ANGLE dw 0, 1125, 2250, 3375, 4500, 5625, 6750, 7875, 9000, 10125,
db " ",13,10
db " ",13,10
ends
stack segment
dw 128 dup(0)
ends
code segment
IMPLEMENTACION DE UN MOTOR PASO A PASO
start:
mov ds, ax
mov es, ax
setup:
OUT 7, AL
functionator:
CALL MOUSEGRAB
JMP functionator
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH SI
PUSH DI
JE ZERO
SUB DI, SI
SHL DI, 1
MOV BX, 64
SUB BX, DI
MOV DI, BX
OUT 199, AX
JMP DONEDEGREE
LEFTDEGREE:
SUB SI, DI
SHL SI,1
OUT 199, AX
JMP DONEDEGREE
ZERO:
XOR AX, AX
OUT 199, AX
DONEDEGREE:
POP DI
POP SI
RET
CHECKDEGREES ENDP
IMPLEMENTACION DE UN MOTOR PASO A PASO
;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;
push ax
push bx
push cx
resetstep:
CMP SI, DI
JE DONERESET
JG LEFTCOMMAND
RIGHTCOMMAND:
SUB DI, SI
MOV CX, DI
GORIGHT1:
CALL DELAY
CALL MOVERIGHT
CMP CX, 1
JE DONERESET
DEC CX
JMP GORIGHT1
JMP DONERESET
LEFTCOMMAND:
SUB SI, DI
MOV CX, SI
GOLEFT1:
CALL DELAY
CALL MOVELEFT
CMP CX, 1
IMPLEMENTACION DE UN MOTOR PASO A PASO
JE DONERESET
DEC CX
JMP GOLEFT1
DONERESET:
MOV SI, 0H
MOV DI, 0H
POP CX
POP BX
POP AX
RET
RESETIT ENDP
;;;;;;;;;;;;;;;;;;;;;
;creates a delay;;;;;
;;;;;;;;;;;;;;;;;;;;;
mov ax, 5
countit:
cmp ax, 0
je donedelay
dec ax
jmp countit
IMPLEMENTACION DE UN MOTOR PASO A PASO
donedelay:
ret
delay endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IN AL, 7
RIGHT1:
JMP DONERIGHT
RIGHT2:
JMP DONERIGHT
RIGHT3:
JMP DONERIGHT
RIGHT4:
DONERIGHT:
JE RESETSI
inc SI
JMP FINALRIGHT
RESETSI:
MOV SI, 1H
FINALRIGHT:
CALL checkdegrees
RET
MOVERIGHT ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IN AL, 7
LEFT1:
JMP DONELEFT
LEFT2:
OUT 7, AL
JMP DONELEFT
LEFT3:
OUT 7, AL
IMPLEMENTACION DE UN MOTOR PASO A PASO
JMP DONELEFT
LEFT4:
OUT 7, AL
DONELEFT:
JE RESETDI ;when
inc DI
JMP FINALLEFT
RESETDI:
MOV DI, 1H
FINALleft:
CALL CHECKDEGREES
RET
MOVELEFT ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH CX
PUSH BX
INT 33H
INT 33H
IMPLEMENTACION DE UN MOTOR PASO A PASO
JE GOMOUSE
POP BX
POP CX
JMP MOUSEDONE
GOMOUSE:
JL MOUSEDONE
JL RESETMOUSE
JL DIRECTMOUSE
JL INPUTMOUSE
JL TURNMOUSE
JL RIGHTMOUSE
JL LEFTMOUSE
JG MOUSEDONE
DIRECTMOUSE:
IMPLEMENTACION DE UN MOTOR PASO A PASO
POP BX
POP CX
CALL DIRECT
JMP MOUSEDONE
INPUTMOUSE:
POP BX
POP CX
CALL ENTER
JMP MOUSEDONE
TURNMOUSE:
POP BX
POP CX
CMP BH, 1
JE CONT_TURN_MOUSE
JMP MOUSEDONE
RIGHTMOUSE:
POP BX
POP CX
CALL MOVERIGHT
JMP MOUSEDONE
LEFTMOUSE:
POP BX
POP CX
CALL MOVELEFT
JMP MOUSEDONE
CONT_TURN_MOUSE:
CMP BL, 1
JE TURNCLOCK_MOUSE
IMPLEMENTACION DE UN MOTOR PASO A PASO
CALL TURNCCW
JMP MOUSEDONE
TURNCLOCK_MOUSE:
CALL TURNCW
JMP MOUSEDONE
RESETMOUSE:
POP BX
POP CX
CALL RESETIT
MOUSEDONE:
RET
MOUSEGRAB ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INT 16H
JZ DONE
int 16h
JE FINISH
JE TURNIT
JE GOLEFT
JE GORIGHT
JE GORESET
JE DIRECTION
JE INPUT
JMP DONE
INPUT:
CALL ENTER
JMP DONE
TURNIT:
CMP BH, 1
JE CONTINUOUSTURN
IMPLEMENTACION DE UN MOTOR PASO A PASO
JMP DONE
DIRECTION:
CALL DIRECT
JMP DONE
GOLEFT:
CALL MOVELEFT
JMP DONE
GORIGHT:
CALL MOVERIGHT
JMP DONE
GORESET:
CALL RESETIT
JMP DONE
CONTINUOUSTURN:
CMP BL, 1
JE TURNCLOCK
CALL TURNCCW
JMP DONE
TURNCLOCK:
CALL TURNCW
DONE:
RET
KEYPRESS ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TURNCWLOOP:
CALL MOVELEFT
CALL DELAY
INT 16H
JNZ doneturning
PUSH CX
PUSH BX
INT 33H
POP BX
POP CX
JNE TURNCWLOOP
doneturning:
RET
TURNCW ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TURNCCWLOOP:
CALL MOVERIGHT
IMPLEMENTACION DE UN MOTOR PASO A PASO
CALL DELAY
INT 16H
JNZ doneturningccw
PUSH CX
PUSH BX
INT 33H
POP BX
POP CX
JNE TURNCCWLOOP
doneturningccw:
RET
TURNCCW ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH BX
MOV DL, 5
INT 10H
IMPLEMENTACION DE UN MOTOR PASO A PASO
MOV BH, 0H
INT 10H
MOV DL, 0H
INT 10H
POP BX
JE MANTURN
INT 21H
JMP DONEENTER
MANTURN:
INT 21H
MOV BH, 0
doneenter:
IMPLEMENTACION DE UN MOTOR PASO A PASO
RET
ENTER ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PUSH BX
MOV DL, 9
INT 10H
MOV BH, 0H
INT 10H
MOV DL, 0H
INT 10H
POP BX
JE CCWCOUNT
INT 21H
JMP DONEDIRECT
CCWCOUNT:
INT 21H
MOV BL, 0
donedirect:
ret
DIRECT ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV AL, 0H
MOV CH, 0H
MOV CL, 0H
MOV DH, 24
MOV DL, 79
INT 10H
IMPLEMENTACION DE UN MOTOR PASO A PASO
MOV BH, 0H
MOV DH, 2H
INT 10H
INT 21H
RET
BLUBOX ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV AL, 0
MOV BH, 7
MOV CH, 0
MOV CL, 0
MOV DH, 24
MOV DL, 79
INT 10H
MOV BH, 0H
MOV DH, 0H
MOV DL, 0H
INT 10H
RET
CLEARSCREEN ENDP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;program is finished;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
FINISH:
call clearscreen
mov ah, 9
mov ah, 1
int 21h
int 21h
ends
FUNCIONANDO EL PROGRAMA :
IMPLEMENTACION DE UN MOTOR PASO A PASO
GIRO A LA IZQUIERDA
IMPLEMENTACION DE UN MOTOR PASO A PASO
IMPLEMENTACION DE UN MOTOR PASO A PASO