Autor Tema: Problema en mi programa  (Leído 1559 veces)

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

Desconectado laluchi

  • PIC10
  • *
  • Mensajes: 6
Problema en mi programa
« en: 23 de Octubre de 2008, 22:07:38 »
Hola!
Estoy con un proyecto y utilizo un PIC 16F627A.
Necesito usar 10 entradas y 3 salidas.
Pero el programa por alguna razon no me funciona cuando seteo 12 entradas y 4 salidas. Por el contrario el programa SI funciona cuando pongo 8 entradas y 8 salidas.
Aca les paso el comienzo de los dos programas. El primero anda Perfecto, pero el segundo no funciona. Y lo unico que cambio es lo que se ve distinto.

;CON ESTE COMIENZO EL PROGRAMA que ANDA BIEN
         org     0x00
INI:   
         CLRF 0x05;
         MOVLW   0x07;
         MOVWF 0x1F;
         BCF 0x03,6;
         bsf 0x03,5;
      movlw   0x00      ;0000 0000 en w
         movwf   0x05      ;Port A Salida
      movlw   0xFF      ;0000 0000 en w
         movwf   0x06      ;Port B entrada
     bcf     0x03,5    ;a banco 0
    movlw   0x00      ;0000 0000 en w
         movwf   0x05      ;inicializo portA todo en 0
         bcf     0x05,0    ;inicializo RA0 en 0
         bsf     0x05,3         ; RA3 en 1     
         bsf     0x05,2         ; RA2 en 1
         bsf     0x05,1         ; RA1 en 1     
COMIENZO:

.................................................
ahora publico el comienzo del programa que no funciona correctamente:

;aca comienza el prog q anda mal
         org     0x00
INI:   
         CLRF    0x05;
         MOVLW   0x07;
         MOVWF   0x1F;
         BCF     0x03,6;
         bsf     0x03,5;
      movlw   0x0F      ;0000 1111 en w
         movwf   0x05      ;Pongo RA0-RA3 a salidas
                           ; RA4-RA7 entradas
      movlw   0xFF      ;1111 1111 en w
         movwf   0x06      ;Pongo RB0-RB7 en entradas
     bcf     0x03,5    ;a banco 0
         bcf     0x05,0    ;inicializo RA0 en 0
         bsf     0x05,3         ; RA3 en 1 (SYNC) ENVIO   
         bsf     0x05,2         ; RA2 en 1 (DATOS)ENVIO
         bsf     0x05,1         ; RA1 en 1 (CLK)    ENVIO
..............................................

Eso es todo
Alguien sabe cual puede ser el prob? Muchas Gracias

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: Problema en mi programa
« Respuesta #1 en: 24 de Octubre de 2008, 00:54:31 »
Según el cambio estas colocando como entrada RA0-3 y RA4-7 como salida:

 movlw   0x0F      ;0000 1111 en w
 movwf   0x05      ;Pongo RA0-RA3 a salidas
                           ; RA4-RA7 entradas

Tal vez los pines que usas como entradas (RA0-3) no les has puesto sus resistencias pull-up (10K por ejemplo).

Si quieres que RA0-3 sea salida y RA4-7 sea entrada entonces debes hacer esto:

 movlw   0xF0      ;1111 0000 en w
 movwf   0x05      ;Pongo RA0-RA3 a salidas
                           ; RA4-RA7 entradas

Javicho.



Desconectado sansanoloko

  • PIC10
  • *
  • Mensajes: 48
Re: Problema en mi programa
« Respuesta #2 en: 24 de Octubre de 2008, 04:16:50 »
Holas laluchi!!

Te recomiendo que al momento de pegar un programa en assembler, ocupes los nombres de los registros en vez de las direcciones en hexa, ya que es mas amigable a la lectura y se entiende mas rápido lo que hace el código, y por lo mismo puedes obtener ayuda rapido.

Por lo que veo en tus programas, puedes tener conflictos con los comparadores análogos, que ocupan los pines 0 al 3 de puerto A (RA0 a RA3), y vienen por defecto activados, y dichos pines vienen como entradas analogicas.

Para utilizarlos como entrada o salida digital, debes configurarlos en el registro CMCON (dirección 0x1F del banco 0) con los bits CM0, CM1 y CM2 (0,1 y 2 respectivamente). Para dejar todo el puerto A como puerto digital, debes dejar estos bits en uno, según el cuadro que aparece en el datasheet, en el capítulo 10 "Comparator Module".

Espero te sirva de algo mi aporte, y saludos a quienes nos leen.


 

anything