Autor Tema: programa para GENERAR DEMORAS en asembler  (Leído 102766 veces)

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

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: programa para GENERAR DEMORAS en asembler
« Respuesta #15 en: 01 de Noviembre de 2011, 15:11:37 »
Hola.yo estoy usando el PDEL ver SP_1 y para el 18f2550 no me da el código correcto.
Almenos en el proteus los tiempos no se corresponden.habra otro generador de demoras para esta serie?
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado estancos

  • PIC10
  • *
  • Mensajes: 5
Re: programa para GENERAR DEMORAS en asembler
« Respuesta #16 en: 12 de Enero de 2012, 22:39:34 »
Interesante programa que, introduciendo el tiempo, genera el codigo asembler... <img border=0 src="http://pics.miarroba.com/caretos/wink.gif">


PIC_DEL SP

Hola, soy nuevo en este foro y también en lo que respecta a los pic. Llegué a esto de los pic´s buscando resolver algunos problemas artísticos ya que en realidad mi interés tiene que ver con las artes audiovisuales, claro que me gusta mucho la electrónica y demás. Pero bueno, paso a detallar una duda que tengo. Tratando de practicar con un 16F84A intenté temporizar  con asembler (lo poco que se de asembler son apenas algunas cosas que leí de internet) a partir de bucles sin usar el tmr0. Lo que quería hacer es automatizar una bomba portátil para la pileta, pero resulta que todo me anda bárbaro cuando uso espacios de tiempo cortos. Cuando intento armar lo mismo pero con largos periodos de tiempo no me funciona. Por ejemplo quería que la bomba se encendiera durante unos 45´, se apagara durante unas 10hs. etc., etc. Use el generador de código incluso, pero tampoco hubo caso. Cuando compilo con mplab no me marca error, e incluso use el icprog para quemar el pic y tampoco me marcó error, sin embargo sí me marca error el proteus. El led con el que estuve probando se queda encendido. Bueno, agradezco si alguien me puede dar una mano. Saludos. Leonardo 

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: programa para GENERAR DEMORAS en asembler
« Respuesta #17 en: 12 de Enero de 2012, 23:54:39 »
Hola Estancos, necesitariamos ver el programa para poder ayudar...  :mrgreen:
pero basicamente, puedes con el programa ejecutar una demora de 250 milisegundos..
si a esa rutina la llamas 4 veces... al finalizar ya tienes un segundo
si a ese segundo lo llamas 60 veces, tienes el minuto
y asi hasta obtener tus 10 horas...

sube tu programa ok
Saludos
Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

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

Desconectado fabianjsm

  • PIC18
  • ****
  • Mensajes: 255
    • fabianjsm is on twitter
Re: programa para GENERAR DEMORAS en asembler
« Respuesta #18 en: 13 de Enero de 2012, 08:16:12 »
Si estas generando la rutina de retardo con alguna de las aplicaciones citadas anteriormente no deberías tener problemas.
También podrías bajar la frecuencia del oscilador para desperdiciar mas tiempo con menos ciclos de reloj.
Recurriendo a estos bucles tan largos la alimentación debe ser confiable, de modo que el micro no reinicie por ninguna razón durante el transcurso de todo el tiempo.
De última podrías recurrir a un reloj externo tal como el DS1307  :lol:
Esperamos tu código fuente.
@fabianjsm is on twitter

Desconectado estancos

  • PIC10
  • *
  • Mensajes: 5
Re: programa para GENERAR DEMORAS en asembler
« Respuesta #19 en: 13 de Enero de 2012, 12:52:07 »
Si estas generando la rutina de retardo con alguna de las aplicaciones citadas anteriormente no deberías tener problemas.
También podrías bajar la frecuencia del oscilador para desperdiciar mas tiempo con menos ciclos de reloj.
Recurriendo a estos bucles tan largos la alimentación debe ser confiable, de modo que el micro no reinicie por ninguna razón durante el transcurso de todo el tiempo.
De última podrías recurrir a un reloj externo tal como el DS1307  :lol:
Esperamos tu código fuente.

Hola  gente, de nuevo. acá les pego el código. Fui sacando las distintas rutinas del generador de código, y las armé de acuerdo a lo que pensé que estaría bien. Les agradezco la ayuda.
Leonardo

;---------------Encabezado-------------

   LIST   p=16f84a        
   radix   hex        

;------------mapa de memoria---------

estado   equ   0x03        
TRISB   equ   0x06        
ptob   equ   0x06

;-------Configuración de puertos-------

reset   org       0x00
      goto   inicio
      org      0x05      
inicio   bsf    estado,5          
      movlw   b'00000000'   
      movwf   TRISB      
      bcf    estado,5        

;----Aquí enciende la bomba 45'-----

