Autor Tema: BSF y BCF en GPIO! no funcionan!  (Leído 2688 veces)

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

Desconectado Sin71111

  • PIC10
  • *
  • Mensajes: 1
BSF y BCF en GPIO! no funcionan!
« en: 31 de Julio de 2011, 03:04:53 »

Disculpen aqui les dejo esta pregunta xq no funciona este programa? he puesto la alternativa por imprimir el puerto entero en vez de bit a bit y perfecto pero me quede con la duda xq no funciona....

Aqui les dejo....

Programa que no funciona (al ejecutar bsf y bcf se borra el puerto!)



...
list p=12F629            ; list directive to define processor
   #include "p12F629.inc"       ; processor specific variable definitions
     processor   12F629
;
;   __CONFIG   _CP_OFF & _WDT_OFF    ; palabra de configuración
;ING Luis Arevalo

;***** DEFINICIÓN DE VARIABLES **************************************************

TEMP EQU   0x30
TEMPu EQU   0x31
CONTA      EQU   0X21
GPIO   EQU  0X05
TRISIO  EQU  0X85
CMCON   EQU 0X19
;***** CONSTANTES DEL PROGRAMA ***************************************************

;*********************************************************************************


;---------------------------------------------------------------------------------
;      Controlador de interrupción
;---------------------------------------------------------------------------------
   ORG   0x0000   
         Goto   main

   Org   0x0004   
         GOTO   main
         
   
;----------------------------------------------------------------------------------
;      Subrutina
;----------------------------------------------------------------------------------

       
;------------------------------------------------------------------------------
;      Programa principal
;---------------------------------------------------------------------------------




main   bsf      0x03,5         ;banco 1
      movlw   b'11111100'    ;OSCCAL
      movwf   0x90
      movlw   b'00000100'
         movwf   GPIO
      MOVLW    0X07         ;configurando reg CMCON
      MOVWF    CMCON   
      MOVWF    0x81         ;configuro el prescaler a max.
      CLRW

TY      bcf      0x03,5         ;BAnco 0
      CLRF   0x01
      clrf   GPIO
      call    DELAY_5
      BSf      GPIO,0            ;CAMBIAR MUERVE EL LITERAL AL PUERTO DESEADO ACTIVO BOMBA
      call    DELAY_5
       BSf      GPIO,1         ;CAMBIAR MUERVE EL LITERAL AL PUERTO DESEADO ACTIVO motor
      call    DELAY_5
       Bcf      GPIO,0             ;CAMBIAR MUERVE EL LITERAL AL PUERTO DESEADO desACTIVO BOMBA
      call    DELAY_5
      Bcf      GPIO,1        ;CAMBIAR MUERVE EL LITERAL AL PUERTO DESEADO desACTIVO motor
                call    pausa

      btfsS   GPIO,2
      GOTO TY
      goto fin


   

;----------------------------------------------------------------------------------
;      Subrutina DE RETARDO
;----------------------------------------------------------------------------------

DELAY_1   bsf         0x03,5   ;SUBRUTINA DE DEMORA DE 1 SEG
            
        movlw       b'00010110'
          movwf       TMR0
          bCf         0x03,5
          CLRF      TMR0
          movlw       b'01000000'
       movwf       CONTA      ;SE CARGA CONTA CON D'16'   
BUCLE1  clrf      0x01
BUCLE2  btfss       0X01,7   ;ESPERA A DESBORDARSE EL TMR0
        goto       BUCLE2;
        decfsz       CONTA;
        goto       BUCLE1;
         CLRW
      return 
pausa
DELAY_5
      call DELAY_1;
      call DELAY_1;
      call DELAY_1;
      call DELAY_1;
      call DELAY_1;
      return




fin
      End   

...
...



Aun no le encuentro que puede ser me he leido el datash y nada...

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: BSF y BCF en GPIO! no funcionan!
« Respuesta #1 en: 31 de Julio de 2011, 09:50:36 »
no veo que hayas configurado que pines son de entrada y cuales de salida con la instruccion:

movlw 0x...
tris    GPIO.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: BSF y BCF en GPIO! no funcionan!
« Respuesta #2 en: 31 de Julio de 2011, 14:49:24 »
Es curioso no me compila, pero no me da error, me pone esto:

Debug build of project `C:\Users\tapi\Desktop\PRUEBAS MPLAB\GPIO.ASM.mcp' started.
Language tool versions: mplink.exe v4.35
Preprocessor symbol `__DEBUG' is defined.
Sun Jul 31 19:39:06 2011
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Users\tapi\Desktop\PRUEBAS MPLAB\temp.asm" /q /p12F629 "GPIO.ASM" /l"GPIO.lst" /e"GPIO.err" /d__DEBUG=1
Could not spawn language tool.  Check command-line options.  (193)
A language-plugin exception occurred and was logged.
----------------------------------------------------------------------
Debug build of project `C:\Users\tapi\Desktop\PRUEBAS MPLAB\GPIO.ASM.mcp' failed.
Language tool versions: mplink.exe v4.35
Preprocessor symbol `__DEBUG' is defined.
Sun Jul 31 19:39:07 2011
----------------------------------------------------------------------
BUILD FAILED

De todos modos creo que el fallo esta en la configuracion del REG. CMCON, porque lo estas configurando en el banco 1, y esta en el banco 0

