Autor Tema: Matriz de Ascensor con 16f84  (Leído 3464 veces)

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

Desconectado sanchoweb

  • PIC10
  • *
  • Mensajes: 13
Matriz de Ascensor con 16f84
« en: 29 de Diciembre de 2004, 11:57:00 »
Buenos días nuevamente. En esta ocación les pido ayuda para confeccionar un trabajo práctico. Lo que ocurre es que estoy un poco apretadp con el tiempo, asique espero que me puedan ayudar.

Lo que tengo que hacer es la simulación de un ascensor, pero solo con una matriz de leds que me indica en que piso está. Parece simple, pero a mi no me sale...

Para esto tengo:

- PIC 16f84A
- Matriz de Led 7x5
- Deco 3-8 (H4138)
- Conversor (MC4069)

La cosa es simple, lo que hago es un contador con el nivel inferior del puerto B, eso lo mando al deco 3-8 y con el converor invierto las salidas de este para poder controlar las filas de la matriz...

Las colmnas de la matriz la controlo con el Puerto A. Y tengo dos pulsadores, uno en RB7 y otro en RB6 que hacen que el numerito suba de piso o baje.

Hasta ahi todo joya. Pero hay un problema.... Necesito que cada vez que, por ejemplo, asciendo un piso... no me aparezca el número siguiente de una, sino que necesito que vaya desplazando al anterior. Como se ve en los ascensores de verdad.

Y una última cosa. Si apago el pic y lo vuelvo a encender, necesito que el piso se mantenga, por lo que tendría que laburar con memorias. FSR, INDF y demás yerbas.


Yo solo se programar en asembler, asique si alguien me quiere dar una mano.. se los agradecería mucho.

Saludos. Y espero su pronta respuesta.

Desconectado sanchoweb

  • PIC10
  • *
  • Mensajes: 13
RE: Matriz de Ascensor con 16f84
« Respuesta #1 en: 29 de Diciembre de 2004, 12:04:00 »
Agrego más datos:

RA0 - RA4: Control de las columnas de la Matriz 5x7

RB0 - RB2: Contador que llega hasta 7 (7 filas) y controla las filas de la matriz

RB6: Pulsador de ascenso

RB7: Pulsador de descenso


Desconectado sanchoweb

  • PIC10
  • *
  • Mensajes: 13
RE: Matriz de Ascensor con 16f84
« Respuesta #2 en: 29 de Diciembre de 2004, 12:08:00 »
Acá está lo que hice, pero no funca...

      LIST      P=16F84A
      #INCLUDE   <P16F84A.inc>
      CBLOCK      H"0D"
      CONTADOR
      PISO
      CounterA
      CounterB
      CounterC
      ENDC
      __CONFIG  _XT_OSC &_WDT_OFF &_PWRTE_ON &_CP_OFF
      ORG         H"00"
      GOTO      INICIO
      ORG         H"05"

TABLA
      ADDWF      PCL,F
      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"

      RETLW      B"00011011"
      RETLW      B"00010011"
      RETLW      B"00011011"
      RETLW      B"00011011"
      RETLW      B"00011011"
      RETLW      B"00011011"
      RETLW      B"00010001"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00011110"
      RETLW      B"00011101"
      RETLW      B"00010011"
      RETLW      B"00001110"
      RETLW      B"00000000"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00011110"
      RETLW      B"00011001"
      RETLW      B"00011110"
      RETLW      B"00001110"
      RETLW      B"00010001"

      RETLW      B"00011101"
      RETLW      B"00011001"
      RETLW      B"00010101"
      RETLW      B"00001101"
      RETLW      B"00000000"
      RETLW      B"00011101"
      RETLW      B"00011101"

      RETLW      B"00000000"
      RETLW      B"00001111"
      RETLW      B"00001111"
      RETLW      B"00010001"
      RETLW      B"00011110"
      RETLW      B"00001110"
      RETLW      B"00010001"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001111"
      RETLW      B"00000001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"

      RETLW      B"00000000"
      RETLW      B"00011110"
      RETLW      B"00011101"
      RETLW      B"00011011"
      RETLW      B"00010111"
      RETLW      B"00010111"
      RETLW      B"00010111"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010000"
      RETLW      B"00011110"
      RETLW      B"00001110"
      RETLW      B"00010001"

