Autor Tema: pulsador y pcf8574  (Leído 2724 veces)

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

Desconectado txispas

  • PIC10
  • *
  • Mensajes: 25
pulsador y pcf8574
« en: 04 de Diciembre de 2007, 18:00:11 »
Buenas a todos en mi primer mensaje.Estoy intentando aprender esto de los pics y todo iva bien hasta que surgio la DUDA.
Vereis el problema es que necesito leer 8 pulsadores mediante un pcf8574 y no encuentro la manera de hacerlo.El tema del programa en el pic creo que mas o menos lo tengo bien el problema son las conexiones.

Sabeis de algun ejemplo que haga algo parecido??? (no quiero un teclado matricial) simplemente un pulsador en cada linea del pcf8504 que active un 1 al pulsarse y un 0 al soltarse.

Saludos y gracias de antemano.

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: pulsador y pcf8574
« Respuesta #1 en: 05 de Diciembre de 2007, 00:54:27 »
hola que tal, aca te dejo un programa que hace algo de lo que tu quieres, pero esta en asm, peor es facil pasarlo a ese lenguaje ya que yo recien le estoy hechando ojo, espero no estar violando alguna regla del foro  :D y si es asi me avizan apar editar este mensaje  :mrgreen:

Código: ASM
  1. ;************************************ I2C_Expansor_01.asm *****************************
  2. ;
  3. ;       ===================================================================
  4. ;         Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
  5. ;         E. Palacios, F. Remiro y L. Lopez.            www.pic16f84a.com
  6. ;         Editorial Ra-Ma.  www.ra-ma.es
  7. ;       ===================================================================
  8. ;
  9. ; Programa para comprobar el funcionamiento del PCF8574 que es un expansor de bus I2C.
  10. ; Utiliza dos circuitos integrados tal como se indica en el esquema correspondiente:
  11. ;  -  Uno como entrada, leyendo un array de 8 interruptores. Su pin A0 se conecta a masa.
  12. ;  -  Otro como salida, visualizando los datos en un array de diodos LEDs. Su pin A0 se
  13. ;     conecta a Vcc.
  14. ;
  15. ; Este programa lee los switches conectados al PCF8574 que actua como entrada y su valor
  16. ; se visualiza en los diodos LED conectados al PCF8574 de salida.
  17. ;
  18. ; ZONA DE DATOS **********************************************************************
  19.  
  20.         LIST            P=16F84A
  21.         INCLUDE         <P16F84A.INC>
  22.         __CONFIG        _CP_OFF &  _WDT_OFF & _PWRTE_ON & _XT_OSC
  23.  
  24.         CBLOCK  0x0C
  25.         Dato
  26.         ENDC
  27.  
  28. PCF8574_DIR_LECTURA     EQU     b'01000001'
  29. PCF8574_DIR_ESCRITURA   EQU     b'01000010'
  30.  
  31. #DEFINE  PCB8574_INT    PORTB,0         ; Linea donde se conecta la linea de
  32.                                         ; interrupcion del expansor de bus I2C.
  33. ; ZONA DE CÓDIGOS ********************************************************************
  34.  
  35.         ORG     0
  36.         goto    Inicio
  37.         ORG     4
  38.         goto    ServicioInterrupcion
  39. Inicio
  40.         bsf     STATUS,RP0                      ; Acceso Banco 1.
  41.         bsf     PCB8574_INT                     ; La lnea RB0/INT se configura como entrada.
  42.         bcf     OPTION_REG,NOT_RBPU             ; Habilita las resistencia de Pull-Up del Puerto B.
  43.         bcf     OPTION_REG,INTEDG               ; Interrupcion INT activa por flanco de bajada.
  44.         bcf     STATUS,RP0                      ; Acceso Banco 0.
  45.         call    ServicioInterrupcion            ; Para que lea y escriba por primera vez.
  46.         movlw   b'10010000'                     ; Habilita la interrupcion INT y la general.
  47.         movwf   INTCON
  48. Principal
  49.         sleep                                   ; Pasa a modo de reposo.
  50.         goto    Principal
  51.  
  52. ; Subrutina "ServicioInterrupcion" ------------------------------------------------------
  53. ;
  54. ; Lee los interruptores conectados al PCF8574 que actua como entrada y el resultado lo
  55. ; visualiza en los diodos LED conectados al PCF8574 configurado como salida.
  56.  
  57. ServicioInterrupcion
  58.         call    Retardo_20ms                    ; Espera unos instante a que se estabilicen los
  59.         call    PCF8574_Lee                     ; niveles de tension y lee la entrada.
  60.         movwf   Dato                            ; Complementa el dato leido porque los diodos
  61.         comf    Dato,W                          ; se activan con nivel bajo, (ver esquema).
  62.         call    PCF8574_Escribe                 ; Lo visualiza en los diodos LEDs.
  63.         bcf     INTCON,INTF
  64.         retfie
  65.  
  66.         INCLUDE  <BUS_I2C.INC>
  67.         INCLUDE  <PCF8574.INC
  68.         INCLUDE  <RETARDOS.INC>
  69.         END
  70.        
  71. ;       ===================================================================
  72. ;         Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
  73. ;         E. Palacios, F. Remiro y L. Lopez.            www.pic16f84a.com
  74. ;         Editorial Ra-Ma.  www.ra-ma.es
  75. ;       ===================================================================
  76.  

Como podran ver este programa lo copie tal como lo hizo su autor

adjunto en un zip los includes, el DSN para proteus y el *.hex que hizo el autor, tambien pongo una imagen de como es el esquematico, una cosa que vi en el es que le falta las resistencias pullup, ya se las agregan  :mrgreen:

Desconectado txispas

  • PIC10
  • *
  • Mensajes: 25
Re: pulsador y pcf8574
« Respuesta #2 en: 06 de Diciembre de 2007, 06:28:59 »
Muchas gracias por la respuesta.Ya consegui sacarlo adelante.Seguire con mi proyecto :)

Saludos.


 

anything