Autor Tema: Problema con RB6  (Leído 4027 veces)

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

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Problema con RB6
« en: 16 de Junio de 2009, 15:54:22 »
Hola grupo, se me está presentando un problema que en mis años no lo había visto:

Tengo una aplicación con un teclado matricial, la parte alta la utilizo como entradas (pull-up), la parte baja como salidas, la fila que se chequea por RB6 casi siempre funciona mal cuando presiona una tecla correspondiente "el pic se enloquece, a veces pone todos los pines del puerto B como entradas", como me queda el rb0 libre,  intercambio la fila que se chequea por rb6 con el rb0 y todo funciona perfecto.
En proteus el circuito funciona perfecto aún con RB6.

Duda, será que por ser el rb6 entrada de clock serial para la programación se ve afectada cuando recibe una señal a una frecuencia más o menos alta (el pic está trabajando a 4Mhz)

Le ha sucedido esto al alguien...

mil gracias.

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Problema con RB6
« Respuesta #1 en: 16 de Junio de 2009, 17:41:27 »
Probaste con otro pic o pusiste una resitencia externa a vcc en ese pin???, ha pasado que en el mismo hard interno del pic hay problemas, recuerdo que un maestro no confía en las Pullups  :mrgreen:

Saludos.
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Problema con RB6
« Respuesta #2 en: 16 de Junio de 2009, 18:20:08 »
Hola Kallitos, gracias por responderme; si, ya había probado con una pull-up externa, también he probado con 3 pic (16F876A) y ocurre lo mismo; algo particular es que si toco el pin RB6 con la punta de un destornillador el PIC se enloquece, cosa que no ocurre con el resto de pines del puerto B.

gracias

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Problema con RB6
« Respuesta #3 en: 16 de Junio de 2009, 19:08:39 »
Revisa tu fuente de alimentación, trata de eliminar ruido y/o interferencias que se puedan presentar.
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Problema con RB6
« Respuesta #4 en: 17 de Junio de 2009, 12:19:06 »
Kallitos, ya he probado con tres fuentes y ocurre lo mismo, esto es demasiado extraño, a mi me había sucedido que en el 12f675 y 16f628 cuando utilizo el pin de MCLR como entrada general este pin es demasiado susceptible al ruido, el pic se reinicia constantemente, al cambiar de pin el problema se soluciona, yo creo que esto que me ocurre ahora es un defecto de estos PIC

hasta pronto.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problema con RB6
« Respuesta #5 en: 17 de Junio de 2009, 15:39:38 »
Que fuses estas usando? esta desactivado el LVP?
El papel lo aguanta todo

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Problema con RB6
« Respuesta #6 en: 17 de Junio de 2009, 16:01:28 »
Hola MLO, el LVP está deshabilitado, sólo configuro el watchdog, power-up, brown-out.
El problema lo presenta montado en el circuito impreso y también en el proto-board

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problema con RB6
« Respuesta #7 en: 18 de Junio de 2009, 00:05:50 »
La fuente es con puente de diodos o con diodos reguladores? A mi me paso algo similar y fue problema de la fuente de alimentacion.
El papel lo aguanta todo

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Problema con RB6
« Respuesta #8 en: 18 de Junio de 2009, 09:52:39 »
Hola MLO, la fuente es con puente rectificador y regulador 7805

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problema con RB6
« Respuesta #9 en: 18 de Junio de 2009, 10:14:44 »
Hola.

El modo DEBUG tambien esta deshabilitado?
El papel lo aguanta todo

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Problema con RB6
« Respuesta #10 en: 18 de Junio de 2009, 11:58:19 »
Hola MLO, la verdad no comprendo a que modo debug te refieres; lo cierto es que lo he depurado pasa a paso muchas veces en el mplab, y tambien con proteus y acá no aparece el problema, es sólo cuando se monta en el circuito.

gracias.

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1256
Re: Problema con RB6
« Respuesta #11 en: 18 de Junio de 2009, 12:54:15 »
Coloca el codigo, posiblemente este alli el problema.
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problema con RB6
« Respuesta #12 en: 18 de Junio de 2009, 14:54:14 »
Me refiero a la palabra de configuracion:

El papel lo aguanta todo