DELAY4
      movlw      D"6"
      movwf      CounterB
      movlw      D"48"
      movwf      CounterA
loop   
      decfsz      CounterA,1
      goto      loop
      decfsz      CounterB,1
      goto      loop
      retURN

MUESTREOSUBE
      MOVLW      H"0C"
      MOVWF      FSR
      MOVF      INDF,W
      MOVWF      PISO
      CLRF      PORTB
      CLRF      CONTADOR
      MOVF      CONTADOR,W
      CALL      TABLA
      MOVWF      PORTA
LOOP2
      CALL      DELAY4
      MOVLW      D"07"
      XORWF      PORTB
      BTFSS      STATUS,Z
      GOTO      SALE
      INCF      PORTB,F
      INCF      CONTADOR,F
      MOVF      CONTADOR,W
      CALL      TABLA
      MOVWF      PORTA
      GOTO      LOOP2

SALE   
      INCF      PISO
      MOVLW      H"0C"
      MOVWF      FSR
      MOVF      PISO,W
      MOVWF      INDF
      return

MUESTREOBAJA
      MOVLW      H"0C"
      MOVWF      FSR
      MOVF      INDF,W
      MOVWF      PISO
      CLRF      PORTA
      MOVLW      D"07"
      MOVF      CONTADOR,W
      CALL      TABLA
      MOVWF      PORTA
LOOP3
      CALL      DELAY4
      MOVLW      D"07"
      XORWF      PORTB
      BTFSC      STATUS,Z
      GOTO      SALE2
      INCF      PORTB,F
      DECF      CONTADOR,F
      MOVF      CONTADOR,W
      CALL      TABLA
      MOVWF      PORTA
      GOTO      LOOP3

SALE2
      DECF      PISO,F
      MOVLW      H"0C"
      MOVWF      FSR
      MOVF      PISO,W
      MOVWF      INDF
      RETURN

INICIO
      BSF      STATUS,RP0
      MOVLW      B"11000000"   
      MOVWF      PORTB
      CLRF      PORTA
      BCF      STATUS,RP0

      CLRF      PISO

LOOP4
      BTFSC      PORTB,7
      GOTO      SUBE
      BTFSC      PORTB,6
      GOTO      BAJA
      GOTO      LOOP4

SUBE
      MOVLW      D"09"
      XORWF      PISO
      BTFSC      STATUS,Z
      GOTO      LOOP4
      CALL      MUESTREOSUBE
      GOTO      LOOP4

BAJA
      MOVLW      D"00"
      XORWF      PISO
      BTFSC      STATUS,Z
      GOTO      LOOP4
      CALL      MUESTREOBAJA
      GOTO      LOOP4
      END
      

Desconectado fenix_jn

  • PIC18
  • ****
  • Mensajes: 418
RE: Matriz de Ascensor con 16f84
« Respuesta #3 en: 29 de Diciembre de 2004, 23:11:00 »
Ok, acerca del prender y apagar el PIc y mantener el piso, el 16F84 posee un recurso poderoso, una EEPROM interna de 64 bytes, esta la puedes usar para guardar tu piso antes de apagar, en el foro hay una multitud de aplicaciones y ejemplos en ASM. Lo de que el piso se desplace es una animacion que la puedes hacer en PIC, pero el codigo es un poco complicado porq debes leer n veces la tabla de digitos (siendo n la cantidad de filas q posea tu display) ademas de incorporar un pequeño retardo entre cada cambio, es una idea interesante, vere si puedo generar un codigo q lo pueda hacer, pero igual ve desarrollando el tuyo propio.

Desconectado sanchoweb

  • PIC10
  • *
  • Mensajes: 13
RE: Matriz de Ascensor con 16f84
« Respuesta #4 en: 30 de Diciembre de 2004, 09:22:00 »
Bueno, muchas gracias. Yo estoy probando mis códigos constantemente, porque tengo la ventaja de poseer el circuito con la matriz y todos los integrados necesarios.

