LIST P=16F877
__config h'3F39'
;---------------------------------------------------------------------
;ETIQUETAS
;---------------------------------------------------------------------
PDel0 EQU 0x20 ;registro del retardo
PDel1 EQU 0x21 ;registro del retardo
Repet EQU 0x22 ;nº de repeticiones de cada señal
Dato EQU 0x23 ;dato del PWM alto
Dato2 EQU 0x24 ;dato del PWM bajo
ESTADO EQU 0x03 ;REGISTRO ESPECÍFICO
TRISA EQU 0x05 ;REGISTRO ESPECÍFICO
TRISB EQU 0x06 ;REGISTRO ESPECÍFICO
TRISC EQU 0x07
;--------------------------------------------------------------------
;PROGRAMA
;--------------------------------------------------------------------
ORG 0 ;PARA COMENZAR EN LA POSICIÓN CERO DE LA MEMORIA
bsf ESTADO,5 ;PASA AL BANCO 1
movlw 0x00 ;LLEVA 'FF' AL ACUMULADOR
movwf TRISB ;PROGRAMA LA PUERTA B EN salida
movwf TRISA ;programa la puerta C en salida
movwf TRISC ;PROGRAMA LA PUERTA C en entrada
bcf ESTADO,5
clrf TRISB ;BORRA LA PUERTA B
Ciclo movlw 0x1F
movwf Repet
Repe movlw 0xFF
movwf TRISB
movlw .10
call Ret100
movlw b'01010101'
movwf TRISB
movlw .8
call Ret100
clrf TRISB
movlw .181
call Ret100
movlw 0x1F ;retardo para conseguir el periodo de 20ms
movwf PDel0 ;en el bucle infinito "Leer"
ret decfsz PDel0,1
goto ret
movwf PDel0
decfsz Repet
goto Repe
movlw 0xFF ;retardo de 1us para compensar
movlw 0x1F
movwf Repet
Repe2 movlw 0xFF
movwf TRISB
movlw .10
call Ret100
movlw b'10101010'
movwf TRISB
movlw .8
call Ret100
clrf TRISB
movlw .181
call Ret100
movlw 0x1F ;retardo para conseguir el periodo de 20ms
movwf PDel0 ;en el bucle infinito "Leer"
ret2 decfsz PDel0,1
goto ret2
movwf PDel0
decfsz Repet
goto Repe2
goto Ciclo
;-------------------------------------------------------------
; Ret 100us
;-------------------------------------------------------------
Ret100 movwf PDel1
movlw 0x1E ; set numero de repeticion
movwf PDel0
PLoop0 decfsz PDel0, 1 ; es el tiempo 0?
goto PLoop0 ; no, loop
decfsz PDel1, 1
goto loop
return
loop movlw 0x20 ; set numero de repeticion
movwf PDel0
decfsz PDel0, 1 ; es el tiempo 0?
goto PLoop0 ; no, loop
EndYa colgaré fotos y videos y...
Hola!!!
Viendo tu chiquitín me entraron ganas de hacerme uno :mrgreen:
Y na, ya está "hecho", tengo que mejorar los movimientos (el tuyo es mucho más rápido) pero todo se andará....
Lo he construido con metacrilato de 2,5mm y servomotores Futaba 3003 (como los del cube)
Mi idea es poder grabarle movimientos en una tarjeta de memoria y que los reconozca. Aunque, por ahora, me conformo con que se mueva de una forma más "real".
El micro que he usado para probar es el PIC16F877 :shock: que era el que tenía en casa.
El cristal es de cuarzo de 4MHzCódigo: [Seleccionar]LIST P=16F877Ya colgaré fotos y videos y...
__config h'3F39'
;---------------------------------------------------------------------
;ETIQUETAS
;---------------------------------------------------------------------
PDel0 EQU 0x20 ;registro del retardo
PDel1 EQU 0x21 ;registro del retardo
Repet EQU 0x22 ;nº de repeticiones de cada señal
Dato EQU 0x23 ;dato del PWM alto
Dato2 EQU 0x24 ;dato del PWM bajo
ESTADO EQU 0x03 ;REGISTRO ESPECÍFICO
TRISA EQU 0x05 ;REGISTRO ESPECÍFICO
TRISB EQU 0x06 ;REGISTRO ESPECÍFICO
TRISC EQU 0x07
;--------------------------------------------------------------------
;PROGRAMA
;--------------------------------------------------------------------
ORG 0 ;PARA COMENZAR EN LA POSICIÓN CERO DE LA MEMORIA
bsf ESTADO,5 ;PASA AL BANCO 1
movlw 0x00 ;LLEVA 'FF' AL ACUMULADOR
movwf TRISB ;PROGRAMA LA PUERTA B EN salida
movwf TRISA ;programa la puerta C en salida
movwf TRISC ;PROGRAMA LA PUERTA C en entrada
bcf ESTADO,5
clrf TRISB ;BORRA LA PUERTA B
Ciclo movlw 0x1F
movwf Repet
Repe movlw 0xFF
movwf TRISB
movlw .10
call Ret100
movlw b'01010101'
movwf TRISB
movlw .8
call Ret100
clrf TRISB
movlw .181
call Ret100
movlw 0x1F ;retardo para conseguir el periodo de 20ms
movwf PDel0 ;en el bucle infinito "Leer"
ret decfsz PDel0,1
goto ret
movwf PDel0
decfsz Repet
goto Repe
movlw 0xFF ;retardo de 1us para compensar
movlw 0x1F
movwf Repet
Repe2 movlw 0xFF
movwf TRISB
movlw .10
call Ret100
movlw b'10101010'
movwf TRISB
movlw .8
call Ret100
clrf TRISB
movlw .181
call Ret100
movlw 0x1F ;retardo para conseguir el periodo de 20ms
movwf PDel0 ;en el bucle infinito "Leer"
ret2 decfsz PDel0,1
goto ret2
movwf PDel0
decfsz Repet
goto Repe2
goto Ciclo
;-------------------------------------------------------------
; Ret 100us
;-------------------------------------------------------------
Ret100 movwf PDel1
movlw 0x1E ; set numero de repeticion
movwf PDel0
PLoop0 decfsz PDel0, 1 ; es el tiempo 0?
goto PLoop0 ; no, loop
decfsz PDel1, 1
goto loop
return
loop movlw 0x20 ; set numero de repeticion
movwf PDel0
decfsz PDel0, 1 ; es el tiempo 0?
goto PLoop0 ; no, loop
End
(http://img139.imageshack.us/img139/9805/controladorservopcconvcsh4.png)
(http://img70.imageshack.us/img70/952/servocontroladorapcpic2ia0.jpg)
¿Del politécnico?
¿En qué materia lo utilizas?
Instituto Politécnico Nacional
Escuela Superior de Ingeniería Mecánica y Eléctrica
"Lo que hago es un a ecuacion para el robot, asi no importara el número de módulos..."