Bueno les comento que hice este pequeño programa en ASM, como verán es muy sencillo y es mediante Timer (servos Hitec), haber si a alguien le sirve y segundo para ver si me resuelven los mas entendidos unas dudas.
Si alguien me puede comentar alguna forma de hacer lo mismo pero para dos servomotores al mismo tiempo, se
lo agradecería, ya que se me vienen formas un poco complicadas a la cabeza. Mi otra duda es si es posible controlar un servomotor con los modulos CCP que tienen algunos PIC, yo estuve leyendo y por ahí decían que no se puede porque no tienen tanta resolución y la verdad es que al menos yo no pude hacerlo.
Saludos.
Si alguien me puede comentar alguna forma de hacer lo mismo pero para dos servomotores al mismo tiempo, se
lo agradecería, ya que se me vienen formas un poco complicadas a la cabeza. Mi otra duda es si es posible controlar un servomotor con los modulos CCP que tienen algunos PIC, yo estuve leyendo y por ahí decían que no se puede porque no tienen tanta resolución y la verdad es que al menos yo no pude hacerlo.
Código:
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A
INCLUDE <P16F84A.INC>
#DEFINE CHECAR PORTA,2
CBLOCK 0x0C
Contador1
Contador2
Contador3
ENDC
ORG 0
ORALE
bsf STATUS,RP0
movlw b'00011111'
movwf TRISA
clrf TRISB
bcf STATUS,RP0
CLRF PORTB
INICIO
btfss CHECAR
goto ADELANTE
ATRAS
movlw b'11111111'
movwf PORTB
call timer_900
clrf PORTB
timer_19.1ms
movlw d'191'
movwf Contador1
Pedir_19.1ms
decfsz Contador1,F
goto llamar
goto INICIO
llamar
call timer_100
goto Pedir_19.1ms
ADELANTE
movlw b'11111111'
movwf PORTB
timer_2.1ms
movlw d'21'
movwf Contador2
Pedir_2.1ms
decfsz Contador2,F
goto llamar2
goto timer_17.9ms
llamar2
call timer_100
goto Pedir_2.1ms
timer_17.9ms
clrf PORTB
movlw d'179'
movwf Contador3
Pedir_17.9ms
decfsz Contador3,F
goto llamar3
goto INICIO
llamar3
call timer_100
goto Pedir_17.9ms
carga_900 EQU -d'225'
timer_900
bsf STATUS,RP0
movlw b'00000001'
movwf OPTION_REG
bcf STATUS,RP0
movlw carga_900
movwf TMR0
bcf INTCON,T0IF
rebasamiento1
btfss INTCON,T0IF
goto rebasamiento1
return
carga_100 EQU -d'50'
timer_100
bsf STATUS,RP0
movlw b'00000000'
movwf OPTION_REG
bcf STATUS,RP0
movlw carga_100
movwf TMR0
bcf INTCON,T0IF
rebasamiento2
btfss INTCON,T0IF
goto rebasamiento2
return
END
Saludos.