ahora   bsf      ptob,0        

   cblock   0x0a
   d1
   d2
   d3
   d4
   endc
   movlw   0xFF
   movwf   d1
   movlw   0xA3
   movwf   d2
   movlw   0xE2
   movwf   d3
   movlw   0x12
   movwf   d4
Delay_0
   decfsz   d1,f
   goto   $+2
   decfsz   d2,f
   goto   $+2
   decfsz   d3,f
   goto   $+2
   decfsz   d4,f
   goto   Delay_0
   goto   $+1   
   bcf      ptob,0

;-----apaga durante 10:15hs-----

   cblock   
   e1
   e2
   e3
   e4
   endc
   movlw   0xFF
   movwf   e1
   movlw   0x09
   movwf   e2
   movlw   0x62
   movwf   e3
   movlw   0xF5
   movwf   e4
Delay_1
   decfsz   e1,f
   goto   $+2
   decfsz   e2,f
   goto   $+2
   decfsz   e3,f
   goto   $+2
   decfsz   e4,f
   goto   Delay_1
   goto   $+1
   bsf      ptob,0


;-----enciende durante 45'-----

   cblock   
   f1
   f2
   f3
   f4
   endc
   movlw   0xFF
   movwf   f1
   movlw   0xA3
   movwf   f2
   movlw   0xE2
   movwf   f3
   movlw   0x12
   movwf   f4
Delay_2
   decfsz   f1, f
   goto   $+2
   decfsz   f2, f
   goto   $+2
   decfsz   f3, f
   goto   $+2
   decfsz   f4, f
   goto   Delay_2
   goto   $+1
   bcf      ptob,0

;-----apaga durante 12:15hs-----

   cblock   
   g1
   g2
   g3
   g4
   g1_4
   endc
   movlw   0x5C
   movwf   g1
   movlw   0xE0
   movwf   g2
   movlw   0xF6
   movwf   g3
   movlw   0xEF
   movwf   g4
   movlw   0x01
   movwf   g1_4
Delay_3
   decfsz   g1, f
   goto   $+2
   decfsz   g2, f
   goto   $+2
   decfsz   g3, f
   goto   $+2
   decfsz   g4, f
   goto   $+2
   decfsz   g1_4, f
   goto   Delay_3
   goto   $+1
   nop
   goto   ahora

   end

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: programa para GENERAR DEMORAS en asembler
« Respuesta #20 en: 13 de Enero de 2012, 14:33:32 »
Hola, lo primero que encuentro, es que está mal empleado el cblock, ya que aunque sea el primero, tendria que tener la direccion donde colocar los registros.. por ejemplo 20h  (depende del micro) 0ch etc


por ejemplo , este retardo es de un cuarto segundo
;-------------------------------------------------------------
; Generado con PDEL ver SP  r 1.0  el 13/01/2012 Hs 14:27:31
; Descripcion: Delay 250000 ciclos
;-------------------------------------------------------------
DEMORA  movlw     .197      ; 1 set numero de repeticion  (B)
        movwf     PDel0     ; 1 |
PLoop1  movlw     .253      ; 1 set numero de repeticion  (A)
        movwf     PDel1     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
        clrwdt              ; 1 ciclo delay
        decfsz    PDel1, 1  ; 1 + (1) es el tiempo 0  ? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) es el tiempo 0  ? (B)
        goto      PLoop1    ; 2 no, loop
PDelL1  goto PDelL2         ; 2 ciclos delay
PDelL2 
        return              ; 2+2 Fin.
;-------------------------------------------------------------


entonces podria llamarlo con CALL 4 VECES

UN_SEGUNDO
     CALL DEMORA
     CALL  DEMORA
     CALL DEMORA
     CALL  DEMORA
   RETURN

;----------------------------------------------------
UN_MINUTO   ;    ESTO PRODUCE UNA DEMORA DE UN MINUTO
     MOVLW  .60
    MOVWF MINUTO     ;(tienes que declarar el registro MINUTO)
   CALL UN_SEGUNDO
   DECFSZ  MINUTO,F   ;REALIZO 60 VECES ESTE CICLO
   GOTO $-2                 ;AL TERMINAR, RETORNA
   RETURN
;------------------------------------------------------

UNA_HORA
    MOVLW  .60
    MOVWF HORA     ;(tienes que declarar el registro HORA)
   CALL UN_SEGUNDO
   DECFSZ  HORA,F   ;REALIZO 60 VECES ESTE CICLO
   GOTO $-2                 ;AL TERMINAR, RETORNA
   RETURN
;-----------------------------------------------------






Firmat - Santa Fe - Argentina

www.TodoPic.net

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

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: programa para GENERAR DEMORAS en asembler
« Respuesta #21 en: 13 de Enero de 2012, 14:35:53 »
No se por que se me "subio" solo lo que escribi antes...

entonces, en tu programa
enciendes la bomba


bsf bomba ; encendida
CALL UNA_HORA  ;llama a la demora por una hora
bcf bomba  ; apagado de la bomba