Pero realmente, la cabeza no me da para más. Hace mucho que estoy con esto y no me sale...

Pero seguiré intentando. Gracias.

Desconectado Falconhunter

  • PIC12
  • **
  • Mensajes: 60
RE: Matriz de Ascensor con 16f84
« Respuesta #5 en: 30 de Diciembre de 2004, 14:43:00 »
Aprovechando que tienes la tabla de las matrices de led, en vez de colocar los caracteres a visualizar del 0 al 9 (como lo tienes) pon primero el caracter 9 y el ultimo el 0 (o el B, vamos la planta baja). Unicamente deberas cambiar el direccionamiento del puntero.

Cuando llega el momento de cambiar de numero (por ejemplo incrementar), haz que el puntero que utilizas para apuntar a la zona del caracter a visualizar apunte a la la fila mas baja del siguiente numero, y visualizas los siete bytes, como antes. Que hara: cargarte la primera linea del siguiente caracter y las seis mas altas anterior. Esto lo haces con un retardo y lo haces en un lazo siete veces.

Resultado: se delizan los numeros. Si lo quieres decrementar, en lugar de cargar en el puntero la fila mas baja, cargas la direccion de la penultima fila mas alta del numero para que se visualicen las seis filas mas bajas del caracter y la primera del anterior.

Espero habrte ayudado. Feliz año a todos.

Desconectado sanchoweb

  • PIC10
  • *
  • Mensajes: 13
RE: Matriz de Ascensor con 16f84
« Respuesta #6 en: 30 de Diciembre de 2004, 19:52:00 »
Bueno gente. Ya lo terminé. Me puse como meta hacerlo para hoy a las 11 de la noche y son las 10:48 y terminé el programa.

Logré que vaya desde 0 hasta 9 con los intervalos bien definidos y los números se ven perfecto.

Acá va el código:

      LIST      P=16F84A
      #INCLUDE   <P16F84A.inc>
      CBLOCK      H"0C"
      CONTADOR
      CONTADOR2
      TEMPORAL
      CounterA
      CounterB
      PISO
      ENDC
   __CONFIG  _XT_OSC &_WDT_OFF &_PWRTE_ON &_CP_OFF
      ORG         H"00"
      GOTO      INICIO
      ORG         H"05"

DELAY
      movlw   D"5"
   movwf   CounterB
   movlw   D"138"
   movwf   CounterA
loop   decfsz   CounterA,1
   goto   loop
   decfsz   CounterB,1
   goto   loop
   return
TABLA
      ADDWF      PCL,F
      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00000000"

      RETLW      B"00011011"
      RETLW      B"00011001"
      RETLW      B"00011010"
      RETLW      B"00011011"
      RETLW      B"00011011"
      RETLW      B"00011011"
      RETLW      B"00000000"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001111"
      RETLW      B"00010111"
      RETLW      B"00011001"
      RETLW      B"00001110"
      RETLW      B"00000000"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001111"
      RETLW      B"00010011"
      RETLW      B"00001111"
      RETLW      B"00001110"
      RETLW      B"00010001"

      RETLW      B"00010111"
      RETLW      B"00010011"
      RETLW      B"00010101"
      RETLW      B"00010110"
      RETLW      B"00000000"
      RETLW      B"00010111"
      RETLW      B"00010111"

      RETLW      B"00000000"
      RETLW      B"00011110"
      RETLW      B"00011110"
      RETLW      B"00010001"
      RETLW      B"00001111"
      RETLW      B"00001110"
      RETLW      B"00010001"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00011110"
      RETLW      B"00010000"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"

      RETLW      B"00000000"
      RETLW      B"00001111"
      RETLW      B"00010111"
      RETLW      B"00011011"
      RETLW      B"00011101"
      RETLW      B"00011101"
      RETLW      B"00011101"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"
      RETLW      B"00001111"
      RETLW      B"00001110"
      RETLW      B"00010001"

   RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"
      RETLW      B"00001111"
      RETLW      B"00001110"
      RETLW      B"00010001"


