• No se han encontrado resultados

APÉNDICE C Función llamada “Manda Señal

encargada de mandar pulsos para los 20 servomotores

;======= Manda unos por ms ========================================

movlw 0xFF ; (0.0002ms) Mete puros unos en W movwf PUERTAB ; (0.0002ms) Manda unos por la puerta B movwf PUERTAC ; (0.0002ms) Manda unos por la puerta C movwf PUERTAA ; (0.0002ms) Manda unos por la puerta A

;--- Retardo por [(1.05ms Rango Inf.)-(0.0092ms)-(0.0004ms)]=(1.04ms) --- call retardo1 ; (0.2063ms) Retardo por 0.0400ms

call retardo1 ; (0.2063ms) Retardo por 0.4126ms call retardo1 ; (0.2063ms) Retardo por 0.6189ms call retardo1 ; (0.2063ms) Retardo por 0.8252ms call retardo1 ; (0.2063ms) Retardo por 1.0315ms call ajuste ; (0.0086ms) Retardo por 1.0401ms ;===== Inicializa Variables (0.0092ms) ======

;--- (0.0004ms) ----

movlw d'32' ; (0.0002ms) Mete un 32 en W para contador de pulsos movwf var ; (0.0002ms) Guarda en var el valor de 32.

;--- (0.0008ms) ----

movlw 0xFF ; (0.0002ms) Mete puros unos en W movwf result ; (0.0002ms) Guarda el valor de W en result movwf result2 ; (0.0002ms) Guarda el valor de W en result2 movwf result3 ; (0.0002ms) Guarda el valor de W en result3 ;--- (0.008ms) ---

movf v1,0 ; (0.0002ms) Introduce el valor Vx en W movwf v11 ; (0.0002ms) Introduce el valor de W en Vxx movf v2,0 ; (0.0002ms) Introduce el valor Vx en W movwf v22 ; (0.0002ms) Introduce el valor de W en Vxx movf v3,0 ; (0.0002ms) Introduce el valor Vx en W movwf v33 ; (0.0002ms) Introduce el valor de W en Vxx movf v4,0 ; (0.0002ms) Introduce el valor Vx en W movwf v44 ; (0.0002ms) Introduce el valor de W en Vxx movf v5,0 ; (0.0002ms) Introduce el valor Vx en W movwf v55 ; (0.0002ms) Introduce el valor de W en Vxx movf v6,0 ; (0.0002ms) Introduce el valor Vx en W movwf v66 ; (0.0002ms) Introduce el valor de W en Vxx movf v7,0 ; (0.0002ms) Introduce el valor Vx en W movwf v77 ; (0.0002ms) Introduce el valor de W en Vxx movf v8,0 ; (0.0002ms) Introduce el valor Vx en W movwf v88 ; (0.0002ms) Introduce el valor de W en Vxx movf v9,0 ; (0.0002ms) Introduce el valor Vx en W movwf v99 ; (0.0002ms) Introduce el valor de W en Vxx movf vA,0 ; (0.0002ms) Introduce el valor Vx en W movwf vAA ; (0.0002ms) Introduce el valor de W en Vxx movf vA1,0 ; (0.0002ms) Introduce el valor Vx en W movwf vAA1 ; (0.0002ms) Introduce el valor de W en Vxx movf vA2,0 ; (0.0002ms) Introduce el valor Vx en W movwf vAA2 ; (0.0002ms) Introduce el valor de W en Vxx movf vA3,0 ; (0.0002ms) Introduce el valor Vx en W movwf vAA3 ; (0.0002ms) Introduce el valor de W en Vxx movf vA4,0 ; (0.0002ms) Introduce el valor Vx en W movwf vAA4 ; (0.0002ms) Introduce el valor de W en Vxx

movf vA5,0 ; (0.0002ms) Introduce el valor Vx en W movwf vAA5 ; (0.0002ms) Introduce el valor de W en Vxx movf vA6,0 ; (0.0002ms) Introduce el valor Vx en W movwf vAA6 ; (0.0002ms) Introduce el valor de W en Vxx movf vA7,0 ; (0.0002ms) Introduce el valor Vx en W movwf vAA7 ; (0.0002ms) Introduce el valor de W en Vxx movf vA8,0 ; (0.0002ms) Introduce el valor Vx en W movwf vAA8 ; (0.0002ms) Introduce el valor de W en Vxx movf vA9,0 ; (0.0002ms) Introduce el valor Vx en W movwf vAA9 ; (0.0002ms) Introduce el valor de W en Vxx movf vA10,0 ; (0.0002ms) Introduce el valor Vx en W movwf vAAA ; (0.0002ms) Introduce el valor de W en Vxx ;---