Desconectado Diego E.

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1086
Re: Problema con RB6
« Respuesta #13 en: 18 de Junio de 2009, 15:58:20 »
MLO, la verdad yo nunca utilizo ese registro, hasta donde tengo entendido esta palabra de configuración la carga el programador, ahora si el debug estuviera activo no afectaría también el rb7 ?, cosa que no sucede el rb7 trabaja bien.

De todos modos les reitero mis agradecimientos, en última instancia cambio el rb6 por el rb0 ya que de esta forma me funciona bién, ya lo he probado.

mil gracias.

este es el código:

;==============================================================================
      org   00
       goto   inicio
;==============================================================================
      org   0x04      ;VECTOR DE LA INTERRUPCION POR
               ;COMUNICACION
      movwf   res_w
      movf   status,w
      movwf   res_status
      bcf   status,rp0      
;==================
      call   recibe
      call   decodifica
;==================      
      bcf   intcon,2
      movf   res_status,w
      movwf   status
      movf   res_w,w
      
      retfie 
;==============================================================================
;==============================================================================
recibe      bsf   status,rp0   ;RUTINA GENERAL DE RECEPCION DE DATOS
      bsf   trisa,4
      bcf   status,rp0
;==================
      clrf   reg_comunica1
      clrf   reg_comunica2
      
      movlw   d'16'
      movwf   conta1
      
      call   t_100Us
      call   t_100Us   
;==================
rec_otro_bit   call   t_400Us
      btfss   porta,4
      bcf   status,c
      btfsc   porta,4
      bsf   status,c
      
      rlf   reg_comunica1,f
      rlf   reg_comunica2,f
      decfsz   conta1,f
      goto   rec_otro_bit
      
      call   t_100Us
      call   t_100Us
      call   t_100Us
      
      movlw   h'ff'
      movwf   tmr0
      
      bcf   intcon,2
      
      return
;==============================================================================
;==============================================================================
decodifica   btfss   reg_comunica2,7   ;RUTINA QUE DECODIFICA EL DATO QUE LE
      return            ;LLEGA DE LOS LED
      movf   reg_comunica1,w
      movwf   reg_led1
      movf   reg_comunica2,w
      movwf   reg_led2
      
      bsf   bandera,3      ;BANDERA QUE INDICA QUE EL MICRO
                  ;DE LA TARJETA DE POTENCIA YA ENVIO
      return
;==============================================================================
t_100Us      movlw   d'23'      ;RETARDO DE 100 MICRO-SEGUNDOS
      movwf   conta
      
      nop
      decfsz   conta,f
      goto   $-2
      
      nop
      nop
      nop
      return
;==============================================================================
t_400Us      movlw   d'98'      ;RETARDO DE 400 MICRO-SEGUNDOS
      movwf   conta
      
      nop
      decfsz   conta,f
      goto   $-2
      
      nop
      nop
      nop
      return
;==============================================================================
t_1ms      movlw   d'250'
      movwf   conta3
      
      nop
      decfsz   conta3,f
      goto   $-2
      
      return
;==============================================================================
t_100ms   movlw   d'250'
      movwf   conta3
      
      call   t_400Us
      decfsz   conta3,f
      goto   $-2
      
      return
;==============================================================================
;==============================================================================
ver_solicitud   btfss   bandera,3   ;solo envia si ha recibido datos
      goto   $-1
      bcf   bandera,3
            
      movlw   d'80'      ;RUTINA QUE PREGUNTA SI HAY OTRO
      movwf   conta3      ;INTEGRADO SOLICITANDO COMUNICACION      
      btfss   porta,4
      goto   $-3
      decfsz   conta3,f
      goto   $-3

      return   
;==============================================================================
enviar_pre   movwf   respaldo1
      bsf   respaldo1,5   ;BIT QUE INDICA TECLA PRESIONADA
      
      goto   $+2
      
enviar_apa   movwf   respaldo1
;==================
      call   ver_solicitud   ;SE PREGUNTA SI HAY SOLICITUD DE
               ;COMUNICACION
      movlw   d'5'      ;TIEMPO DE 5 ms ANTES DE ENVIAR EL DATO
      movwf   conta1
      call   t_1ms
      decfsz   conta1,f
      goto   $-2
         
;==================
      bcf   intcon,7   
         
      bsf   status,rp0   ;PUERTO COMO SALIDA
      bcf   trisa,4
      bcf   status,rp0
      bsf   porta,4
