Autor Tema: Problemas PIC12F629 PTO GPIO  (Leído 3433 veces)

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

Desconectado Andres71

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 149
Problemas PIC12F629 PTO GPIO
« en: 03 de Agosto de 2006, 13:11:26 »
Saludos a todos, tengo problemas con este PIC , no puedo hacer
funcionar los pines 0 y 1 del pto GPIO, lo configuro como entradas
pero siempre me los lee en 0, ya hice de todo, configure los restantes
REG para ver si era un problema por ese lado y nada, aca esta el
codigo ASM, no es muy prolijo pero es un ejemplo, no uso INT, ni TMR0,
ni TMR1, ni Comparadores, nada, los tiempos los generos con retardos,
por favor ayuda, de antemano gracias, chauuuuuuuuuuuu

;Programa para alarma de moto, con  entrada de  inicio de encendido y entrada de panico


; pIC 12F629


GPIO   EQU      0X05
CMCON   EQU      0X19
TRISIO   EQU      0X85
STATUS   EQU      0X03
OPCION   EQU      0X81
PIR1   EQU      0X0C
PIE1   EQU      0X8C
RPO   EQU      0X05
WPU   EQU      0X95
IOC   EQU      0X96
OSCCAL   EQU      0X90
INTCON   EQU      0X8B
PDel0    EQU      0X20
PDel1    EQU      0X21
TEMPO   EQU      0X22
MULTI   EQU      0X23
PDel01    EQU      0X24
PDel11    EQU      0X25
PDel21    EQU      0X26





      ORG     0x000             ; processor reset vector
      GOTO    MAIN              ; go to beginning of program
      ORG     0x004
   
MAIN   CLRF   STATUS
      BSF      STATUS,RPO         ; BANCO 1
      MOVLW   0X80
      MOVWF   OPCION            ;DESHABILITO WEAK Y DEMAS
      CLRF   IOC
      CLRF   INTCON
      CLRF   PIE1
      CLRF   WPU   
      BCF      STATUS,RPO         ; BANCO 0
      CLRF   PIR1
      CLRF   GPIO
      CLRF   TEMPO
      CLRF   CMCON
      BSF      STATUS,RPO         ; BANCO 1
      MOVLW   0X3E
      MOVWF   TRISIO            ;CONFIGURO GPIO ASI: 0-SALIDA y 1-2-3-4-5 ENTRADAS
      BCF      STATUS,RPO         ; BANCO 0
      BCF      GPIO,0
      
START   BTFSC   GPIO,4
      GOTO   START
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      BTFSC   GPIO,4            ;PASARON 300mS???            
      GOTO   START
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      BTFSC   GPIO,4            ;PASARON 600mS???            
      GOTO   START
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      BTFSC   GPIO,4            ;PASARON 900mS???            
      GOTO   START
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      BTFSC   GPIO,4            ;PASARON 1200mS???            
      GOTO   START
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      BTFSC   GPIO,4            ;PASARON 1500mS???            
      GOTO   START
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      BTFSC   GPIO,4            ;PASARON 1800mS???            
      GOTO   START
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      BTFSC   GPIO,4            ;PASARON 2100mS???            
      GOTO   START
      BSF   GPIO,0            ;HABILITO SALIDA osea prendo
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE            ;ESPERO 0.5 SEGUNDOS DESPUES DE ENCENDIDO
      
ATRACO      BTFSC   GPIO,3
      GOTO   ATRACO            ;se activo boton panico?
      CALL   REBOTE
      CALL   REBOTE
      BTFSC   GPIO,3            ;confirmo
      GOTO   ATRACO                  
      GOTO   APAGAR            ;ok empiezo conteo tiempo
      
APAGAR      BTFSC   GPIO,1            ;reviso programacion tiempo
      GOTO    UNO            ;GPIO0=0 y GPIO1=0  = 15SEG
      BTFSC   GPIO,2            ;GPIO0=1 y GPIO1=0  = 30SEG
      GOTO   SEG45            ;GPIO0=0 y GPIO1=1  = 45SEG
      GOTO   SEG15            ;GPIO0=1 y GPIO1=1  = 60SEG

