Autor Tema: Ayuda: Interrupcion RBIE, pulsadores y leds  (Leído 1518 veces)

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

Desconectado wachapori65

  • PIC10
  • *
  • Mensajes: 31
Ayuda: Interrupcion RBIE, pulsadores y leds
« en: 07 de Marzo de 2011, 22:25:49 »
Hola, estoy haciendo un programa de comunicacion serial y pulsadores.  Lo de comunicacion serial ya está, solo que deseo agregarle unos pulsadores (push-buttons) en el puerto B de un Pic16f84A, solo ques estaba haciendolo, pero a la hora de implementar no pasa nada.
Utilizo unas librerias del libro de Desarrollo de proyectos.

Código: ASM
  1. ; ZONA DE DATOS **********************************************************************
  2.  
  3.         __CONFIG   _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
  4.         LIST       P=16F84A
  5.         INCLUDE  <P16F84A.INC>
  6.         ;
  7. #DEFINE  Salida1        PORTB,0         ; Define dónde se sitúan las salidas.
  8. #DEFINE  Salida2        PORTB,1
  9. #DEFINE  Salida3        PORTB,2
  10. #DEFINE  Salida4        PORTB,3        
  11. #DEFINE  Entrada1       PORTB,4         ; Entradas PORTB
  12. #DEFINE  Entrada2       PORTB,5
  13. #DEFINE  Entrada3       PORTB,6
  14. #DEFINE  Entrada4       PORTB,7
  15.                                        
  16.         org     0x00
  17.         goto    Inicio
  18.         org     0x04
  19.         goto    Int_PortB
  20.         org     0x05
  21. ; ZONA DE CÓDIGOS ********************************************************************
  22. ;
  23. Inicio 
  24.         bsf     STATUS,RP0              ; Configura como salidas las 4 líneas del
  25.         movlw   b'11110000'             ; del Puerto B respetando la configuración
  26.         movfw   TRISB
  27.         bsf     OPTION_REG,NOT_RBPU     ;Habilita pull-ups
  28.         bsf     OPTION_REG,INTEDG       ;Por flanco descendente(al soltar boton)
  29.         bcf     STATUS,RP0
  30.         clrf    PORTA
  31.         clrf    PORTB
  32.         ;----
  33.         bsf     INTCON,GIE              ;Habilita interrupciones en gral
  34.         bsf     INTCON,RBIE             ;por msb del portb
  35.         bcf     INTCON,RBIF             ;limpia bandera de interrupcion del portb
  36.         ;----
  37. Principal
  38.         movlw   b'00000001'
  39.         movwf   PORTA
  40.         call    Retardo_500ms
  41.         movfw   0x00
  42.         movwf   PORTA
  43.         sleep
  44.         goto    Principal
  45. ;-----
  46. Apagado
  47.         movlw   0x00
  48.         movwf   PORTB
  49.         ;movlw  MensajeApagado
  50.         goto    Salida_IntPortB
  51. Enc_Num1
  52.         movlw   0x01
  53.         movwf   PORTB
  54.         ;movlw  MensajeBUS1
  55.         goto    Salida_IntPortB
  56. Enc_Num2
  57.         movlw   0x02
  58.         movwf   PORTB
  59.         ;movlw  MensajeBUS2
  60.         goto    Salida_IntPortB
  61. Enc_Num3
  62.         movlw   0x04
  63.         movwf   PORTB  
  64.         ;movlw  MensajeBUS3
  65.         goto    Salida_IntPortB
  66. Enc_Num4
  67.         movlw   0x00
  68.         goto    Salida_IntPortB
  69. ;---------------------------
  70. ; Subrutina Interrupcion del puerto B
  71. Int_PortB
  72.         bcf     INTCON,GIE
  73. ChequeoEntrada
  74.         btfsc   Entrada1
  75.         goto    $+3
  76.         call    Bounce_PortB
  77.         call    Enc_Num1
  78.         ;--------
  79.         btfsc   Entrada2
  80.         goto    $+3
  81.         call    Bounce_PortB
  82.         call    Enc_Num2
  83.         ;--------
  84.         btfsc   Entrada3
  85.         goto    $+3
  86.         call    Bounce_PortB
  87.         call    Enc_Num3
  88.         ;--------
  89.         btfsc   Entrada4
  90.         goto    $+3
  91.         call    Bounce_PortB
  92.         call    Enc_Num3
  93.         goto    Salida_IntPortB
  94. ;----
  95. ;rutina antirrebotes
  96. Bounce_PortB
  97.         btfss   Entrada1
  98.         goto Bounce_PortB
  99.         btfss   Entrada2
  100.         goto Bounce_PortB
  101.         btfss   Entrada3
  102.         goto Bounce_PortB
  103.         btfss   Entrada4
  104.         goto Bounce_PortB
  105.         return
  106. Salida_IntPortB
  107.         bcf     INTCON,RBIF
  108.         bsf     INTCON,GIE
  109.         RETFIE
  110.  
  111. ;       INCLUDE  <RS232.INC>
  112. ;       INCLUDE  <RS232MEN.INC>
  113.         INCLUDE  <RETARDOS.INC>
  114.         END

Aqui el circuito:


Hay infinidad del circuitos y códigos en la red implementables, pero no es la misma que uno por cuenta propia desee realizar el suyo propio, al final no cuesta nada piratear, o fusilarse uno, como aqui decimos, ya que esta tan de moda.

Aun asi como es costumbre le voy a seguir moviendo a ver que veo anormal.
Gracias y saludos desde Sonora, México :3