;==================
      movf   respaldo1,w
      movwf   reg_comunica1
      movf   respaldo2,w
      movwf   reg_comunica2
      
      movlw   b'01010000'   ;CODIGO QUE INDICA QUE TRANSMITE EL MICRO
      iorwf   reg_comunica2,f   ;DE LOS MANDOS
;==================      
      movlw   d'16'
      movwf   conta1
;==================      
      bcf   serial      ;PULSO DE INICIO      
      call   t_400Us
;==================      
env_otro_bit   rlf   reg_comunica1,f
      rlf   reg_comunica2,f      
      btfss   status,c
      bcf   serial
      btfsc   status,c
      bsf   serial
      
      call   t_400Us
      
      decfsz   conta1,f
      goto   env_otro_bit
;==================   
      bsf   serial      ;PULSO DE FINAL
      
      bsf   status,rp0
      bsf   trisa,4
      bcf   status,rp0
      
      bcf   intcon,2
      bsf   intcon,7
;==================   
      movlw   h'ff'
      movwf   tmr0
      
      return         
;==============================================================================
;==============================================================================      
acti_led      btfss   reg_led1,0   ;SE ACTIVA LED DE ESPALDAR
      bsf   led_esp
      btfsc   reg_led1,0
      bcf   led_esp
      
      btfss   reg_led1,1   ;SE ACTIVA LED DE PIES
      bsf   led_pie
      btfsc   reg_led1,1
      bcf   led_pie
      
      btfss   reg_led1,2   ;SE ACTIVA LED DE CAMA
      bsf   led_alt
      btfsc   reg_led1,2
      bcf   led_alt
      
      btfss   reg_led1,3   ;SE ACTIVA LED DE TREN
      bsf   led_tren
      btfsc   reg_led1,3
      bcf   led_tren
      
      btfss   reg_led1,4   ;SE ACTIVA LED LATERALIZACION
      bsf   led_late
      btfsc   reg_led1,4
      bcf   led_late
      
      btfss   reg_led1,5   ;SE ACTIVA LED DE SILLA
      bsf   led_silla
      btfsc   reg_led1,5
      bcf   led_silla
      
      btfss   reg_led1,6   ;SE ACTIVA LED DE ENFERMERA
      bsf   led_enf
      btfsc   reg_led1,6
      bcf   led_enf
      
      btfss   reg_led1,7   ;SE ACTIVA LED DE UPS
      bsf   led_ups
      btfsc   reg_led1,7
      bcf   led_ups
      
      btfss   reg_led2,0   ;SE ACTIVA LED DE ENCENDIDO
      bsf   led_enc
      btfsc   reg_led2,0
      bcf   led_enc
      
      btfss   reg_led2,1   ;SE ACTIVA LED DE TECLA
      bsf   led_tecla
      btfsc   reg_led2,1
      bcf   led_tecla
      
      return
;=============================================================================
apa_banderas   decfsz   con_bande,f   ;BASE DE TIEMPO DE 0.1 Sg PARA APAGAR LAS
      return         ;BANDERA DE LAS TECLAS
      
      movlw   d'45'
      movwf   con_bande
;==================
      call   apa_ban_ind
      call   apa_ban_dir
      call   apa_ban_enf
      call   apa_ban_blo
      call   apa_ban_auto
      call   apa_ban_cpr
      call   apa_ban_silla
      call   apa_ban_cont
      call   apa_ban_a_e
      call   apa_ban_d_e
      call   apa_ban_a_p
      call   apa_ban_d_p
      call   apa_ban_a_c
      call   apa_ban_d_c
      call   apa_ban_tren
      call   apa_ban_tren_i
      call   apa_ban_late_d
      call   apa_ban_late_i
      
      return
;=============================================================================
apa_ban_env   incf   con_env,f   ;pasados 2 ciclos apaga la bandera que
      movlw   d'2'      ;sincroniza la comunicación
      xorwf   con_env,w
      btfss   status,z
      return
      clrf   con_env
      
      bcf   bandera,3
      return
;=============================================================================
apa_ban_ind   btfsc   bandera3,ind   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_ind,f   ;SU CONTRARIA
      return
      bcf   bandera1,ind
      return
;======================================
apa_ban_dir   btfsc   bandera3,dir   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_dir,f   ;SU CONTRARIA
      return
      bcf   bandera1,dir
      return
