Como generar 1 minuto en pic 16F628A

tendo dudas en como generar pulsos de 1 en 1 minutes com TMR0.sou novato en programacion del PIC,muitas gracias se for possivel en me ayudar-me.
saludos. :(
 
La forma en que controles el tiempo siempre va a depender del nivel de presición que necesites. Usando un TMR, podes explotar de este la interrupción de cambio de 0xFF a 0x00, y contabilizar cada desborde en un ciclo de incremento de variables, cuando sumen las cantidades necesarias para llegar al minuto, ahi pones todo a 0 y vuelves a empezar. Queda a tu criterio realizar los ajustes y pasos necesarios para la presición del tiempo.

Saludos
 
MaMu dijo:
La forma en que controles el tiempo siempre va a depender del nivel de presición que necesites. Usando un TMR, podes explotar de este la interrupción de cambio de 0xFF a 0x00, y contabilizar cada desborde en un ciclo de incremento de variables, cuando sumen las cantidades necesarias para llegar al minuto, ahi pones todo a 0 y vuelves a empezar. Queda a tu criterio realizar los ajustes y pasos necesarios para la presición del tiempo.

Saludos

pretento construir uno tiemporizador,tipo 60 minutes con dois (2) display de sete seguimentos,poderia citar uno exenplito,de como seria el assembly.muitas gracias en ayudar-me.
saludos
 
godoyas dijo:
MaMu dijo:
La forma en que controles el tiempo siempre va a depender del nivel de presición que necesites. Usando un TMR, podes explotar de este la interrupción de cambio de 0xFF a 0x00, y contabilizar cada desborde en un ciclo de incremento de variables, cuando sumen las cantidades necesarias para llegar al minuto, ahi pones todo a 0 y vuelves a empezar. Queda a tu criterio realizar los ajustes y pasos necesarios para la presición del tiempo.

Saludos

pretento construir uno tiemporizador,tipo 60 minutes con dois (2) display de sete seguimentos,poderia citar uno exenplito,de como seria el assembly.muitas gracias en ayudar-me.
saludos

Lee este artículo que es muy práctico y te va a venir bien para entender un poco la utilización de los Timer, sobre todo del TMR1.

http://micropic.wordpress.com/2007/06/24/temporizador-timer-1/

PD: un poco de literatura no le viene mal a nadie.

Saludos
 
MaMu dijo:
godoyas dijo:
MaMu dijo:
La forma en que controles el tiempo siempre va a depender del nivel de presición que necesites. Usando un TMR, podes explotar de este la interrupción de cambio de 0xFF a 0x00, y contabilizar cada desborde en un ciclo de incremento de variables, cuando sumen las cantidades necesarias para llegar al minuto, ahi pones todo a 0 y vuelves a empezar. Queda a tu criterio realizar los ajustes y pasos necesarios para la presición del tiempo.

Saludos

pretento construir uno tiemporizador,tipo 60 minutes con dois (2) display de sete seguimentos,poderia citar uno exenplito,de como seria el assembly.muitas gracias en ayudar-me.
saludos

Lee este artículo que es muy práctico y te va a venir bien para entender un poco la utilización de los Timer, sobre todo del TMR1.

http://micropic.wordpress.com/2007/06/24/temporizador-timer-1/

PD: un poco de literatura no le viene mal a nadie.

Saludos

muitas gracias en me ayudar,gostei do tutorial,obrigado.
saludos
 
Puedes utilizar el programa PicDel.
Es un programa bastante sencillo de usar, genera en código asm los retardos de tiempo que le programes, lo único que tienes que ajustar el tiempo de retardo en ms que quieras, pero antes deberás escoger la frecuencia del clock en MHz del Pic.
Ejemplo:
Para 1 segundo, si tienes un oscilador de 4MHz escribes en:
Frecuencia(MHz) |4 |
Tienes que escribir el tiempo de retardo en ms:
Retardo (ms) |1000 |
Después presionas el botón Calcular Ciclos
Y te aparecerá la cifra 1000000 en el campo:
Ciclos Delay |1000000 |
Por último sólo tienes que presionar el botón Genera Código y listo, en el campo de texto que está abajo se generará el código en asm que necesitas para hacer un retardo de tiempo
de 1 segundo, o del tiempo que quieras. Otra opción es especificar en el campo Ciclos Delay los ciclos de reloj que quieres que se retarde el Pic. El proceso de generación de código tardará un momento en función del tiempo programado.
Aquí abajo tienes el código generado:


Código:
;-------------------------------------------------------------
; Generado con PDEL ver SP  r 1.0  el 16/05/2008 Hs 03:32:45 a.m.
; Descripcion: Delay 1000000 ciclos
;-------------------------------------------------------------
DEMORA  movlw     .14       ; 1 set numero de repeticion  (C)
        movwf     PDel0     ; 1 |
PLoop0  movlw     .72       ; 1 set numero de repeticion  (B)
        movwf     PDel1     ; 1 |
PLoop1  movlw     .247      ; 1 set numero de repeticion  (A)
        movwf     PDel2     ; 1 |
PLoop2  clrwdt              ; 1 clear watchdog
        decfsz    PDel2, 1  ; 1 + (1) es el tiempo 0  ? (A)
        goto      PLoop2    ; 2 no, loop
        decfsz    PDel1,  1 ; 1 + (1) es el tiempo 0  ? (B)
        goto      PLoop1    ; 2 no, loop
        decfsz    PDel0,  1 ; 1 + (1) es el tiempo 0  ? (C)
        goto      PLoop0    ; 2 no, loop
PDelL1  goto PDelL2         ; 2 ciclos delay
PDelL2  clrwdt              ; 1 ciclo delay
        return              ; 2+2 Fin.
;-------------------------------------------------------------

El PicDel está adjunto en éste mensaje pero lo puedes descargar desde éste enlace:
http://www.todopic.com.ar/utiles/calcular_retardos.zip

Suerte godoyas.
Espero que esta información sea de ayuda para ti.
Saludos.
 

Adjuntos

  • picdel_181.zip
    90.5 KB · Visitas: 426
  • picdel_117.jpg
    picdel_117.jpg
    75 KB · Visitas: 1,380
Ya tienes 1 min. del 16F628A.

Código:
; Delay = 60 seconds
; Clock frequency = 4 MHz

; Actual delay = 60 seconds = 60000000 cycles
; Error = 0 %

	cblock
	d1
	d2
	d3
	endc

			;59999994 cycles
	movlw	0x23
	movwf	d1
	movlw	0xCB
	movwf	d2
	movlw	0x83
	movwf	d3
Delay_0
	decfsz	d1, f
	goto	$+2
	decfsz	d2, f
	goto	$+2
	decfsz	d3, f
	goto	Delay_0

			;6 cycles
	goto	$+1
	goto	$+1
	goto	$+1
 
Aqui les va mi aporte
Para el uso de PDEL, se agrega el siguiente segmento de codigo:

cblock
PDel0
PDel1
PDel2
endc

Lo cual equivale a los registros que ocupa y al stack level. Me funciono al 100, solo modifico corro el programa y agrego lo anterior y consigo una rutina con el tiempo q desee, espero les sirva....
 
Javilondo yo hago lo que tu dices con el picdel pero luego copio y pego en el mplab y me da errores que no se solucionar y ahi me quedo, mira tu mismo

Error[113] C:\LAB DE MICRO\LED TITILANDO.ASM 49 : Symbol not previously defined (Demora_150ms)
Error[113] C:\LAB DE MICRO\LED TITILANDO.ASM 53 : Symbol not previously defined (Demora_150ms)
Error[113] C:\LAB DE MICRO\LED TITILANDO.ASM 66 : Symbol not previously defined (PDel0)
Error[113] C:\LAB DE MICRO\LED TITILANDO.ASM 68 : Symbol not previously defined (PDel1)
Error[113] C:\LAB DE MICRO\LED TITILANDO.ASM 70 : Symbol not previously defined (PDel2)
Error[113] C:\LAB DE MICRO\LED TITILANDO.ASM 72 : Symbol not previously defined (PDel2)
Error[113] C:\LAB DE MICRO\LED TITILANDO.ASM 74 : Symbol not previously defined (PDel1)
Error[113] C:\LAB DE MICRO\LED TITILANDO.ASM 76 : Symbol not previously defined (PDel0)


Como arreglo esto vy que estoy haciendo mal?

Como Symbol previously defined todo ese poco de broma
 
Última edición:
que tal cheli mira el error que te sale es por que en la cabezera no defines PDelx(x=1,2,3..)como un registro te pongo un ejemplo

ALTO_2 EQU 0x0d ;DIRECCION DEL REGISTRO DEL PULSO ALTO
 
Personalmente opino que es un error hacer temporizaciones mínimamente largas con bucles vacíos.
¿Durante ese minuto el equipo no atiende a ningún botón, sensor etc? ¿Está sordo y ciego un minuto?

Lo normal es hacer los retardos de unos pocos mS con bucles vacíos y los de 1S o mas siempre con un timer e interrupciones. Vamos, es lo que siempre ha hecho yo.
 
hola ,mira tengo un problema con un servo y sus tiempos de control, busque susdatos y me sale que su velocidad es :(maraca modelcraft rs-2) de 180º
0.19 sec/60° a 4.8v
0.17 sec/60° a 6 v

con estos datos digamos qeu quiero usar el de 4.8v como haria apra calcular el tiempo para 67.5º , 90º 112.5º
estoy haciendo una araña robot la que es conocidad por todos


 
Atrás
Arriba