MUESTREO
      CLRF      CONTADOR
      MOVF      PISO,W
      MOVWF      TEMPORAL

LMUESTREO
      MOVF      CONTADOR,W
      MOVWF      PORTB
      MOVF      TEMPORAL,W
      CALL      TABLA
      MOVWF      PORTA
      CALL      DELAY
      MOVLW      D"7"
      XORWF      CONTADOR,W
      BTFSC      STATUS,Z
      RETURN
      INCF      TEMPORAL,F
      INCF      CONTADOR,F
      GOTO      LMUESTREO

INICIO
      BSF         STATUS,RP0
      CLRF      TRISA
      MOVLW      B"11000000"
      MOVWF      TRISB
      BCF         STATUS,RP0

LOOP2
      CALL      MUESTREO
      BTFSS      PORTB,7
      GOTO      LOOP5
      GOTO      SUBE
LOOP5
      BTFSS      PORTB,6
      GOTO      LOOP2
      GOTO      BAJA

SUBE
      MOVLW      D"63"
      XORWF      PISO,W
      BTFSC      STATUS,Z
      GOTO      LOOP2
      MOVLW      D"7"
      MOVWF      CONTADOR2

LSUBE
      INCF      PISO,F
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      DECFSZ      CONTADOR2,F
      GOTO      LSUBE
      GOTO      LOOP2

BAJA
      MOVLW      D"0"
      XORWF      PISO,W
      BTFSC      STATUS,Z
      GOTO      LOOP2
      MOVLW      D"7"
      MOVWF      CONTADOR2

LBAJA
      DECF      PISO,F
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      DECFSZ      CONTADOR2,F
      GOTO      LBAJA
      GOTO      LOOP2
      END


Ahora. Solo me falta una sola cosa. Pero de verdad que lo intenté y no lo puedo hacer funcionar. Es que me piden que cuando le saque la tensión al pic y se la vuelva a dar, se mantenga el piso en el que estaba.

Pensé en esta subrutina, pero no me anda. Si alguno me quiere dar una mano, se lo agradecería.

MOVLW      H"0C"
MOVWF      FSR
MOVF      PISO,W
MOVWF      INDF

Desconectado xootraoox

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 248
RE: Matriz de Ascensor con 16f84
« Respuesta #7 en: 30 de Diciembre de 2004, 23:40:00 »
compañero quizas no sere de ayuda pero si estoy un tanto interesado en lo que haz hecho y me gustaria armarlo a mi tambien es por eso que escribo esto, para ver la posibilidad de si puedes compartir el esquema del circuito que haz hecho y komo es que esta interconectado con el microcontrolador

desde ya me despido agradecido

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: Matriz de Ascensor con 16f84
« Respuesta #8 en: 31 de Diciembre de 2004, 03:53:00 »
Hola, realmente superaste tu propio record!!! Sonrisa Gigante

Creo que mas arriba tienes la respuesta... emplea la eeprom
puedes grabar en la eeprom del micro el dato o numero de piso...
asi que en el inicio del programa, colocas un CALL LECTURA que cargue al encender el equipo, el valor que tenia...

;============== MANEJO DE EEPROM =================================
LECTURA   MOVF   DIRECCION,W   ;TOMAR DIRECCION A LEER
   MOVWF   EEADR      ;PASO DIRECCION A EEADR
   BSF   STATUS,RP0   ;BANCO 1
   BSF   EECON1,RD   ;LEER DATO DE LA EEPROM
   BCF   STATUS,RP0
   MOVF   EEDATA,W   ;DATA --->W
   CLRWDT
   RETURN         ;RETORNA CON DATO EN W
;-------------------------------------------------------------------------




ESCRITURA                     
   MOVF   DIRECCION,W   ;TOMA DIRECCION
   MOVWF   EEADR
   MOVF   BYTE,W
   MOVWF   EEDATA
   BSF      STATUS,RP0
   BSF      EECON1,WREN   ;HABILITA ESCRITURA
   MOVLW   0X55
   MOVWF   EECON2
   MOVLW   0XAA
   MOVWF   EECON2
   BSF      EECON1,WR   ;WR-->1
   BCF      EECON1,WREN   ;DESHABILITA ESCRITURA
   BCF      STATUS,RP0   ;BANCO 0
   RETURN

