Autor Tema: alguien me puede ayudar con un programilla  (Leído 3962 veces)

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

Desconectado elloco

  • PIC10
  • *
  • Mensajes: 10
alguien me puede ayudar con un programilla
« en: 30 de Enero de 2008, 12:26:28 »
hola buenas he exo un programa q se se trata de mediante un teclado y un lcd con un pic16f84 introducir un numero, bueno en este caso tres numeros. y si son correctos te ponga en el lcd numero correcto  y se activa  a los pocos segundos una salida dependiendo del numero q hayas pulsado si es correcto se activara por ejemplo para el 23 la porta1, para el 56 la porta3 y paara el 89 la porta4, ya que la port0 y la port2 estan reservadas xa el el lcd, e mi caso trabajare con DB7,DB6,DB5,DB4, es decir 4 bits, pero no se si me faltara algo, o  algo falla porq no se me activan la salidas, me podeis ayudar?? aqui os pongo los pasos q hace  el prgrama xa ver si esa bien o no y os adjunto el programa exo xa q me digais si esta mas o menos bien.

1 paso: por el lcd te pide tecle Numero
2 Paso: tecleamos numero y sino es correcto ninguno de los tres, te dice en el lcd numero incorrecto si fuera alguno delos tres te pondria numero correcto y  se activaria la salida correspondiente q se haya definido a ese numero, mas adelante pondre mas cosillas al programilla xo quiiero ver si falla algo ahora y q es, si podeis ayudarme os lo agradeceria muxo, gracias.


Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: alguien me puede ayudar con un programilla
« Respuesta #1 en: 30 de Enero de 2008, 12:58:12 »
¿Has configurado correctamente los tris para que los pines a los que va conectado el teclado actúen como entradas?
No lo veo en el código

Desconectado elloco

  • PIC10
  • *
  • Mensajes: 10
Re: alguien me puede ayudar con un programilla
« Respuesta #2 en: 30 de Enero de 2008, 14:03:05 »
no se porq no ve sle codigo bueno aqui te le pongo

LIST P=16F84
RADIX HEX
   INCLUDE <P16F84A.INC>

   CBLOCK   0x0C
   ENDC

#DEFINE LogingitudNumero1   (Numero1-FinNumero1)
#DEFINE LogingitudNumero2   (Numero2-FinNumero2)
#DEFINE LogingitudNumero3   (Numero3-FinNumero3)
#DEFINE Salida1         PORTA,1      
#DEFINE Salida2         PORTA,3
#DEFINE   Salida3         PORTA,4

ZONA*********************************************************************

   ORG   0
   GOTO   INICIO
   ORG   4
   GOTO   INTER

Mensajes
   ADDWF   PCL,F
Mensaje0
   DT "Teclee Numero",0x00
Mensaje1
   DT "Numero Correcto",0x00

Mensaje2
   DT "Activao Salida1",0x00

Mensaje3
   DT "Activao salida2",0x00

Mensaje4
   DT "Activao salida3",0x00

Mensaje5
   DT "Numero Incorrecto",0x00




LeeNumeros
   ADDWF PCL,F
Numero1
   DT 2h,3h
FinNumero1

Numero2
   DT 5h,6h
FinNumero2

Numero3
   DT 8h,9h
FinNumero3

FinNumeros

INICIO      CALL   LCD_Inicializa
      bsf   STATUS,RP0
      bcf   PORTA,1         ;Define como salida
      bcf   PORTA,3
      bcf   PORTA,4
      bcf   STATUS,RP0
      CALL   Teclado_Inicializa   ;Configura Teclado
      CALL   InicializaTodo      ;Inicializa los registros
      movlw   b'10001000'      ;Habilita la Interrupcion RBI
      movwf   INTCON

bucle
      sleep
      goto    bucle



;Subrutina Inter*********************************************************

   CBLOCK
   CONT1
   CONT2
   CONT3
   GuardoTecla
   ENDC

INTER   CALL   Teclado_LeeHex
   movwf   INDF         ;Almacena el digito en la Ram
   incf   FSR,f         ;Apunta hacia la siguiente direccion de ñla Ram
   incf   CONT1,f
   movlw   LongitudNumero1
   subwf   CONT1,W

   incf   FSR,f
   incf   CONT2,f
   movlw   LongitudNumero2
   subwf   CONT2,W

   incf   FSR,f
   incf   CONT3,f
   movlw   LongitudNumero3
   subwf   CONT3,W

   btfss   STATUS,C
   GOTO   INTER1


   CALL   LCD_Borra
   clrf   CONT1
   clrf   CONT2
   clrf   CONT3
   movlw   Tecla
   movwf   FSR


