Como variar frecuencia de un pulso con pic16f877a

hola a todos y gracias de antemano por tomarce la molestia de leer esto y ayudarme.

Soy nuevo en el tema de pic's nose ni lo basico y necesito ayuda con un ejercico utilizando el PIC16f877A.

estoy realizando mi titulacion y lo que necesito es que el programa del pic me proporcione 6 pulsos los cuales sean variables en frecuencia desde 5Hz hasta 120Hz.

lo que e logrado es obtener un programa que me proporciona los 6 pulsos como los quiero,
cada uno de los seis pulsos tiene su salida individual (nota lo de abajo solo es para que vean que cada pulso tienen una salida diferente)

bsf PORTB,1 ;PARA EL PULSO NUMERO 1
bsf PORTB,2 ;PARA EL PULSO NUMERO 2
bsf PORTB,3 ;PARA EL PULSO NUMERO 3
bsf PORTB,4 ;PARA EL PULSO NUMERO 4
bsf PORTB,5 ;PARA EL PULSO NUMERO 5
bsf PORTB,6 ;PARA EL PULSO NUMERO 6


el programa que tengo funciona en 6 tiempos.
en el primer tiempo dispara bsf los pulsos 1, 5 y 6 los otros tres pulsos se quedan en bcf cero
en el segundo dispara 1, 2 y 6
en el tercero 1, 2 y 3
en el cuarto 2, 3 y 4
en el quinto 3, 4 y 5
y en el sexto 4, 5 y 6 y regresa al primer tiempo

los sieis tiempos siempre deben de tener la misma duarcion tiempo1=tiempo2=tiempo3, etc.

ahora lo que quiero es hacer que tengan una duracion variable la cual pueda controlar manualmente ya sea con una resistencia variable o un par de botones.

pero el problema es que no se hacerlo.

"El nombre" al cual agradesco me sujirio esto:

creas una temporización de la unidad que quieras usar (ejem 10ms) y te creas una variable que es la que guarda el valor del tiempo.
sacas el valor y temporizas y lo haces la veces que tengas en la variable. luego secas el siguiente y haces lo mismo y adí sucesivamente.
HAcer que la varible aumente o disminuya con un par de pulsadores es facil ¿no? (ostras!)

claro que suena facil pero no se hacerlo, el programa que proporciona los pulsos me ayudaron ha hacerlo pero no a utilizar el pic asi que porfavor si alguien quiere podran ayudarme diciendome exactamente que cosas son las que se escriben en el mplab con todo y comentarios.
 
?seis pulsos?
No entiendo. Lo que quieres son seis pulsos por una salida un impulso por seis salidas.
Cuando ataques un problema tienes que tener muy clara la cosa. En ese momento tienes que expresarte de forma que los demas no enteremos ya que desconocemos lo qu ese cuece en tu cabeza. Yo, como buen ignorante, no entiendo lo que pretendes ya que has metido el PWM.
La verdad es que no me he alcarado en tus objetivos. Edita el post anterior e intenta aclarar menor la cosa. (o no, ya que soy el unico que no se entera)
 
hehehe parece que no pude explicarme bien creo que lo de pwm se me olvido borrarlo cuando escribi el mensaje solo lo puse pero pues la explicacion de abajo es lo que cuenta.

cada uno de los seis pulsos tiene su salida individual (nota lo de abajo solo es para que vean que cada pulso tienen una salida diferente)

bsf PORTB,1 ;DISPARA EL PULSO NUMERO 1
bsf PORTB,2 ;DISPARA EL PULSO NUMERO 2
bsf PORTB,3 ;DISPARA EL PULSO NUMERO 3
bsf PORTB,4 ;DISPARA EL PULSO NUMERO 4
bsf PORTB,5 ;DISPARA EL PULSO NUMERO 5
bsf PORTB,6 ;DISPARA EL PULSO NUMERO 6


el programa que tengo funciona en 6 tiempos.
en el primer tiempo dispara los pulsos 1, 5 y 6 los otros tres pulsos se quedan en bcf cero
en el segundo dispara 1, 2 y 6
en el tercero 1, 2 y 3
en el cuarto 2, 3 y 4
en el quinto 3, 4 y 5
y en el sexto 4, 5 y 6 y regresa al primer tiempo

ahora lo que quiero es hacer que cada uno de esos seis tiempos tenga una duracion variable la cual pueda controlar manualmente ya sea con una resistencia variable o un par de botones.
 
es decir que en el primer tiempo puedas quedarte el tiempo que tengas programado (ejemplo 1seg) que es diferente del segundo (de 1,5 seg)
¿¿¿¿¿¿¿y asi sucesivamente?
 
nop

cada uno de esos 6 tiempos debe de durar lo mismo.

por ejemplo que cada uno dure un seg. el total por los 6 tiempos seria 6 segundos.

lo que quiero es poder hacer que duren menos tiempo o mas tiempo es decir que decido que ahora deben de durar 0.5 segundos cada tiempo y el total de los seis sera 3seg.
 
A ver como te contesto cotesmente.

Puedes hacerlo por interrupcion o sin ella.

Piensa en lo que quieres hacer y lo haces. Es decir: te creas una temporización de la unidad que quieras usar (ejem 10ms) y te creas una variable que es la que guarda el valor del tiempo.
sacas el valor y temporizas y lo haces la veces que tengas en la variable. luego secas el siguiente y haces lo mismo y adí sucesivamente.
HAcer que la varible aumente o disminuya con un par de pulsadores es facil ¿no? (ostras!)
 
gracias man

se que no es muy dificil pero como determinas entradas para los pulsadores, como defines variables, y lo de la temporizacion

hehe como dije no se ni lo basico de programar pic's
 
Atrás
Arriba