;======================================
apa_ban_enf   btfsc   bandera3,enf   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_enf,f   ;SU CONTRARIA
      return
      bcf   bandera1,enf
      return
;======================================
apa_ban_blo   btfsc   bandera3,blo   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_blo,f   ;SU CONTRARIA
      return
      bcf   bandera1,blo
      return
;======================================
apa_ban_auto   btfsc   bandera3,auto   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_auto,f   ;SU CONTRARIA
      return
      bcf   bandera1,auto
      return
;======================================
apa_ban_cpr   btfsc   bandera3,cpr   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_cpr,f   ;SU CONTRARIA
      return
      bcf   bandera1,cpr
      return
;======================================
apa_ban_silla   btfsc   bandera3,silla   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_silla,f   ;SU CONTRARIA
      return
      bcf   bandera1,silla
      return
;======================================
apa_ban_cont   btfsc   bandera3,cont   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_cont,f   ;SU CONTRARIA
      return
      bcf   bandera1,cont
      return
;======================================
apa_ban_a_e   btfsc   bandera4,a_e   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_a_e,f   ;SU CONTRARIA
      return
      bcf   bandera2,a_e
      return
;======================================
apa_ban_d_e   btfsc   bandera4,d_e   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_d_e,f   ;SU CONTRARIA
      return
      bcf   bandera2,d_e
      return
;======================================
apa_ban_a_p   btfsc   bandera4,a_p   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_a_p,f   ;SU CONTRARIA
      return
      bcf   bandera2,a_p
      return
;======================================
apa_ban_d_p   btfsc   bandera4,d_p   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_d_p,f   ;SU CONTRARIA
      return
      bcf   bandera2,d_p
      return
;======================================
apa_ban_a_c   btfsc   bandera4,a_c   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_a_c,f   ;SU CONTRARIA
      return
      bcf   bandera2,a_c
      return
;======================================
apa_ban_d_c   btfsc   bandera4,d_c   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_d_c,f   ;SU CONTRARIA
      return
      bcf   bandera2,d_c
      return
;======================================
apa_ban_tren   btfsc   bandera4,tren   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_tren,f   ;SU CONTRARIA
      return
      bcf   bandera2,tren
      return
;======================================
apa_ban_tren_i   btfsc   bandera4,tren_i   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_tren_i,f   ;SU CONTRARIA
      return
      bcf   bandera2,tren_i
      return
;======================================
apa_ban_late_d   btfsc   bandera6,lat_d   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_late_d,f   ;SU CONTRARIA
      return
      bcf   bandera5,lat_d
      return
;======================================
apa_ban_late_i   btfsc   bandera6,lat_i   ;TIEMPO QUE TARDA EN APAGAR LA BANDERA
      return         ;PARA HABILITAR NUEVAMENTE LA FUNCION Y
      decfsz   con_late_i,f   ;SU CONTRARIA
      return
      bcf   bandera5,lat_i
      return
;==============================================================================
pre_ind      btfss   portb,5
      btfsc   bandera1,ind
      return
      bsf   bandera1,ind
      bsf   bandera3,ind
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_ind
      
      movlw   d'0'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_ind      btfss   bandera3,ind
      return
      bcf   bandera3,ind
      
      movlw   d'0'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return      
;==============================================================================
pre_dir      btfss   portb,5
      btfsc   bandera1,dir
      return
      bsf   bandera1,dir
      bsf   bandera3,dir
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_dir
      
      movlw   d'1'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_dir      btfss   bandera3,dir
      return
      bcf   bandera3,dir
      
      movlw   d'1'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return      
;==============================================================================
pre_enf      btfss   portb,5
      btfsc   bandera1,enf
      return
      bsf   bandera1,enf
      bsf   bandera3,enf
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_enf
      
      movlw   d'2'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_enf      btfss   bandera3,enf
      return
      bcf   bandera3,enf
      
      movlw   d'2'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return      
;==============================================================================
pre_blo      btfss   portb,4
      btfsc   bandera1,blo
      return
      bsf   bandera1,blo
      bsf   bandera3,blo
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_blo
      
      movlw   d'3'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_blo      btfss   bandera3,blo
      return
      bcf   bandera3,blo
      
      movlw   d'3'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return      
;==============================================================================
pre_auto   btfss   portb,5
      btfsc   bandera1,auto
      return
      bsf   bandera1,auto
      bsf   bandera3,auto
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_auto
      
      movlw   d'4'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_auto   btfss   bandera3,auto
      return
      bcf   bandera3,auto
      
      movlw   d'4'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return      