espero se entienda ok?

Saludos!
Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

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

Desconectado estancos

  • PIC10
  • *
  • Mensajes: 5
Re: programa para GENERAR DEMORAS en asembler
« Respuesta #22 en: 13 de Enero de 2012, 16:42:44 »
Muchas gracias Norberto, voy a ver si lo pruebo hacer como vos me decís.
Estaba tratando de esquivar el "perro guardián" e incluso el tmr por que no termino de entender muy bien cómo aplicarlo. Respecto del cblock solo lo copié y lo pegué tal como me lo daba el generador. Bueno, voy a ver como me va con lo que subiste.
Gracias.
Leonardo

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: programa para GENERAR DEMORAS en asembler
« Respuesta #23 en: 13 de Enero de 2012, 18:03:50 »
Hola Estancos, tené en cuenta, que te faltan colocar dentro del cblock, todos los registros, es decir, pdel1, pdle2, pdel0, un_minuto, una_hora,un_segundo
y lo que te presente, seria para una hora.. tendras que hacerlo para tus requerimientos ok?
allí no empleo ni perro guardián ni timer0
Firmat - Santa Fe - Argentina

www.TodoPic.net

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

Desconectado estancos

  • PIC10
  • *
  • Mensajes: 5
Re: programa para GENERAR DEMORAS en asembler
« Respuesta #24 en: 25 de Enero de 2012, 00:27:16 »
Hola Estancos, tené en cuenta, que te faltan colocar dentro del cblock, todos los registros, es decir, pdel1, pdle2, pdel0, un_minuto, una_hora,un_segundo
y lo que te presente, seria para una hora.. tendras que hacerlo para tus requerimientos ok?
allí no empleo ni perro guardián ni timer0
Hola Norberto, disculpá la demora en contestar. Vos sabés que al final lo único que hice fue designarle las direcciones al cblock, tal como me dijiste al principio, y me anduvo bárbaro! La verdad es que a estas instrucciones no las había usado hasta ahora, o sea que solo copié y pegué pero en realidad no las entiendo. Voy a tener que ponerme a estudiar un poco...
Ah, a propósito, no sabés cómo puedo armar una fuente para que me alimente con 5v el pic y con 12v el relé? Compré para probar una de esas comunes que son tipo cargador de baterias para celulares, pero resulta que tenía que conectar una de 12v al relé y una de 5v al pic porque sino no andaba. Bueno, muchas gracias.

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: programa para GENERAR DEMORAS en asembler
« Respuesta #25 en: 25 de Enero de 2012, 11:09:48 »
tenes que emplear un regulador 7805, entras con la tension de 12, que empleas para alimentar el rele, y a la salida , obtenes los 5v para el micro. Atencion al diodo necesario para la bobina del rele, y los capacitores de filtro para el regulador. Busca que en el foro hay circuitos.
Saludos
Firmat - Santa Fe - Argentina

www.TodoPic.net

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

Desconectado luisccl

  • PIC10
  • *
  • Mensajes: 2
Re: programa para GENERAR DEMORAS en asembler
« Respuesta #26 en: 27 de Febrero de 2013, 14:42:17 »
Pues tengo el problema que no corre en Windows 7 64bits, lo cual es una lastima ya que todos hablan muy bien de el, no saben como podria hacerlo correr aca??, intente modo de compatibilidad y nada... es realmente una lastima :(

Interesante programa que, introduciendo el tiempo, genera el codigo asembler... <img border=0 src="http://pics.miarroba.com/caretos/wink.gif">


PIC_DEL SP

Desconectado VOLTIO

  • PIC16
  • ***
  • Mensajes: 154
Re: programa para GENERAR DEMORAS en asembler
« Respuesta #27 en: 04 de Septiembre de 2014, 13:46:29 »
buen dia , hoy baje este programita para hacer demoras y como ahora en mi pc tengo win7 me encontre que no funciona , alguien sabe de algun otro ??
gracias

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: programa para GENERAR DEMORAS en asembler
« Respuesta #28 en: 04 de Septiembre de 2014, 14:38:07 »
no te vale ejecutarlo en modo compatibilidad?
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Argonaut

  • PIC10
  • *
  • Mensajes: 5
Re:programa para GENERAR DEMORAS en asembler
« Respuesta #29 en: 17 de Febrero de 2016, 13:16:39 »
La Santísima Madre mía del hermoso PIC  :-/ :-/ :-/ :-/ Ole...ole me he caído en el hilo cierto  :-) que valiosas informaciones, como anillo en mis dedos, pues es esto mismo en que estoy tratando de hacer en un proyecto de temporizador cíclico, que por cierto me está derritiendo el celebro, el programa pic_del sp no me va, por usar Windows 10 a 64bits, pero la pagina web si que funciona, y justo hay me voy intentar cosas. Gracias a todos.