Ayuda con codigo .asm para control de motor pap

Buenas, tengo unas dudas sobre un codigo, que en principio es para controlar el motor PAP tan rapido que pueda hacer figuras con un laser. El controlador es un Pic16f84A. Creo se usaba con un oscilador externo porque era un 16f84 de 20Mhz. Relog interno del 16f84a 6Mhz
¿Que debería hacer para que el movimiento fuera mas despacio?¿Serviría tal cual con el oscilador del integrado?
Lo quiero para controlar unos espejos de un scanner


El codigo es este:


*REGISTROS UTILIZADOS POR EL PROGRAMA**
TRISA EQU 085H
TRISB EQU 086H
PORTA EQU 5
PORTB EQU 6
STA EQU 3
INDF EQU 0
TMR0 EQU 1
OPCION EQU 081H
INTCON EQU 00BH
PCL EQU 2
RP0 EQU 5
Z EQU 2
CY EQU 0
BY EQU 0
PC EQU 2H
REGSTA EQU 015H
REGW EQU 014H
INTF EQU 1
CONT1 EQU 00CH
CONT2 EQU 00DH
CONT3 EQU 00EH
RUTINA EQU 00FH
;*** EQU 010H
;*** EQU 011H
;*** EQU 012H
;*** EQU 013H
;*** EQU 014H
;RUTINAH EQU 016H


;**PROGRAMA**
ORG 0

BSF STA,5
MOVLW 007H
MOVWF TRISA
MOVLW 000H
MOVWF TRISB
BCF STA,5
ENCENDER CLRF PORTB
CLRF PORTA
BTFSS PORTA,0 ;PREGUNTA SI ESTA LA LLAVE ACCIONADA...
GOTO ENCENDER
MOVLW .10 ; 10
MOVWF RUTINA ; RUTINA = 10 (LAS VECES QUE TIENE QUE HACER UNA FIGURA)
BSF PORTA,3
CALL HORIZONTAL
BSF PORTA,3
CALL TABLA
BSF PORTA,3
CALL TABLA
BSF PORTA,3
CALL TABLA
BSF PORTA,3
CALL CUADRADO
BSF PORTA,3
CALL CUADRADO
BSF PORTA,3
CALL CUADRADO
BSF PORTA,3
CALL VERTICAL
BSF PORTA,3
CALL CRUZ
BSF PORTA,3
CALL CRUZ
BSF PORTA,3
CALL CRUZ
BSF PORTA,3
CALL FORMA
BSF PORTA,3
CALL FORMA
BSF PORTA,3
CALL FORMA
GOTO ENCENDER

CUADRADO CALL DERECHA
CALL ARRIBA
CALL DERECHABACK
CALL IZQUIERDA
CALL ARRIBABACK
CALL ABAJO
CALL DERECHA
CALL DERECHA
CALL ABAJOBACK
CALL DERECHABACK
DECFSZ RUTINA,1
GOTO CUADRADO
MOVLW .10
MOVWF RUTINA
BCF PORTA,3
RETURN

HORIZONTAL CALL ARRIBA
CALL LINEA
CALL ARRIBABACK
CALL LINEA
CALL ABAJO
CALL LINEA
CALL ABAJOBACK
DECFSZ RUTINA,1
GOTO HORIZONTAL
MOVLW .10
MOVWF RUTINA
BCF PORTA,3
RETURN


;****RUTINA ESPECIAL PARA HORIZONTAL***
LINEA CALL DERECHA
CALL DERECHABACK
CALL IZQUIERDA
CALL IZQUIERDABACK ;*
CALL DERECHA
CALL DERECHABACK
CALL IZQUIERDA
CALL IZQUIERDABACK ;**
CALL DERECHA
CALL DERECHABACK
CALL IZQUIERDA
CALL IZQUIERDABACK ;***
CALL DERECHA
CALL DERECHABACK
CALL IZQUIERDA
CALL IZQUIERDABACK ;****
CALL DERECHA
CALL DERECHABACK
CALL IZQUIERDA
CALL IZQUIERDABACK ;*****
RETURN


VERTICAL CALL IZQUIERDA
CALL COLUMNA
CALL IZQUIERDABACK
CALL COLUMNA
CALL DERECHA
CALL COLUMNA
CALL DERECHABACK
DECFSZ RUTINA,1
GOTO VERTICAL
MOVLW .10
MOVWF RUTINA
BCF PORTA,3
RETURN

