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

Temas similares

20/09/2012 #41


Ok gracias x la ayuda
21/09/2012 #42


Lo mas facil es declarar 2 variables tipo array, por ejemplo para las primera letras y asumiendo catodo comun:

Código PHP:
int alphaB [3] = {
     
//   abcdefgh
        
0b11110011,  //   a
        
0b00011111,  //   b
        
0b11001111,  //   c
    
};

int alphaD [3] = {
     
//   kmnprstu
        
0b00010001,  //   a
        
0b00010001,  //   b
        
0b00000000,  //   c
    
}; 
Para mostrar las letras utilizas algo asi:

Código PHP:
         PORTB alphaB[i];
         
PORTD alphaD[i];
         
Delay_ms(500); 
donde i es la letra que quieres mostrar.

saludos
26/10/2012 #43


uso del delay_ms
hola gente muy buenos sus aportes, ahora bien tengo un problema con el delay_ms en mikroc no me lo toma me dice que esta indefinido,necesito hacer el control de servos a-travez de pulsadores pero necesito un retardo para el PWM y no se como hacerlo si me pudieran ayudar se los agradecería
18/07/2013 #44


esperar sin usar delay
Hola, inicio con la programación de pics estoy usando un 16f887 y quiero ejecutar 2 funciones simultaneas una para invertir el giro de un motor {puerto B2} y simultaneamente activar otro {puerto A3}, pero al esperar en la función delay no revisa o hace el resto del programa hasta acabar la orden

Código PHP:
if(portb.f2==1){ // Recibe señal de inicio
             
delay_ms(300); // 1/2 pausa
             
porta.f4=1//giro derecha
             
delay_ms(1000); //duracion del giro derecha
             
porta.f4=0//apaga giro derecha
             
delay_ms(600); //pausa
             
porta.f5=1;    // enciende giro izquierda
             
delay_ms(1000); //duracion giro izquierda
             
porta.f5=0//apaga giro izquierda
             
delay_ms(300); // 1/2 pausa 
Espero puedan ayudarme, Gracias!
19/07/2013 #45


Buenos días. Te cuento, en los microcontroladores (como norma general) solo corren un hilo de programa, es decir, no pueden ejecutar 2 instrucciones simultaneamente, se hace una cosa y despues otra. Piensalo como cuando lees un libro, vas leyendo palabra por palabra fila por fila, puedes saltar de una fila a otra o saltar paginas... pero estar leyendo 2 filas/paginas a la vez lo dejaremos a mentes privilegiadas.

Solución, hacer uso de interrupciones y/o contadores, busca información sobre esto.

Cualquier otra duda pasate. Un saludo
07/03/2014 #46


Nuevo en programación con MikroC
Hola,

Alguien me puede decir como desactivar la opción de que al cerrar la llave "}" me meta en la linea anterior un comentario"//".

No lo veo en la configuracion y me está empezando a mosquear bastante.

Gracias
07/03/2014 #47


No se si ya se habló de esto por aqui, en todo caso yo ya hace años desistí de intentar arreglar esto. No se si en las nuevas versiones le hayan dado solución ya, pero entonces la única manera de evitarlo era poniendo el teclado en modo inglés, donde ahi los simbolos cambian de lugar pasando a ser ^ para { y * para }. Es decir, las teclas que estan encima y pulsando Shift (May) en lugar de Alt.

Un saludo
15/05/2015 #48


Nuevo en programación con MikroC
Buenas Noches amigos del foro, actualmente estoy desarrollando un proyecto y en una parte me quede atascado, ya que no encuentro como solucionar mi problema, espero alguno de ustedes pueda ayudarme.

La cuestión es la siguiente, tengo un contador que va contando de 1 en 1 a través de un pulsador, esa variable es /dist/, y a su vez esa variable la guardo en /contX=dist/, cuando hay una interrupción /H/, que es otro pulsador se resetea /dist/ y se cambia la variable de guardado a /contY=dist/, y cuando se vuelva a producir la interrupción /H/ esta vuelva a guardar /dist/ en /contX=dist/ y así sucesivamente. Tengo funcionando hasta que se cambia la variable y viceversa, pero lo que quiero saber es como podría guardar el valor en que quedo /contX/ antes de resetear /dist/, y cuando se vuelva a guardar en /contX/ la variable siga contando desde donde se dejo. Espero me haya explicado jeje.

Un ejemplo seria:
Empieza el contador a funcionar
contX=dist (hay pulso /dist/ valdría 1, /contX/ valdría 1)
contX=dist (hay pulso /dist/ valdría 1, /contX/ valdría 2)

Interrupción (Cambio de variable a guardar /dist/ se resetea)

contY=dist (hay pulso /dist/ valdría 1, /contY/ valdría 1)
contY=dist (hay pulso /dist/ valdría 1, /contY/ valdría 2)
contY=dist (hay pulso /dist/ valdría 1, /contY/ valdría 3)

Interrupción (Cambio de variable a guardar /dist/ se resetea)

contX=dist (hay pulso /dist/ valdría 1, /contX/ valdría 3)
contX=dist (hay pulso /dist/ valdría 1, /contX/ valdría 4)

Interrupción (Cambio de variable a guardar /dist/ se resetea)

contY=dist (hay pulso /dist/ valdría 1, /contY/ valdría 4)
contY=dist (hay pulso /dist/ valdría 1, /contY/ valdría 5)
contY=dist (hay pulso /dist/ valdría 1, /contY/ valdría 6)

Y así sucesivamente...

Espero me hayan entendido, creo que es con otra variable que se guardaría el valor, pero la verdad ya todo el día he intentado de las formas que se me ocurrieron y no me ha dado resultado. Espero su grata ayuda, Gracias! ...
16/05/2015 #49
Moderador

Avatar de D@rkbytes

Sobre lo que expones, ¿Por qué mejor no incrementas la variable "dist"?

Por ejemplo:
// Servicio de interrupción:
dist ++;
contX = dist;

Así cuando ocurra el reset de la variable "dist", la variable "contX" contendrá el valor global de "dist"
06/01/2016 #50


Nuevo en programación con MikroC
Hola. Buenas noches.
Soy nuevo ocupando este compilador, y lo que necesito hacer es una interfase entre Labview y mi PIC.
El problema que tengo, es que Labview envía información por el puerto serial en forma de caracteres.

Ejemplo: envía '0255', pero dicho carácter yo lo necesito en número float para hacer operaciones con él.
¿Cómo le puedo hacer?
07/01/2016 #51
Moderador

Avatar de D@rkbytes

Un número con decimales o punto flotante, se puede convertir en un número entero si se multiplica por 100.

Ejemplo: 1234.56 * 100 = 123456

Ya en el PIC puedes convertir la cadena "123456" en un entero de 16 o 32 bits.
Después usas una variable Float para dividirlo entre 100 y obtener el número con punto flotante.
09/01/2016 #52

Avatar de albertoxx

float Flotante;

Flotante = atof("212.221");
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.