;==============================================================================
pre_cpr      btfss   portb,4
      btfsc   bandera1,cpr
      return
      bsf   bandera1,cpr
      bsf   bandera3,cpr
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_cpr
      
      movlw   d'5'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_cpr      btfss   bandera3,cpr
      return
      bcf   bandera3,cpr
      
      movlw   d'5'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return      
;==============================================================================
pre_silla      btfss   portb,4
      btfsc   bandera1,silla
      return
      bsf   bandera1,silla
      bsf   bandera3,silla
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_silla
      
      movlw   d'6'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_silla   btfss   bandera3,silla
      return
      bcf   bandera3,silla
      
      movlw   d'6'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return      
;==============================================================================
pre_cont   btfss   portb,4
      btfsc   bandera1,cont
      return
      bsf   bandera1,cont
      bsf   bandera3,cont
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_cont
      
      movlw   d'7'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_cont   btfss   bandera3,cont
      return
      bcf   bandera3,cont
      
      movlw   d'7'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return      
;==============================================================================
pre_a_e      btfss   portb,3
      btfsc   bandera2,a_e
      return
      bsf   bandera2,a_e
      bsf   bandera4,a_e
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_a_e
      
      movlw   d'8'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_a_e   btfss   bandera4,a_e
      return
      bcf   bandera4,a_e
      
      movlw   d'8'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return
;==============================================================================
pre_d_e      btfss   portb,3
      btfsc   bandera2,d_e
      return
      bsf   bandera2,d_e
      bsf   bandera4,d_e
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_d_e
      
      movlw   d'9'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_d_e   btfss   bandera4,d_e
      return
      bcf   bandera4,d_e
      
      movlw   d'9'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return
;==============================================================================
pre_a_p      btfss   portb,3
      btfsc   bandera2,a_p
      return
      bsf   bandera2,a_p
      bsf   bandera4,a_p
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_a_p
      
      movlw   d'10'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_a_p   btfss   bandera4,a_p
      return
      bcf   bandera4,a_p
      
      movlw   d'10'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return
;==============================================================================
pre_d_p      btfss   portb,3
      btfsc   bandera2,d_p
      return
      bsf   bandera2,d_p
      bsf   bandera4,d_p
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_d_p
      
      movlw   d'11'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_d_p   btfss   bandera4,d_p
      return
      bcf   bandera4,d_p
      
      movlw   d'11'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return
;==============================================================================
pre_a_c      btfss   portb,6
      btfsc   bandera2,a_c
      return
      bsf   bandera2,a_c
      bsf   bandera4,a_c
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_a_c
      
      movlw   d'12'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_a_c   btfss   bandera4,a_c
      return
      bcf   bandera4,a_c
      
      movlw   d'12'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return
;==============================================================================
pre_d_c      btfss   portb,6
      btfsc   bandera2,d_c
      return
      bsf   bandera2,d_c
      bsf   bandera4,d_c
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_d_c
      
      movlw   d'13'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_d_c   btfss   bandera4,d_c
      return
      bcf   bandera4,d_c
      
      movlw   d'13'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return
;==============================================================================
pre_tren   btfss   portb,6
      btfsc   bandera2,tren
      return
      bsf   bandera2,tren
      bsf   bandera4,tren
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_tren
      
      movlw   d'14'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_tren   btfss   bandera4,tren
      return
      bcf   bandera4,tren
      
      movlw   d'14'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return
;==============================================================================
pre_tren_i   btfss   portb,6
      btfsc   bandera2,tren_i
      return
      bsf   bandera2,tren_i
      bsf   bandera4,tren_i
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_tren_i
      
      movlw   d'15'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_tren_i   btfss   bandera4,tren_i
      return
      bcf   bandera4,tren_i
      
      movlw   d'15'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return
;==============================================================================
pre_lat_der   btfss   portb,7
      btfsc   bandera5,lat_d
      return
      bsf   bandera5,lat_d
      bsf   bandera6,lat_d
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_late_d
      
      movlw   d'16'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_lat_der   btfss   bandera6,lat_d
      return
      bcf   bandera6,lat_d
      
      movlw   d'16'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return