ComparaNumero1
      movf   INDF,W      ;Lee el numero y lo guarda en la ram
      movwf   Tecla
      movwf   CONT1,w      ;Apunta ala Rom
      call   Numero1
      subwf   GuardoTecla,w
      btfss    STATUS,Z
      goto    NumeroIncorrecto
      incf   FSR,f
      incf   CONT1,f
      movlw   LongitudNumero1
      subwf   CONT1,f
      btfss    STATUS,C
      goto   ComparaNumero1
      movlw   Mensaje1
      CALL   LCD_Mensaje
      CALL   LCD_Linea2
      movlw   Mensaje2
      CALL   LCD_Mensaje
      bsf   Salida1
      goto    Retardos

ComparaNumero2   movf   INDF,W      ;Lee el numero y lo guarda en la ram
      movwf   Tecla
      movwf   CONT2,w      ;Apunta ala Rom
      call   Numero2
      subwf   GuardoTecla,w
      btfss    STATUS,Z
      goto    NumeroIncorrecto
      incf   FSR,f
      incf   CONT1,f
      movlw   LongitudNumero2
      subwf   CONT1,f
      btfss    STATUS,C
      goto   ComparaNumero2
      movlw   Mensaje1
      CALL   LCD_Mensaje
      CALL   LCD_Linea2
      movlw   Mensaje3
      CALL   LCD_Mensaje
      bsf   salida2
      goto    Retardos

ComparaNumero3   movf   INDF,W      ;Lee el numero y lo guarda en la ram
      movwf   Tecla
      movwf   CONT3,w      ;Apunta ala Rom
      call   Numero3
      subwf   GuardoTecla,w
      btfss    STATUS,Z
      goto    NumeroIncorrecto
      incf   FSR,f
      incf   CONT1,f
      movlw   LongitudNumero3
      subwf   CONT1,f
      btfss    STATUS,C
      goto   ComparaNumero3
      movlw   Mensaje1
      CALL   LCD_Mensaje
      CALL   LCD_Linea2
      movlw   Mensaje4
      CALL   LCD_Mensaje
      bsf   Salida3
      goto    Retardos
      
      

NumeroIncorrecto   movlw   Mensaje5
         CALL   LCD_Mensaje
         
Retardo
      call   Retardo_4s
      call   Retardo_2s


InicializaTodo
      bcf   PORTA,1         ;Desactiva las salidas
      bcf   PORTA,3
      bcf   PORTA,4
      crlf   CONT1         ;Inicializa Contadores
      crlf   CONT2
      crlf   CONT3
      movlw   Tecla
      movwf   FSR
      CALL   LCD_Borra
      movlw   Mensaje0
      CALL   LCD_Mensaje
      
INTER1      CALL   Teclado_EsperaDejePulsar
      bcf   INTCON,RBIF
      retfie


;Subrutina "Teclado Inicializa"****************************************************

Teclado Inicializa
   BSF   STATUS,RP0
   MOVLW   B'11110000'
   MOVWF   PORTB
   BCF   OPTION_REG,NOT_RPBU
   BCF   STATUS,RP0
   CALL   Teclado_EsperaDejePulsar



;*********************Subrutina Teclado_EsperaDejePulsar***************************************

Teclado_Comprobacion   EQU   b'11110000'

Teclado_EsperaDejePulsar
   movlw   Teclado_comprobacion
   movwf   PORTB



;*******************Subrutina "Teclado_LeeHex"***********************************************

Teclado_LeeHex
      CALL   teclado_LeeOrdenTecla
      BTFSS   STATUS,C
      GOTO    Tecl_FinLeeHex
      CALL   teclado_ConvierteOrdenEnHex
      BSF   STATUS,C


;********************Subrrutina Teclado Lee Orden Tecla***************************************

Teclado_LeeOrdenTecla

   clrf Tecl_TeclaOrden
   movlw   b'11111110'


Tecl_FinLeeHex
      RETURN

Teclado_ConvierteOrdenEnHex
      ADDWF   PCL,F
      DT   1h,2h,3h,0Fh
      DT   4h,5h,6h,0Eh
      DT   7h,8h,9h,0Dh
      DT   0Ah,0h,0Bh,0Ch



   INCLUDE <TECLADO.INC>
   INCLUDE <LCD_4BIT.INC>
   INCLUDE <LCD_MENS.INC>
   INCLUDE <RETARDOS.INC>


   CBLOCK
   Num_Tecleado
   ENDC

END

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: alguien me puede ayudar con un programilla
« Respuesta #3 en: 30 de Enero de 2008, 14:23:30 »
El código si lo he visto.
Lo que no he visto es que configures como entradas los pines que deben actuar como entradas,mediante la escritura del registro tris con el valor adecuado

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: alguien me puede ayudar con un programilla
« Respuesta #4 en: 30 de Enero de 2008, 15:01:46 »
Me parece que lo intento hacer en la rutina INICIO mediante bcf PORTA,1. Esta instrucción pone a 0 el bit 1 del puerto A, pero no lo configura como salida al bit 1 del puerto A.

