JVM-Electronics

  • Aumentar fuente
  • Fuente predeterminada
  • Disminuir fuente

Manejo de un servo (Ensamblador)

E-mail Imprimir PDF
servo_bakA continuación os muestro una rutina para mover un servo en ensamblador. Esta preparado para un PIC16F876A a 4Mhz pero podeis modificarlo o adaptarlo a vuestro antojo segun la aplicacion y el pic que necesiteis...

 

 

 

Codigo Ensamblador:

;********************************************************************************
; Fecha: 17 Abril 2007
; Autor: Julio Montagut Desco
; Web: www.jvmbots.es
;
; Programa: Servo simple
; Hardware: PIC16F876
; XTAL: HS - 4Mhz
;
; Programa para recorrer los 180º de un servo conectado en PORTB.0
;********************************************************************************

__CONFIG _BODEN_ON & _CP_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC & _DEBUG_OFF & _CPD_OFF & _LVP_OFF

LIST P=16F876A
INCLUDE

CBLOCK 0x0C
R_ContA,R_ContB,cnt1,servo,R_ContC,R_ContD
ENDC

ORG 0
goto Inicio

Inicio
bsf STATUS,RP0 ; Acceso al Banco 1.
clrf TRISB ; PORTB son salidas
bcf STATUS,RP0 ; Acceso al Banco 0.

main:
movlw 0x7F ;Posicion del servo al centro (0-255)
movwf servo

movlw b'1'
movwf PORTB ;Pin del servo a 1

movlw d'160' ;Ajuste fino de 0º del servo +/- 0'4 - 0'5 ms
call Delayus ;Retardo de 0'4 - 0'5 ms

clrf cnt1 ;Reset del contador del bucle
PWM ;Inico del bucle del PWM
movlw 0
decfsz servo,1 ;Comparacion del contador con la variable de posicion
iorlw 1
andwf PORTB,1
nop
incfsz cnt1, 1
goto $-6 ; Bucle

movlw d'20'
Call Delayms ;Delay para completar los 20ms del ciclo de 50Hz

Goto main

;Delay_us
Delayus
movwf R_ContA
us_a
goto $+1
goto $+1
goto $+1
goto $+1
decfsz R_ContA,F
goto us_a
return

;Delay_ms
Delayms
movwf R_ContC
ms1_a
movlw d'249'
movwf R_ContD
ms2_a
nop
decfsz R_ContD,F
goto ms2_a
decfsz R_ContC,F
goto ms1_a
return

END
Última actualización el Jueves, 07 de Mayo de 2009 22:13  
English Spanish