UNO      BTFSC   GPIO,2   
      GOTO   SEG60
      GOTO   SEG30

SEG15      MOVLW   .15
      MOVWF   TEMPO   
      GOTO   TIME

SEG30      MOVLW   .30
      MOVWF   TEMPO   
      GOTO   TIME

SEG45      MOVLW   .45
      MOVWF   TEMPO   
      GOTO   TIME

SEG60      MOVLW   .60
      MOVWF   TEMPO   
      GOTO   TIME
         

TIME      CALL   SEGUND
      DECFSZ   TEMPO,1
      GOTO   TIME            ;ACABARON LOS 15 SEGUNDOS Y APAGO

OFF      BTFSC   GPIO,5            ;ES LENTO O RAPIDO EL APAGADO??
      GOTO   LENTO
      GOTO   RAPIDO
      
LENTO      BCF   GPIO,0            ;apago
      CALL   REBOTE      
      CALL   REBOTE
      CALL   REBOTE
      BSF   GPIO,0            ;prendo
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      BCF   GPIO,0            ;apago
      CALL   REBOTE      
      CALL   REBOTE
      CALL   REBOTE
      BSF   GPIO,0            ;prendo
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      BCF   GPIO,0            ;apago
      CALL   REBOTE      
      CALL   REBOTE
      CALL   REBOTE
      BSF   GPIO,0            ;prendo
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      BCF   GPIO,0            ;apago
      CALL   REBOTE
      CALL   REBOTE      
      CALL   REBOTE
      BSF   GPIO,0            ;prendo
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      BCF   GPIO,0            ;apago
      CALL   REBOTE
      CALL   REBOTE      
      CALL   REBOTE
      BSF   GPIO,0            ;prendo
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      BCF   GPIO,0            ;apago
      CALL   REBOTE
      CALL   REBOTE      
      CALL   REBOTE
      BSF   GPIO,0
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      BCF   GPIO,0            ;apago
      CALL   REBOTE
      CALL   REBOTE      
      CALL   REBOTE
      BSF   GPIO,0            ;prendo
      CALL   REBOTE
      CALL   REBOTE   
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      BCF   GPIO,0            ;apago
      CALL   REBOTE
      CALL   REBOTE      
      CALL   REBOTE
      BSF   GPIO,0            ;prendo
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      CALL   REBOTE
      
RAPIDO      BCF   GPIO,0            
      GOTO   RAPIDO      ;apago y finalizo

            
      
REBOTE     movlw     .110      ; 1 set numero de repeticion  (B)
           movwf     PDel0     ; 1 |
PLoop1     movlw     .181      ; 1 set numero de repeticion  (A)
           movwf     PDel1     ; 1 |
PLoop2     clrwdt              ; 1 clear watchdog
           clrwdt              ; 1 ciclo delay
           decfsz    PDel1,1    ; 1 + (1) es el tiempo 0  ? (A)
           goto      PLoop2    ; 2 no, loop
           decfsz    PDel0,1    ; 1 + (1) es el tiempo 0  ? (B)
           goto      PLoop1    ; 2 no, loop
PDelL1     goto      PDelL2    ; 2 ciclos delay
PDelL2     goto      PDelL3    ; 2 ciclos delay
PDelL3     clrwdt              ; 1 ciclo delay
           return              ; 2+2 Fin.

SEGUND     movlw     .14       ; 1 set numero de repeticion  (C)
           movwf     PDel01     ; 1 |
PLoop01     movlw     .72       ; 1 set numero de repeticion  (B)
           movwf     PDel11     ; 1 |
PLoop11     movlw     .247      ; 1 set numero de repeticion  (A)
           movwf     PDel21     ; 1 |