;*************************************************
;   codigo, colocar direccion a grabar
   MOVWF   DIRECCION   ;DIRECCION A GRABAR DE LA EEPROM
;  colocar el numero o dato a grabar
   MOVWF   BYTE
         
   CALL   ESCRITURA   ;ENVIO A GRABAR EEPROM
   BSF   STATUS,RP0
ESCRCOMPL1
   CLRWDT   
   BTFSC   EECON1,WR   ;BYTE ESCRITO?
   GOTO   ESCRCOMPL1
   BCF   STATUS,RP0

; ya esta grabado... seguir con el programa
;******************************************************

suerte!!

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado sanchoweb

  • PIC10
  • *
  • Mensajes: 13
RE: Matriz de Ascensor con 16f84
« Respuesta #9 en: 31 de Diciembre de 2004, 09:23:00 »
Bueno, de verdad muchas gracias por todo.

Ahora me voy a poner a insertar las partes para el grabado en la EEPROM y cuando esté todo terminado subo el código completo.

Lo que si... no tengo cámara digital Norberto, asique solo puedo subir la plaqueta hecha en el Eagle y las hojas de datos utilizadas...

En un rato vengo con el proyecto ¿terminado?

Saludos.
Sancho

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: Matriz de Ascensor con 16f84
« Respuesta #10 en: 31 de Diciembre de 2004, 09:30:00 »
Puedes pegarlo en word o hacerlo en pdf, todos podran verlo asi.Sonrisa Gigante
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado sanchoweb

  • PIC10
  • *
  • Mensajes: 13
RE: Matriz de Ascensor con 16f84
« Respuesta #11 en: 31 de Diciembre de 2004, 13:37:00 »
Bueno gente. Acá ajunto un txt. con el programa finalizado.

La plaqueta todavía no la hice. Pero supongo que mañana la haré.

Gracias por la ayuda brindada y cualquier consulta escribanme que los trataré de ayudar en lo que pueda.

Por lo pronto, en los próximos días subiré los planos de la plaqueta, con el conexionado así se entiende bien.

Pero para los que me lo pedían, acá está el código en asembler.

Sancho

PD: No me deja agregar el .txt... asique se los copio en la caja de texto:

      LIST      P=16F84A
      #INCLUDE   <P16F84A.inc>
      CBLOCK      H"0C"
      CONTADOR
      CONTADOR2
      TEMPORAL
      CounterA
      CounterB
      PISO
      BYTE
      DIRECCION
      ENDC
   __CONFIG  _XT_OSC &_WDT_OFF &_PWRTE_ON &_CP_OFF
      ORG         H"00"
      GOTO      INICIO
      ORG         H"05"

DELAY
      movlw      D"5"
      movwf      CounterB
      movlw      D"138"
      movwf      CounterA
loop   
      decfsz      CounterA,1
      goto      loop
      decfsz      CounterB,1
      goto      loop
      return
TABLA
      ADDWF      PCL,F
      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"

      RETLW      B"00011011"
      RETLW      B"00011001"
      RETLW      B"00011010"
      RETLW      B"00011011"
      RETLW      B"00011011"
      RETLW      B"00011011"
      RETLW      B"00000000"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001111"
      RETLW      B"00010111"
      RETLW      B"00011001"
      RETLW      B"00001110"
      RETLW      B"00000000"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001111"
      RETLW      B"00010011"
      RETLW      B"00001111"
      RETLW      B"00001110"
      RETLW      B"00010001"

      RETLW      B"00010111"
      RETLW      B"00010011"
      RETLW      B"00010101"
      RETLW      B"00010110"
      RETLW      B"00000000"
      RETLW      B"00010111"
      RETLW      B"00010111"

      RETLW      B"00000000"
      RETLW      B"00001110"
      RETLW      B"00011110"
      RETLW      B"00010001"
      RETLW      B"00001111"
      RETLW      B"00001110"
      RETLW      B"00010001"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00011110"
      RETLW      B"00010000"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"

      RETLW      B"00000000"
      RETLW      B"00001111"
      RETLW      B"00010111"
      RETLW      B"00011011"
      RETLW      B"00011101"
      RETLW      B"00011101"
      RETLW      B"00011101"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"

      RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"
      RETLW      B"00001111"
      RETLW      B"00001110"
      RETLW      B"00010001"

   RETLW      B"00010001"
      RETLW      B"00001110"
      RETLW      B"00001110"
      RETLW      B"00010001"
      RETLW      B"00001111"
      RETLW      B"00001110"
      RETLW      B"00010001"