clrf var ; (0.0002ms) Limpia la variable var.

;======= Configura los bits a mandar (0.0096ms)por ciclo ================== pulseando:

;===== (0.0004ms) =====

decfsz v11,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig2 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result,0 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig2:

;===== (0.0004ms) =====

decfsz v22,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig3 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result,1 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig3:

;===== (0.0004ms) =====

decfsz v33,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig4 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result,2 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig4:

;===== (0.0004ms) =====

decfsz v44,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig5 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result,3 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig5:

;===== (0.0004ms) =====

decfsz v55,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig6 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result,4 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig6:

;===== (0.0004ms) =====

decfsz v66,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig7 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result,5 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig7:

;===== (0.0004ms) =====

decfsz v77,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig8 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result,6 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig8:

;===== (0.0004ms) =====

decfsz v88,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig9 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result,7 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig9:

;===== (0.0004ms) =====

decfsz v99,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig10 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result2,0 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig10:

;===== (0.0004ms) =====

decfsz vAA,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig11 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result2,1 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig11:

;===== (0.0004ms) =====

decfsz vAA1,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig12 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result2,2 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig12:

;===== (0.0004ms) =====

decfsz vAA2,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig13 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result2,3 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig13:

;===== (0.0004ms) =====

decfsz vAA3,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig14 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result2,4 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig14:

;===== (0.0004ms) =====

decfsz vAA4,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig15 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result2,5 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig15:

;===== (0.0004ms) =====

decfsz vAA5,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig16 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result2,6 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig16:

;===== (0.0004ms) =====

decfsz vAA6,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig17 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result2,7 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig17:

;===== (0.0004ms) =====

decfsz vAA7,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig18 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result3,0 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig18:

;===== (0.0004ms) =====

decfsz vAA8,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig19 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result3,1 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig19:

;===== (0.0004ms) =====

decfsz vAA9,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_sig20 ; (0.0002ms) Si no es cero, revisa el siguiente cont.

bcf result3,2 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_sig20:

decfsz vAAA,1 ; (0.0002ms) Decrementa contador y revisa si es cero goto m_acaba ; (0.0002ms) Si no es cero, manda señales a motores

bcf result3,3 ; (0.0002ms) Si ya paso por cero, entonces apara el bit corresp. m_acaba:

;=========== Manda a los puertos (0.0012ms) ==========

movf result,0 ; (0.0002ms) Manda el valor de result a W movwf PUERTAB ; (0.0002ms) Manda el valor por la Puerta B movf result2,0 ; (0.0002ms) Manda el valor de result a W movwf PUERTAC ; (0.0002ms) Manda el valor por la Puerta C movf result3,0 ; (0.0002ms) Manda el valor de result a W movwf PUERTAA ; (0.0002ms) Manda el valor por la Puerta A ;========== Revisa condición de paro (0.0004ms) =====

;--- Revisa si ya llegó a 31 pulsos ---

decfsz var,1 ; (0.0002ms) Decrementa el valor de var goto pulseando ; (0.0002ms) Si no es cero, realiza denuevo el alg. ;========== Manda ceros por (9.65ms) ========

call retardo2 ; (1.6398ms) Retardo. call retardo2 ; (3.2796ms) Retardo. call retardo2 ; (4.9194ms) Retardo. call retardo2 ; (6.5592ms) Retardo. call retardo2 ; (8.1990ms) Retardo. call retardo1 ; (8.4052ms) Retardo. call retardo1 ; (8.6114ms) Retardo. call retardo1 ; (8.8176ms) Retardo. call retardo1 ; (9.0238ms) Retardo. call retardo1 ; (9.2300ms) Retardo. call retardo1 ; (9.4362ms) Retardo. call retardo1 ; (9.6424ms) Retardo.

;============================================ return

APÉNDICE D. Algoritmo “Envia Posiciones” realizado