PLoop21     clrwdt              ; 1 clear watchdog
           decfsz    PDel21, 1  ; 1 + (1) es el tiempo 0  ? (A)
           goto      PLoop21    ; 2 no, loop
           decfsz    PDel11,  1 ; 1 + (1) es el tiempo 0  ? (B)
           goto      PLoop11    ; 2 no, loop
           decfsz    PDel01,  1 ; 1 + (1) es el tiempo 0  ? (C)
           goto      PLoop01    ; 2 no, loop
PDelL11     goto      PDelL21         ; 2 ciclos delay
PDelL21     clrwdt              ; 1 ciclo delay
           return              ; 2+2 Fin.


       
           END
"Dice mas el necio cuando calla, que el sabio cuando habla"

ANDRES ALEGRIA
alegriaandres@gmail.com
andresalegria@hotmail.com

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Problemas PIC12F629 PTO GPIO
« Respuesta #1 en: 03 de Agosto de 2006, 13:41:08 »
hola!!

Saludos.

Lo que falla en tu programa es la configuracion , y es en lo siguiente :

-Tienes activados los comparadores.Lo que hiciste fue un reset en ellos , por lo ke siempre lees 0 , el modo
en el que los tienes trabajando es el 0(comparador reset).

-Para desactivarlo en vez de

CLRF   CMCON     configuralo asi      MOVLW     0x07           
                                                     MOVWF     CMCON 

                                           , el modo 7 es el que corresponde a comparador
                                           desactivado.

Sin más por el momento me despido , espero te sea de ayuda.

   ATTE.
FaBrIzZio                  :-)
« Última modificación: 03 de Agosto de 2006, 13:43:37 por AKENAFAB »

Desconectado Andres71

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 149
Re: Problemas PIC12F629 PTO GPIO
« Respuesta #2 en: 03 de Agosto de 2006, 13:53:34 »
Gracias por responder, lo probare y aviso, mil gracias, chauuuuuuuuuuuu
"Dice mas el necio cuando calla, que el sabio cuando habla"

ANDRES ALEGRIA
alegriaandres@gmail.com
andresalegria@hotmail.com

Desconectado Andres71

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 149
Re: Problemas PIC12F629 PTO GPIO
« Respuesta #3 en: 05 de Agosto de 2006, 12:28:48 »
Saludos, Akenafab, efectivamente es era el problema, lo cambie y ya funciona ok, la verdad tenia el datasheet pero me paso por alto ese detalle, ya mirandolo bien me di cuenta del error, mil gracias por tu ayuda, chauuuuuuuuuuuuu
"Dice mas el necio cuando calla, que el sabio cuando habla"

ANDRES ALEGRIA
alegriaandres@gmail.com
andresalegria@hotmail.com

Desconectado dr cerebro

  • PIC10
  • *
  • Mensajes: 42
    • Solo para la Gloria de Dios
Re: Problemas PIC12F629 PTO GPIO
« Respuesta #4 en: 11 de Octubre de 2011, 17:17:43 »
hola!!

Saludos.

Lo que falla en tu programa es la configuracion , y es en lo siguiente :

-Tienes activados los comparadores.Lo que hiciste fue un reset en ellos , por lo ke siempre lees 0 , el modo
en el que los tienes trabajando es el 0(comparador reset).

-Para desactivarlo en vez de

CLRF   CMCON     configuralo asi      MOVLW     0x07            
                                                     MOVWF     CMCON  

                                           , el modo 7 es el que corresponde a comparador
                                           desactivado.

Sin más por el momento me despido , espero te sea de ayuda.

   ATTE.
FaBrIzZio                  :-)


Hola yo tengo un problema similar pero esstoy empleando el pic12f615. Programando en el ide de Microcode Studio

El programa que he creado es este, solo me lee ceros.

Código: [Seleccionar]
define OSC 4

SYMBOL Led = gpio.5
input gpio.5

inicio:    
    if gpio.5 = 1 then
        high led
    endif
    
    if gpio.5 = 0 then
        low led
    endif    
    goto inicio
end

Inicio:
    Lcdcmdout LcdLine1Clear
    WaitMs 1000
    Lcdout "Hogar, dulce hogar."
    WaitMs 1000
goto inicio