;****RUTINA ESPECIAL PARA VERTICAL****
COLUMNA CALL ARRIBA
CALL ARRIBABACK
CALL ABAJO
CALL ABAJOBACK ;*
CALL ARRIBA
CALL ARRIBABACK
CALL ABAJO
CALL ABAJOBACK ;**
CALL ARRIBA
CALL ARRIBABACK
CALL ABAJO
CALL ABAJOBACK ;***
CALL ARRIBA
CALL ARRIBABACK
CALL ABAJO
CALL ABAJOBACK ;****
CALL ARRIBA
CALL ARRIBABACK
CALL ABAJO
CALL ABAJOBACK ;*****
RETURN

FORMA CALL DERECHA
CALL ARRIBA
CALL DERECHABACK
CALL ARRIBABACK
CALL ABAJO
CALL IZQUIERDA
CALL ABAJOBACK
CALL IZQUIERDABACK
DECFSZ RUTINA,1
GOTO FORMA
MOVLW .10
MOVWF RUTINA
BCF PORTA,3
RETURN

TABLA CALL DERECHA
CALL ARRIBA
CALL DERECHABACK
CALL ARRIBABACK
CALL ABAJO
CALL IZQUIERDA
CALL ABAJOBACK
CALL IZQUIERDABACK
CALL DERECHA
CALL ABAJO
CALL DERECHABACK
CALL ABAJOBACK
CALL ARRIBA
CALL IZQUIERDA
CALL ARRIBABACK
CALL IZQUIERDABACK
DECFSZ RUTINA,1
GOTO TABLA
MOVLW .10
MOVWF RUTINA
BCF PORTA,3
RETURN


CRUZ CALL ARRIBADERECHA
CALL ARRIBADERECHABACK
CALL ARRIBAIZQUIERDA
CALL ARRIBAIZQUIERDABACK
CALL ABAJOIZQUIERDA
CALL ABAJOIZQUIERDABACK
CALL ABAJODERECHA
CALL ABAJODERECHABACK
DECFSZ RUTINA,1
GOTO CRUZ
MOVLW .10
MOVWF RUTINA
BCF PORTA,3
RETURN


;***RUTINA DE TIEMPO***


TIMECUA MOVLW .14
MOVWF CONT2
DOS1 MOVLW .200
MOVWF CONT1
UNO1 DECFSZ CONT1,1
GOTO UNO1
DECFSZ CONT2,1
GOTO DOS1
RETURN

;TIMECUA MOVLW .10
; MOVWF CONT1
;TRES1 MOVLW .200
; MOVWF CONT2
;DOS1 MOVLW .200
; MOVWF CONT3
;UNO1 DECFSZ CONT3,1
; GOTO UNO1
; DECFSZ CONT2,1
; GOTO DOS1
; DECFSZ CONT1,1
; GOTO TRES1
; RETURN


;**MOVIMIENTOS


;***IZQUIERDA****
IZQUIERDA MOVLW 00CH ;IZQUIERDA
MOVWF PORTB
CALL TIMECUA
MOVLW 004H
MOVWF PORTB
CALL TIMECUA
MOVLW 006H
MOVWF PORTB
CALL TIMECUA
MOVLW 002H
MOVWF PORTB
CALL TIMECUA
RETURN

IZQUIERDABACK MOVLW 006H
MOVWF PORTB
CALL TIMECUA
MOVLW 004H
MOVWF PORTB
CALL TIMECUA
MOVLW 00CH
MOVWF PORTB
CALL TIMECUA
RETURN

;***DERECHA***

DERECHA MOVLW 00CH ;DERECHA
MOVWF PORTB
CALL TIMECUA
MOVLW 008H
MOVWF PORTB
CALL TIMECUA
MOVLW 009H
MOVWF PORTB
CALL TIMECUA
MOVLW 001H
MOVWF PORTB
CALL TIMECUA
RETURN

DERECHABACK MOVLW 009H
MOVWF PORTB
CALL TIMECUA
MOVLW 008H
MOVWF PORTB
CALL TIMECUA
MOVLW 00CH
MOVWF PORTB
CALL TIMECUA
RETURN