MUESTREO
      CLRF      CONTADOR
      MOVLW      H"00"
      MOVWF       EEADR ;PASO DIRECCION A EEADR
      BSF       STATUS,RP0 ;BANCO 1
      BSF       EECON1,RD ;LEER DATO DE LA EEPROM
      BCF         STATUS,RP0
      MOVF       EEDATA,W ;DATA --->W
      CLRWDT
      MOVWF      PISO
      MOVF      PISO,W
      MOVWF      TEMPORAL

LMUESTREO
      MOVF      CONTADOR,W
      MOVWF      PORTB
      MOVF      TEMPORAL,W
      CALL      TABLA
      MOVWF      PORTA
      CALL      DELAY
      MOVLW      D"7"
      XORWF      CONTADOR,W
      BTFSC      STATUS,Z
      RETURN
      INCF      TEMPORAL,F
      INCF      CONTADOR,F
      GOTO      LMUESTREO

ESCRITURA
      BSF         STATUS,RP0
      BSF         EECON1,WREN
      MOVLW      H"55"
      MOVWF      EECON2
      MOVLW      H"AA"
      MOVWF      EECON2
      BSF         EECON1,WR
LOPO   BTFSS      EECON1,EEIF
      GOTO      LOPO
      BCF         EECON1,EEIF
      BCF         STATUS,RP0
      RETURN

INICIO
      BSF         STATUS,RP0
      CLRF      TRISA
      MOVLW      B"11000000"
      MOVWF      TRISB
      BCF         STATUS,RP0
      
LOOP2
      CALL      MUESTREO
      BTFSS      PORTB,7
      GOTO      LOOP5
      GOTO      SUBE
LOOP5
      BTFSS      PORTB,6
      GOTO      LOOP2
      GOTO      BAJA

SUBE
      MOVLW      D"63"
      XORWF      PISO,W
      BTFSC      STATUS,Z
      GOTO      LOOP2
      MOVLW      D"7"
      MOVWF      CONTADOR2

LSUBE
      INCF      PISO,F
      CLRF      EEADR
      MOVF      PISO,W
      MOVWF      EEDATA
      CALL      ESCRITURA

      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      
      DECFSZ      CONTADOR2,F
      GOTO      LSUBE
      
      CLRF      EEADR
      MOVF      PISO,W
      MOVWF      EEDATA
      CALL      ESCRITURA      

      GOTO      LOOP2

BAJA
      MOVLW      D"0"
      XORWF      PISO,W
      BTFSC      STATUS,Z
      GOTO      LOOP2
      MOVLW      D"7"
      MOVWF      CONTADOR2

LBAJA
      DECF      PISO,F

      CLRF      EEADR
      MOVF      PISO,W
      MOVWF      EEDATA
      CALL      ESCRITURA

      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      CALL      MUESTREO
      
      DECFSZ      CONTADOR2,F
      GOTO      LBAJA

      CLRF      EEADR
      MOVF      PISO,W
      MOVWF      EEDATA
      CALL      ESCRITURA

      GOTO      LOOP2
      END

Desconectado PolloX

  • PIC10
  • *
  • Mensajes: 7
Re: Matriz de Ascensor con 16f84
« Respuesta #12 en: 22 de Mayo de 2007, 13:24:16 »
alguien hizo la simulacion de esto en el proteus???

serviria de mucho para entenderlo mejor.


 

anything