Autor Tema: problema de simulacion de proyecto en Mplab con pic 16f877  (Leído 1678 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Ricardo1950

  • PIC10
  • *
  • Mensajes: 9
problema de simulacion de proyecto en Mplab con pic 16f877
« en: 30 de Marzo de 2014, 15:49:14 »
he hecho el proyecto y da que no tiene errores pero al querer simularlo no responde a estímulos. Supongo que tendré algún error de configuración aqui os envío el código para ver si pueden ayudarme, con el 16f84 no tengo problemas, es la primera vez que intento con el 16f877 porque quiero hacer funcionar dos motores paso a paso en directo e inverso, con el 16f84 con un motor va estupendamente.


Código: ASM
  1. ;***************************************************
  2. ;*primer programa de control 2 motores paso a paso *
  3. ;*en directo e inversa   CON 16F877                *
  4. ;**************************************************
  5.  
  6.  
  7.  
  8. PCL             EQU     02H
  9. STATUS  EQU     03H
  10. PORTA   EQU     05H
  11. TRISA   EQU     05H
  12. PORTB   EQU     06H
  13. TRISB   EQU     06H
  14. PORTC   EQU     07H
  15. TRISC   EQU     07H
  16. CUENTA  EQU     0CH                     ;CONFIGURACION DE PINES I/O  DE PUERTOS Y VARIABLES
  17. CUENTA2 EQU     0DH
  18.  
  19.         ORG     00H
  20.  
  21.         GOTO    INICIO
  22. TABLA   MOVWF   PCL             ;MUEVE EL CONTENIDO DEL ACUMULADOR AL REGISTRO PCL
  23.  
  24. MOTOR   RETLW   0CH             ;VALORES DE SALIDAS SEGUN BOBINA DEL MOTOR
  25.         RETLW   06H
  26.         RETLW   03H
  27.         RETLW   09H
  28.  
  29. TABLA2  MOVWF   PCL
  30.  
  31. MOTOR2  RETLW   0CH
  32.         RETLW   06H
  33.         RETLW   03H
  34.         RETLW   06H
  35.         RETLW   09H
  36.        
  37.  
  38. INICIO  BSF     STATUS,5        ;DEFINICION DE BANCO1
  39.         MOVLW   0FFH
  40.         MOVWF   TRISA           ;CONFIGURO PUERTO A COMO ENTRA
  41.         MOVLW   00H
  42.         MOVWF   TRISB   ;CONFIGURO PUERTO B COMO SALIDA
  43.         MOVLW   00H
  44.         MOVWF   TRISC   ;CONFIGURO PUERTO C COMO SALIDA
  45.  
  46.         BCF             STATUS,5        ;DEFINICION DE BANCO 0
  47.  
  48.         CLRF    PORTB           ;SE PONE A 0 EL PUERTO B
  49.         CLRF    PORTC           ;SE PONE A 0 PUERTO C  
  50.         CLRF    PORTA           ; SE PONE A 0 EL PUERTA
  51.         CLRF    CUENTA          ;SE PONE A 0 LA CUENTA
  52.         CLRF    CUENTA2         ; SE PONE A 0 CUENTA1
  53.  
  54. ACA     BTFSS   PORTA,0 ;SE TESTEA A0 SI ESTA A 0 VA GOTO AQUI SI ESTA A 1 VA CALL SUMA 1
  55.         GOTO    AQUI
  56.         CALL    SUMA1
  57. AQUI    BTFSS   PORTA,1         ;SE TESTEA A1 SI ESTA A 0 VA A GOTO ACA SI ESTA A 1 VA A GOTO RETRO
  58.         GOTO    ALLI
  59.         GOTO    RETRO
  60. ALLI    BTFSS   PORTA,2         ; TESTEA A2 SI ESTA A 0 VA A GOTO ALLA, SI ESTA A 1 VA A GOTO A CALL SUMA2
  61.         GOTO    ALLA
  62.         CALL SUMA2
  63. ALLA    BTFSS PORTA,3           ;TESTEA A3 SI ESTA A 0 VA A GOTO RETRO2
  64.         GOTO    ACA
  65.         GOTO    RETRO2
  66.  
  67. AVANCE  MOVLW   MOTOR           ;COPIA EN EL ACUMULADOR EL PRIMER VALOR DE LA TABLA
  68.         ADDWF   CUENTA,W        ; SE SUMA EL VALOR DEPOSITADO EN LA CUENTA
  69.         CALL    TABLA           ;SE LLAMA A TABLA CARGAR EN EL ACUMULADOR EL VALOR CORRESPONDIENTE DE LA BOBINA
  70.         MOVWF   PORTB           ;SE DESCARGA EL ACUMULADOR EN EL PUERTO B PARA EXITAR LA O LAS BOBINAS CORRESPONDIENTE
  71.         GOTO    ACA                     ;RETORNA AL TESTEO DE LOS PINES A0  BO, B1, Y B2C
  72.  
  73. AVANCE2 MOVLW   MOTOR2
  74.         ADDWF   CUENTA2,W
  75.         CALL    TABLA2
  76.         MOVWF   PORTC
  77.         GOTO    ACA    
  78.  
  79. RETRO   MOVLW   00H             ; RUTINA INVERTIR EL GIRO DEL MOTOR, SI LA CUENTA ESTUBIESE EN CERO NO SE PODRIA RETROCEDER
  80.         SUBWF   CUENTA,W        ;POR ESO PARA COMPROBARLO COLOCAMOS EN  W 00H Y LE RESTAMOS LA CUENTA PONIENDO EL RESULTADO EN W
  81.         BTFSC   STATUS,2        ; SI EL RESULTADO DA 0 CARGAMOS W CON 04H VALOR MAXIMO DE LA CUENTA
  82.         MOVLW   04H                     ; Y LO DEPOSITAMOS EN LA CUENTA PARA EMPEZAR A RESTAR DE ESA MANERA INVERTIMOS EL GIRO DEL MOTOR
  83.         MOVWF   CUENTA          ;AL IR LA CUENTA ASIA ATRAS
  84.         CALL    RESTA1          ; SE LLAMA A RUTINA DE RESTA1;
  85.         GOTO    AVANCE          ;VA AVANCE PARA QUE SAQUE EL VALOR DE BOBINA UENTACORRESPONDIENTE
  86.  
  87. RETRO2  MOVLW   00H
  88.         ADDWF   CUENTA2,W
  89.         BTFSC   STATUS,2
  90.         MOVLW   CUENTA2
  91.         CALL    RESTA2
  92.         GOTO    AVANCE2
  93.  
  94.  
  95. SUMA1   INCF    CUENTA,F        ;INCREMENTA LA CUENTA EN 1;
  96.         MOVLW   04H                             ;PARA COMPROBAR SI LA CUENTA HA LLEGADO AL MAXIMO (04h), SE COLOCA EN EL W 04H
  97.         SUBWF   CUENTA,W                ; Y SE LE RESTA EL VALOR DE LA CUENTA, DEPOSITANDO EL RESULTADO EN W   
  98.         BTFSC   STATUS,2                ;SI EL RESULTADO DA 0 SIGNIFICA QUE SE HA LLEGADO AL MAXIMO DE LA CUENTA
  99.         CLRF    CUENTA                  ;SI A LLEGADO AL MAXIMO SE PONE LA CUENTA A CERO
  100.         GOTO AVANCE                             ;SI NO HA LLEGADO A 0 VA MOVER OTRA VEZ EL MOTOR
  101.         RETURN
  102.  
  103. SUMA2   INCF    CUENTA2,F
  104.         MOVLW   04H
  105.         SUBWF   CUENTA2,W
  106.         BTFSC   STATUS,2
  107.         CLRF    CUENTA2
  108.         GOTO    AVANCE2
  109.         RETURN
  110.  
  111.  
  112. RESTA1  DECF    CUENTA,F        ; RUTINA DE RESTAR 1 A LA CUENTA
  113.         RETURN
  114.  
  115. RESTA2  DECF    CUENTA,F
  116.         RETURN
  117.         END
« Última modificación: 30 de Marzo de 2014, 21:04:38 por MGLSOFT »

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: problema de simulacion de proyecto en Mplab con pic 16f877
« Respuesta #1 en: 30 de Marzo de 2014, 16:04:54 »
Creo que no has configurado los puertos como digitales. En el 16f84 no es necesario porque no tiene ADC pero en este si ha que hacerlo. ¿Por que no usas el 16f887? es mejor y mas barato, en este no recuerdo como se hacia esto.


Código: ASM
  1. INICIO   BSF   STATUS,5   ;DEFINICION DE BANCO1
  2.    MOVLW   0FFH
  3.    MOVWF   TRISA      ;CONFIGURO PUERTO A COMO ENTRA
  4.    MOVLW   00H
  5.    MOVWF   TRISB   ;CONFIGURO PUERTO B COMO SALIDA
  6.    MOVLW   00H
  7.    MOVWF   TRISC   ;CONFIGURO PUERTO C COMO SALIDA
« Última modificación: 30 de Marzo de 2014, 21:05:34 por MGLSOFT »

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: problema de simulacion de proyecto en Mplab con pic 16f877
« Respuesta #2 en: 31 de Marzo de 2014, 06:01:16 »
Prueba asi con esto:

Citar
1.INICIO   BSF   STATUS,5   ;DEFINICION DE BANCO12.   
MOVLW 0x06 ; Configura todas las patillas como entradas
MOVWF ADCON1 ; digitales.

MOVLW   0FFH3.   
MOVWF   TRISA      ;CONFIGURO PUERTO A COMO ENTRA4. 
 MOVLW   00H5.   
MOVWF   TRISB   ;CONFIGURO PUERTO B COMO SALIDA6.   
MOVLW   00H7.   MOVWF   TRISC   ;CONFIGURO PUERTO C COMO SALIDA8.




Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: problema de simulacion de proyecto en Mplab con pic 16f877
« Respuesta #3 en: 31 de Marzo de 2014, 14:22:14 »
Las variables CUENTA y CUENTA2 están mal declaradas para el 16F877. En el 16F84 la memoria GPR comienza en la posición 0x0C, pero en el 16F877 comienza en la 0x20. Estás escribiendo y leyendo sobre registros especiales (SFR) del 16F877, lo que produce comportamiento incorrecto la mayoría de las veces.

Saludos
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.


 

anything