;==============================================================================
pre_lat_izq   btfss   portb,7
      btfsc   bandera5,lat_i
      return
      bsf   bandera5,lat_i
      bsf   bandera6,lat_i
      
      movlw   d'5'      ;RETARDO DE ANTI-REBOTE
      movwf   con_late_i
      
      movlw   d'17'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_pre
      
      return
;==================
apa_lat_izq   btfss   bandera6,lat_i
      return
      bcf   bandera6,lat_i
      
      movlw   d'17'      ;SE CARGA EL VALOR DE LA TECLA
      call   enviar_apa
      
      return
;==============================================================================
;==============================================================================
teclado      bcf   portc,6
      call   t_400Us
      
      btfsc   portb,3
      call   apa_d_p
      call   pre_d_p
      
      btfsc   portb,4
      call   apa_cont
      call   pre_cont
      
      btfsc   portb,5
      call   apa_ind
      call   pre_ind   
      
      btfsc   portb,6
      call   apa_tren_i
      call   pre_tren_i
      
      btfsc   portb,7
      call   apa_lat_izq
      call   pre_lat_izq
      
      bsf   portc,6
      call   t_100Us
;==============================
      bcf   portc,7
      call   t_400Us
      
      btfsc   portb,3
      call   apa_a_p
      call   pre_a_p
      
      btfsc   portb,4
      call   apa_blo
      call   pre_blo
      
      btfsc   portb,5
      call   apa_dir
      call   pre_dir
      
      btfsc   portb,6
      call   apa_tren
      call   pre_tren
      
      btfsc   portb,7
      call   apa_lat_der
      call   pre_lat_der
      
      bsf   portc,7
      call   t_100Us
;==============================
      bcf   portb,1
      call   t_400Us
      
      btfsc   portb,3
      call   apa_d_e
      call   pre_d_e
      
      btfsc   portb,4
      call   apa_silla
      call   pre_silla
      
      btfsc   portb,5
      call   apa_enf
      call   pre_enf
      
      btfsc   portb,6
      call   apa_d_c
      call   pre_d_c
      
      ;btfsc   portb,7
      
      bsf   portb,1
      call   t_100Us
;==============================
      bcf   portb,2
      call   t_400Us
      
      btfsc   portb,3
      call   apa_a_e
      call   pre_a_e
      
      btfsc   portb,4
      call   apa_cpr
      call   pre_cpr
      
      btfsc   portb,5
      call   apa_auto
      call   pre_auto
      
      btfsc   portb,6
      call   apa_a_c
      call   pre_a_c
      
      ;btfsc   portb,7
      
      bsf   portb,2
      call   t_100Us
;=======================================
      call   apa_banderas   
      
      call   apa_ban_env
      call   acti_led
;=======================================
      btfss   bandera,0   ;EVENTOS QUE SE REALIZAN CADA
      goto   teclado      ;0.5 SEGUNDOS
      bcf   bandera,0
;=======================================
      btfss   bandera,1   ;EVENTOS QUE SE REALIZAN CADA
      goto   teclado      ;1 SEGUNDO
      bcf   bandera,1
;=======================================
      goto    teclado      
      
;==============================================================================
;==============================================================================
inicio      call   t_1ms

      bsf   status,rp0

      movlw   0x07
      movwf   adcon1
      
      movlw   b'11110000'
      movwf   trisa
      
      movlw   b'11111001'
      movwf   trisb
      
      clrf   trisc
      
      movlw   b'00111100'   ;SE CONFIGURA EL TMR0
      movwf   option_reg
      
      bcf   status,rp0
      
      movlw   b'10100000'
      movwf   intcon
;==============================================================================      
      movlw   b'11111111'
      movwf   porta
      movwf   portb
      movwf   portc
;==============================================================================
       movlw   0x21      ;APARTIR DE QUE POSICION SE VA
      movwf   fsr      ;A BORRAR LA RAM

      movlw   0x4f      ;NUMERO DE REGISTROS A BORRAR
      movwf   conta
borre      clrf   dir_ind      ;BORRADO DE RAM
      incf   fsr,f
      decfsz   conta,f
      goto   borre
;==============================================================================
      movlw   h'ff'
      movwf   tmr0
      
      goto   teclado      
;==============================================================================               
;==============================================================================
;==============================================================================
      end

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Problema con RB6
« Respuesta #14 en: 18 de Junio de 2009, 16:13:59 »
Ok.

El papel lo aguanta todo


 

anything