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.
; ZONA DE DATOS **********************************************************************
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A
INCLUDE <P16F84A.INC>
;
#DEFINE Salida1 PORTB,0 ; Define dónde se sitúan las salidas.
#DEFINE Salida2 PORTB,1
#DEFINE Salida3 PORTB,2
#DEFINE Salida4 PORTB,3
#DEFINE Entrada1 PORTB,4 ; Entradas PORTB
#DEFINE Entrada2 PORTB,5
#DEFINE Entrada3 PORTB,6
#DEFINE Entrada4 PORTB,7
org 0x00
goto Inicio
org 0x04
goto Int_PortB
org 0x05
; ZONA DE CÓDIGOS ********************************************************************
;
Inicio
bsf STATUS,RP0 ; Configura como salidas las 4 líneas del
movlw b'11110000' ; del Puerto B respetando la configuración
movfw TRISB
bsf OPTION_REG,NOT_RBPU ;Habilita pull-ups
bsf OPTION_REG,INTEDG ;Por flanco descendente(al soltar boton)
bcf STATUS,RP0
clrf PORTA
clrf PORTB
;----
bsf INTCON,GIE ;Habilita interrupciones en gral
bsf INTCON,RBIE ;por msb del portb
bcf INTCON,RBIF ;limpia bandera de interrupcion del portb
;----
Principal
movlw b'00000001'
movwf PORTA
call Retardo_500ms
movfw 0x00
movwf PORTA
sleep
goto Principal
;-----
Apagado
movlw 0x00
movwf PORTB
;movlw MensajeApagado
goto Salida_IntPortB
Enc_Num1
movlw 0x01
movwf PORTB
;movlw MensajeBUS1
goto Salida_IntPortB
Enc_Num2
movlw 0x02
movwf PORTB
;movlw MensajeBUS2
goto Salida_IntPortB
Enc_Num3
movlw 0x04
movwf PORTB
;movlw MensajeBUS3
goto Salida_IntPortB
Enc_Num4
movlw 0x00
goto Salida_IntPortB
;---------------------------
; Subrutina Interrupcion del puerto B
Int_PortB
bcf INTCON,GIE
ChequeoEntrada
btfsc Entrada1
goto $+3
call Bounce_PortB
call Enc_Num1
;--------
btfsc Entrada2
goto $+3
call Bounce_PortB
call Enc_Num2
;--------
btfsc Entrada3
goto $+3
call Bounce_PortB
call Enc_Num3
;--------
btfsc Entrada4
goto $+3
call Bounce_PortB
call Enc_Num3
goto Salida_IntPortB
;----
;rutina antirrebotes
Bounce_PortB
btfss Entrada1
goto Bounce_PortB
btfss Entrada2
goto Bounce_PortB
btfss Entrada3
goto Bounce_PortB
btfss Entrada4
goto Bounce_PortB
return
Salida_IntPortB
bcf INTCON,RBIF
bsf INTCON,GIE
RETFIE
; INCLUDE <RS232.INC>
; INCLUDE <RS232MEN.INC>
INCLUDE <RETARDOS.INC>
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