Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

18/01/2011 #1


como controlar el tiempo en 16F84(mikroC)
hola como estan. espero que bien..

Nesecitaba su ayudas porque quiero realizar un secuenciador con el pic 16F84A y como recien comienzo con mikroC me sale muchos errores.

les cuento cual es mi proyecto.

Quiero utilizar Porta F0 a F3 para entrada (F0, F1 manejar el tiempo, F2,F3 manejar los juegos de luces) y Portb para manejar los led(F0,F7).

comence por diseñar como manejar el tiempo por las entradas F0 reduce la velocidad, F1 aumenta la velocidad..

cree un variable "t" que ira aumentando y reduciendo su valor y mandando ese valor por parametro a la funcion Delay_ms(t), pero me sale un error y no se de que se trataria..

unsigned short int t;

void main(void)
{
TRISA=1;
TRISB=0;
t=100;
while(1)
{
if (PORTA.F0==1)
{
t=t+100;
if(t=2000)
t=2000;
}
if(PORTA.F1==1)
{
t=t-100;
if(t=100)
t=100;
}
Delay_ms(t);
PORTB=0x01;
}
}
ese es el codigo..

y les coloco imagenes de lo que quiero armar asi me dan una manito con la programacion...

desde ya muchas gracias..

saludos
28/04/2011 #2


funcion delay_ms() en mikroc pro for pic
tengo el mismo problema amigo.. pareciera que la funcion delay_ms() no acepta como argumento una variable, solo una constante... yo estoy tratando de controlar un motor paso a paso unipolar con un 16f628a y mi programa lo hago en mikroc.. y no consigo hacer retardos variables... ojala alguien mas experimentado pueda sacarnos la duda,... un abrazo
28/04/2011 #3


Y si se pasan al CCS?No hay mucha diferencia y es mas "completo"
28/04/2011 #4


y en CCS la funcion delay_ms() acepta una variable como argumento???
28/04/2011 #5


un amigo me ayudo a controlar el tiempo sin el Delay_ms().

Lo solucione configurando interrupciones..

Delay_ms(250); //
/////////////////
// Luego configuro Timer0 para interrupciones
// Si Timer0 1:128 Scaler - Desborda cada 128*4 ciclos de reloj
// esto a 4Mhz es aprox 128 useg
OPTION_REG = 0x06; //Timer0 1:128
// Ahora tengo que habilitar las interrupciones
INTCON.T0IE = 1; //Habilito Interrupciones por desborde de Timer0
INTCON.GIE = 1; //Habilito Interrupciones generales
espero que puedan solucionar sus problemas como solucione el mio
28/04/2011 #6


Bueno por que no hacen un bucle con For(; o while(){} repitiendo "Delay_ms(1)" varias veces cuanto tiempo quieran.Ya saben usen el C.
29/04/2011 #7


muchas gracias por el aporte amigos... seguro me solucionara el problema.. despues les cuento como quedo.
29/04/2011 #8


yo habia echo con bucle pero a la hora de probar tenia q esperar q termine una secuencia para q haga el cambio de tiempo. x eso me ayudaron con la interrupciones ya q lo hace en el acto
30/04/2011 #9


gente ya solucione el problema y quedo andando todo a la perfeccion, por si a alguien le interesa es sobre el control de un potor paso a paso unipolar con un pic 16f628a y un IC ULN2003, use el compilador CCS (los fuses los configuro directamente en el winpic800).. Si alguien quiere aportar alguna mejora la tendre muy en cuenta, porque recien empiezo con esto y soy muy inexperto.. saludos

codigo:

#include <16F628A.h>
#use delay (clock=4000000)
int t;
void main() {
set_tris_b(0x00);
set_tris_a(0xFF);
t=3000;
while(1)
{

if((input(PIN_A0)==1)&&(t>10))
t=t-10;


if((input(PIN_A1)==1)&&(t<6000))
t=t+10;


if(input(PIN_A3)==0)
{
delay_ms(t);
output_high(PIN_B6);
output_low(PIN_B2);
output_low(PIN_B0);
output_low(PIN_B1);
delay_ms(t);
output_low(PIN_B6);
output_high(PIN_B2);
output_low(PIN_B0);
output_low(PIN_B1);
delay_ms(t);
output_low(PIN_B6);
output_low(PIN_B2);
output_high(PIN_B0);
output_low(PIN_B1);
delay_ms(t);
output_low(PIN_B6);
output_low(PIN_B2);
output_low(PIN_B0);
output_high(PIN_B1);
}
if(input(PIN_A3)==1)
{
delay_ms(t);
output_high(PIN_B6);
output_low(PIN_B2);
output_low(PIN_B0);
output_low(PIN_B1);
delay_ms(t);
output_low(PIN_B6);
output_low(PIN_B2);
output_low(PIN_B0);
output_high(PIN_B1);
delay_ms(t);
output_low(PIN_B6);
output_low(PIN_B2);
output_high(PIN_B0);
output_low(PIN_B1);
delay_ms(t);
output_low(PIN_B6);
output_high(PIN_B2);
output_low(PIN_B0);
output_low(PIN_B1);

}
}
}
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.