Como te dice Modulay, para configurar como salidas o entradas los puertos A y B, deberás hacerlo por medio de TRISA para el puerto A y TRISB para el puerto B, pero antes deberás configurar el banco correspondiente para acceder a ellos.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: alguien me puede ayudar con un programilla
« Respuesta #5 en: 30 de Enero de 2008, 15:33:16 »
Modulay y leopic!
pero el debe configurar los Fuses, el Quarzo,etc. etc
creo yo 8)

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: alguien me puede ayudar con un programilla
« Respuesta #6 en: 30 de Enero de 2008, 15:34:28 »
También,también.
Buena observación :)

Desconectado elloco

  • PIC10
  • *
  • Mensajes: 10
Re: alguien me puede ayudar con un programilla
« Respuesta #7 en: 30 de Enero de 2008, 15:58:17 »
pero entonces donde deberia de configurar el puerto a como salida, al principio del programa?? y la puerta b como se configura, como salida o como entrada lo digo xq al tener un teclado con un lcd los pines actuan los 4 bits primeros como entrada creo y los restantes como salida, es asi o no y una vez con esto exo quedaria correcto el programa o fallaria algo mas.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: alguien me puede ayudar con un programilla
« Respuesta #8 en: 30 de Enero de 2008, 16:16:11 »
Por lo que he logrado entender,tienes conectado el teclado a RB4,RB5,RB6 y RB7...
Siendo así,tendrías que poner a 1 los 4 bits más significativos del registro TRISB,que no recuerdo en este momento en qué posición del mapa de memoria está ubicado...lo puedes mirar en el datasheet del micro.
Por defecto,los registros TRIS están puestos a 0,por lo que todos los puertos quedan configurados como salidas tras un reset.
Puedes hacer la escritura del registro TRISB al comienzo del programa,dentro de alguna de las rutinas de inicialización que tienes.

Desconectado elloco

  • PIC10
  • *
  • Mensajes: 10
Re: alguien me puede ayudar con un programilla
« Respuesta #9 en: 31 de Enero de 2008, 10:07:40 »
pero vamos a ver las puertas a vale no estan configuradas como salidas eso esta claro pero las puertas b ya estan cuando llamo a la subrutina tecladoincializa, y haciendo eso esta bien el programa voy bien decidme.

Desconectado elloco

  • PIC10
  • *
  • Mensajes: 10
Re: alguien me puede ayudar con un programilla
« Respuesta #10 en: 31 de Enero de 2008, 10:42:30 »
de todas formas al utilizar solo esas tres patillas como salidad del puerto a las defino ya asi qno se faltaria.gracias

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: alguien me puede ayudar con un programilla
« Respuesta #11 en: 31 de Enero de 2008, 12:12:22 »
Los pines correspondientes del puerto A son las que tienes que configurar manualmente como salida,volcando en el TRISA el valor 11100101 (RA1,RA3 y RA4 como salidas)

Desconectado elloco

  • PIC10
  • *
  • Mensajes: 10
Re: alguien me puede ayudar con un programilla
« Respuesta #12 en: 31 de Enero de 2008, 12:17:07 »
ok ya configure el trisa de esas patillas como salidas y decidme lo demas estaria correcto

Desconectado flacoclau

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1692
    • El Micro Reactor
Re: alguien me puede ayudar con un programilla
« Respuesta #13 en: 31 de Enero de 2008, 22:48:01 »
Hola elloco: no quiero generar polémica pero eres compañero de clases de este muchacho?
programa para una maquina expendendedora con pic 16f84
 :D :D :D :D :D :D :D :D :D :D :D

veo que al menos tú te preocupas en resolver el ejercicio!!!
suerte y dale para adelante!!!
Las personas con buena ortografía me atraen textualmente.

El Micro Reactor

Córdoba capital - Argentina.

Desconectado poseidon20

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 762
Re: alguien me puede ayudar con un programilla
« Respuesta #14 en: 01 de Febrero de 2008, 04:07:12 »
Hola elloco: no quiero generar polémica pero eres compañero de clases de este muchacho?
programa para una maquina expendendedora con pic 16f84
 :D :D :D :D :D :D :D :D :D :D :D

veo que al menos tú te preocupas en resolver el ejercicio!!!
suerte y dale para adelante!!!

 :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D :D

JAJAJA, si es asi, este mundo es pequeño  :mrgreen:, Si se lo estas haciendo por lo menos cobrale algo, tu por lo menos tratas de hacerlo y preguntar en donde te estancas, ese es el espiritu del que quiere aprender y que el foro fomenta  :-/


 

anything