Descripcin Este Proyecto es un primer paso hacia la Robtica , el diseo busca controlar un servomotor por medio de un PC. El control se a logrado por medio de un microcontrolador PIC16F84 , el cual proporciona las seales necesarias para producir una defleccin en el servo de 0 a 120 grados aprox , con una resolucin de 255 pasos .
El microcontrolador se comunica con el PC por medio del bus de control del puerto paralelo , el software encargado de la comunicacin es nuestro viejo programa send to pic16f84 elaborado en LabView hace un par de meses.
Circuito
Programa para el PIC ;Recepcin serial de datos ;Por Carlos Fernando Jimnez ;Bucaramanga Jueves 19 de Julio del 2000
PUERTAB EQU 0x06 PUERTAA EQU 0x05 ESTADO EQU 0x03 OPT EQU 0x01 INTCO EQU 0x0B org 0 goto INICIO org 4 goto interr ;****** inicio configuracion de la interrupcion***** INICIO bcf ESTADO,5 ;BANCO0 sbuff EQU 0x0C ;REGISTRO QUE RECIBE LOS DATOS SERIALES contador EQU 0x0E W1 EQU 0X1B w2 equ 0x1c movlw b'10110000' iorwf INTCO ;interrupcion RB0/INT activa movlw b'11110101' ;configuracion del puert andwf PUERTAB,1 ;RB1 salida ('ya puedes enviar los datos' en alto)
movlw b'00000101' iorwf PUERTAB,1 ;RB0 y RB2 entrada('boy a enviarte datos!' en bajo interrupcio) y dato listo en alto bcf ESTADO,5 ;BANCO0 bcf PUERTAB,1 bcf PUERTAB,3 ;*****fin de la configuracion****** bsf ESTADO,5 ;BANCO1 movlw 0x00 movwf PUERTAA BSF ESTADO,5 ;BANCO1 movlw b'10010010' ;DIVISION 1-8 movwf OPT movlw 0X7F movwf sbuff bcf ESTADO,5 ;BANCO0 MAIN ;temporizacion para el servo ;Tiempo para la deflexion min 1 max 2 ms movfw sbuff ;127-255 movwf OPT ;cargamos el timer movlw 0x1f movwf PUERTAA ;Seal arriba movlw 1 movwf W1 espera10 btfsc W1,0 goto espera10
;Minimo tiempo 10 ms de descanso movlw 0x06 movwf w2 buc movlw 0x00 movwf OPT ;cargamos el timer movlw 0x00 movwf PUERTAA ;CAE LA SEAL DE CONTROL movlw 1 movwf W1 espera11 btfsc W1,0 goto espera11 decfsz w2 goto buc
goto MAIN interr btfss INTCO,1 ;Identificacion de la interrupcion goto timer goto serial serial movlw 0x00 ;***** Rutina de recepcion de datos***** movlw 0x00 movwf PUERTAA movwf INTCO ;incapacita TODAS las interrupcines movlw 8 ;los 8 bits a recibir movwf contador ;regitro que lleba la cuenta de los bits llegados movlw 0x00 movwf sbuff ;pone sbuff en cero espera1 bsf PUERTAB,3 btfss PUERTAB,2 ;espera que el bit de sincronia se ponga en 1 goto espera1 movlw b'1' andwf PUERTAB,0 ;mascara del datos dato queda en w iorwf sbuff,1 rlf sbuff bcf PUERTAB,3 ;bit adentro bucle btfsc PUERTAB,2 ;espera que el bit de sincronia vuelva a 0 goto bucle decfsz contador,1 goto salto goto fin salto goto espera1 movlw 0 MOVWF W1 fin movlw b'10110000' ;reabilitacion de TODAS LAS inTerrupciones movwf INTCO RETFIE timer movlw 0x00 movfw INTCO movlw b'10110000' movwf INTCO movlw 0 MOVWF W1 RETFIE
END