;***ABAJO***

ABAJO MOVLW 0C0H
MOVWF PORTB
CALL TIMECUA
MOVLW 040H
MOVWF PORTB
CALL TIMECUA
MOVLW 060H
MOVWF PORTB
CALL TIMECUA
MOVLW 020H
MOVWF PORTB
CALL TIMECUA
RETURN

ABAJOBACK MOVLW 060H
MOVWF PORTB
CALL TIMECUA
MOVLW 040H
MOVWF PORTB
CALL TIMECUA
MOVLW 0C0H
MOVWF PORTB
CALL TIMECUA
RETURN

;***ARRIBA***

ARRIBA MOVLW 0C0H
MOVWF PORTB
CALL TIMECUA
MOVLW 080H
MOVWF PORTB
CALL TIMECUA
MOVLW 090H
MOVWF PORTB
CALL TIMECUA
MOVLW 010H
MOVWF PORTB
CALL TIMECUA
RETURN

ARRIBABACK MOVLW 090H
MOVWF PORTB
CALL TIMECUA
MOVLW 080H
MOVWF PORTB
CALL TIMECUA
MOVLW 0C0H
MOVWF PORTB
CALL TIMECUA
RETURN

;***ARRIBA DERECHA***

ARRIBADERECHA MOVLW 0CCH
MOVLW PORTB
CALL TIMECUA
MOVLW 088H
MOVWF PORTB
CALL TIMECUA
MOVLW 099H
MOVWF PORTB
CALL TIMECUA
MOVLW 011H
MOVWF PORTB
CALL TIMECUA
RETURN

;***ARRIBABACK DERECHABACK***

ARRIBADERECHABACK MOVLW 099H
MOVLW PORTB
CALL TIMECUA
MOVLW 088H
MOVWF PORTB
CALL TIMECUA
MOVLW 0CCH
MOVWF PORTB
CALL TIMECUA
RETURN

;***ABAJO DERECHA

ABAJODERECHA MOVLW 0CCH
MOVWF PORTB
CALL TIMECUA
MOVLW 048H
MOVWF PORTB
CALL TIMECUA
MOVLW 069H
MOVWF PORTB
CALL TIMECUA
MOVLW 021H
MOVWF PORTB
CALL TIMECUA
RETURN

;***ABAJO DERECHABACK

ABAJODERECHABACK MOVLW 06CH
MOVWF PORTB
CALL TIMECUA
MOVLW 048H
MOVWF PORTB
CALL TIMECUA
MOVLW 0C9H
MOVWF PORTB
CALL TIMECUA
RETURN

;***ARRIBA IZQUIERDA

ARRIBAIZQUIERDA MOVLW 0CCH
MOVWF PORTB
CALL TIMECUA
MOVLW 084H
MOVWF PORTB
CALL TIMECUA
MOVLW 096H
MOVWF PORTB
CALL TIMECUA
MOVLW 012H
MOVWF PORTB
CALL TIMECUA
RETURN

;***ARRIBA IZQUIERDA BACK

ARRIBAIZQUIERDABACK MOVLW 096H
MOVWF PORTB
CALL TIMECUA
MOVLW 084H
MOVWF PORTB
CALL TIMECUA
MOVLW 0CCH
MOVWF PORTB
CALL TIMECUA
RETURN

;***ABAJO IZQUIERDA

ABAJOIZQUIERDA MOVLW 0CCH
MOVWF PORTB
CALL TIMECUA
MOVLW 044H
MOVWF PORTB
CALL TIMECUA
MOVLW 066H
MOVWF PORTB
CALL TIMECUA
MOVLW 022H
MOVWF PORTB
CALL TIMECUA
RETURN


;***ABAJO IZQUIERDABACK

ABAJOIZQUIERDABACK MOVLW 066H
MOVWF PORTB
CALL TIMECUA
MOVLW 044H
MOVWF PORTB
CALL TIMECUA
MOVLW 0CCH
MOVWF PORTB
CALL TIMECUA
RETURN

END
codigo de Rocke38
 
Última edición:
Hola:

Fig3013_MotorPAP.GIF


http://www.pic16f84a.org/proteus.html#Proteus_Capitulo_30

Un saludo.
 
Atrás
Arriba