Citar
main   bsf      0x03,5         ;banco 1
      movlw   b'11111100'    ;OSCCAL
      movwf   0x90
      movlw   b'00000100'
         movwf   GPIO
      MOVLW    0X07         ;configurando reg CMCON
      MOVWF    CMCON   
      MOVWF    0x81         ;configuro el prescaler a max.
      CLRW

TY      bcf      0x03,5         ;BAnco 0

Si lo pones despues de la linea

TY      bcf      0x03,5         ;BAnco 0

Esposible que vaya bien, como no lo puedo simular, prueba tu.

Desconectado PulKon

  • PIC12
  • **
  • Mensajes: 70
Re: BSF y BCF en GPIO! no funcionan!
« Respuesta #3 en: 01 de Agosto de 2011, 18:39:43 »
Lo mismo me pasó con este PIC y creo no hay otra manera hay que hacerlo como te funcionó.

En mi programa lo tuve que poner asi:

Temporiza
   movlw   b'00000111'
   movwf   GPIO
;   bsf   GPIO,PER
;   bsf   GPIO,LEDC
;   bsf   GPIO,LEDP                      ; Encendemos LEDP   
   call   t500ms         ; Retardo de 0.5 seg.
   movlw   b'00000011'
   movwf   GPIO
;   bcf   GPIO,LEDP         ; Apagamos LEDP
   call   t500ms         ; Retardo de 0.5 seg.


etc...
La felicidad no consiste en tener lo que quieres, sino en querer lo que tienes.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: BSF y BCF en GPIO! no funcionan!
« Respuesta #4 en: 02 de Agosto de 2011, 06:33:14 »
Lo he simulado, desabilitando el WDT y configurando CMCON en el banco 0 y funciona perfecto. Hace poco en este mismo foro colabore con unos intermitentes para una moto, y usamos este mismo PIC y no dio ese problema, os dejo el enlace donde incluso hay un video de la Harley Davidson funcionando sin ningun problema, incluso unos consejos de Oshielos (fue quien lo grabo) de como se graba el PIC.

http://www.todopic.com.ar/foros/index.php?topic=32966.0

Aqui el codigo que va bien en el MPLAB, ojo solo lo probe en el simulador, pero tal y como estaba no va y asi si va.

Código: [Seleccionar]
list p=12F629            ; list directive to define processor
   #include "p12F629.inc"       ; processor specific variable definitions
     processor   12F629
;
;   __CONFIG   _CP_OFF & _WDT_OFF    ; palabra de configuración
;ING Luis Arevalo

;***** DEFINICIÓN DE VARIABLES **************************************************

TEMP EQU   0x30
TEMPu EQU   0x31
CONTA      EQU   0X21
GPIO   EQU  0X05
TRISIO  EQU  0X85
CMCON   EQU 0X19
;***** CONSTANTES DEL PROGRAMA ***************************************************

;*********************************************************************************


;---------------------------------------------------------------------------------
;      Controlador de interrupción
;---------------------------------------------------------------------------------
   ORG   0x0000   
         Goto   main

   Org   0x0004   
         GOTO   main
         
   
;----------------------------------------------------------------------------------
;      Subrutina
;----------------------------------------------------------------------------------

       
;------------------------------------------------------------------------------
;      Programa principal
;---------------------------------------------------------------------------------




main   bsf      0x03,5         ;banco 1
      movlw   b'11111100'    ;OSCCAL
      movwf   0x90
      movlw   b'00000100'
         movwf   GPIO
      MOVLW    0X07         ;configurando reg CMCON
       
      MOVWF    0x81         ;configuro el prescaler a max.
      CLRW

TY      bcf      0x03,5         ;BAnco 0
MOVLW    0X07         ;configurando reg CMCON
MOVWF    CMCON
      CLRF   0x01
      clrf   GPIO
      call    DELAY_5
      BSf      GPIO,0            ;CAMBIAR MUERVE EL LITERAL AL PUERTO DESEADO ACTIVO BOMBA
      call    DELAY_5
       BSf      GPIO,1         ;CAMBIAR MUERVE EL LITERAL AL PUERTO DESEADO ACTIVO motor
      call    DELAY_5
       Bcf      GPIO,0             ;CAMBIAR MUERVE EL LITERAL AL PUERTO DESEADO desACTIVO BOMBA
      call    DELAY_5
      Bcf      GPIO,1        ;CAMBIAR MUERVE EL LITERAL AL PUERTO DESEADO desACTIVO motor
                call    pausa

      btfsS   GPIO,2
      GOTO TY
      goto fin


   

;----------------------------------------------------------------------------------
;      Subrutina DE RETARDO
;----------------------------------------------------------------------------------

DELAY_1   bsf         0x03,5   ;SUBRUTINA DE DEMORA DE 1 SEG
           
        movlw       b'00010110'
          movwf       TMR0
          bCf         0x03,5
          CLRF      TMR0
          movlw       b'01000000'
       movwf       CONTA      ;SE CARGA CONTA CON D'16'   
BUCLE1  clrf      0x01
BUCLE2  btfss       0X01,7   ;ESPERA A DESBORDARSE EL TMR0
        goto       BUCLE2;
        decfsz       CONTA;
        goto       BUCLE1;
         CLRW
      return 
pausa
DELAY_5
      call DELAY_1;
      call DELAY_1;
      call DELAY_1;
      call DELAY_1;
      call DELAY_1;
      return




fin
      End   

Como ves el cambio es configurar CMCON en BANK 0.


 

anything