Autor Tema: Microcursillo en C  (Leído 178957 veces)

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

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Microcursillo en C
« Respuesta #495 en: 10 de Febrero de 2008, 10:35:57 »
La primera compara valor con el resultado de la operacion matematica, la segunda opcion le asigna a valor el resultado de la misma... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Tho0oR

  • PIC10
  • *
  • Mensajes: 18
Re: Microcursillo en C
« Respuesta #496 en: 12 de Febrero de 2008, 16:56:39 »
Hola amigos!

Necesito ayuda con un programa de un servo motor.

El problema parece sencillo, se trata de que el programa te de la opcion de elegir los grados,  y luego al pulsar un boton ( RB0 por ejemplo ) gire esos grados.

Parece sencillo pero nose ni como empezar.


Cualquier tipo de ayuda sera muy bienvenida!

Muchas gracias de antemano

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Microcursillo en C
« Respuesta #497 en: 16 de Febrero de 2008, 08:17:08 »
Un Encoder angular podría serte útil.


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado Trino

  • PIC10
  • *
  • Mensajes: 45
Re: Microcursillo en C
« Respuesta #498 en: 14 de Julio de 2008, 08:35:06 »
Hola a todos, en primer lugar deciros que este foro es de lo mejor que he encontrado en internet en cuanto a programacion de pics. Soys geniales  ;)
bien a lo que iva, yo empece con esto de los pics en lenguaje ensamblador (asm) y en esto de C aun estoy un poco verde, una cosa que queria saber es si se pueden realizar saltos en C con alguna instruccion, ya que tengo que testear 2 entradas y segun la combinacion que tengan (00,01,10,11) he de dar un salto a un lugar o a otro.
Voy a concretar un poco mas....
tengo 2 entradas en las que siempre van a seguir la secuencia ascendente (00,01,10,11,00,01,10,11,00.....) o descendente (00,11,10,01,00,11,....)  y cada vez que cambia ascendentemente he de incrementar en 1 un contador y por el contrario cada vez que desciende he de decrementar en 1 dicho contador pero para ello he de testear en que posicion está al iniciar el programa y dar un salto asta dicha posicion y de ahi seguir con el programa.
Y claro no se como dar ese salto en C, si alguien me pudiera orientar lo agradeceria mucho.

Gracias a todos de antemano.

Un Saludo.

Desconectado firepic

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1130
    • JC Servicios
Re: Microcursillo en C
« Respuesta #499 en: 14 de Julio de 2008, 11:14:02 »
Qué tal trino!
Para programar en C tienes que quitarte un poquito las mañas que trae uno de assembler... eso de saltos y demás...
En C no se hacen saltos, sino condicionales (if-else) o ciclos (while, for, switch).
Bueno habría que ver el código completo para saber qué se podría hacer. Pero te repito, tienes que cambiar un poco la lógica de programación.
Un cordial saludo, nos leemos!  :mrgreen:
"Por la presunción solo se ocasiona una lucha, pero con los que consultan juntos hay sabiduría" (Proverbios 13:10).
Visita Mi Sitio Web

Desconectado Trompimania

  • PIC10
  • *
  • Mensajes: 1
Re: Microcursillo en C
« Respuesta #500 en: 15 de Julio de 2008, 23:08:11 »
Estimados
¿Quisiera saber si alguen conoce alguna aplicacion para comunicar un pic a travez de un servidor OPC, si no es OPC puede ser un DDE?, de esta manera la informacion de un PIC podria ser levantada por una planilla exel, una base de datos,...... Este tema me pareceria muy interesante
Gracias

Desconectado victorga74

  • PIC10
  • *
  • Mensajes: 2
Re: Microcursillo en C
« Respuesta #501 en: 13 de Agosto de 2009, 13:43:51 »
ya se que hace casi 4 años pero en que quedo el microcursillo, le siguieron porque esta bien interesante

Saludos :) :)

Desconectado myesid

  • PIC10
  • *
  • Mensajes: 2
Re: Microcursillo en C
« Respuesta #502 en: 14 de Agosto de 2009, 13:44:04 »
hola a todos soy nuevo en esto del ccs miren este mi programa de parpadeo de un led


/////Programa para parpadeo de led en CCS
// elaborador por Miller Yesid Galeano Santana

#include <16f877A.h>  // llama el tipo de dispositivo en este caso el pic
#fuses XT // define el tipo de reloj y protecciones para el programa
#use delay(clock=4000000)// define la frecuencia de reloj ademas de el tiempo base del watchdog y valor del reset del mismo
// definicion de puertos
#byte portb=6 // se define el puerto a usar y su direccion en hexadecimal
// programa principal
void main ()
{


set_tris_b(0); //configura el puerto b de salida  y ademas lo resetea
portb=0;

while(1)
{
delay_us(1000); // retardo de 1000uS para iniciar parpadeo
portb=1;
delay_us(2000);
portb=0;

}


}

mas sencillo sin la necesidad de crear contadores

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Microcursillo en C
« Respuesta #503 en: 14 de Agosto de 2009, 13:51:17 »
Hola myesid! Para ir mejorando, no es necesario definir el puerto, sino que puedes utilizar output_high(PIN_Bx) y output_low(PIN_Bx) para el control de un pin.
Después output_b(0xAA) por ejemplo para control de todo el puerto, etc.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Microcursillo en C
« Respuesta #504 en: 25 de Octubre de 2009, 18:55:07 »
Hola a todos, estoy empezando a programar en C y la verdad no parece tan dificil como el asm. Aqui os dejo otro programita de led's usando funciones.

#include <16F84.h>
#use delay(clock=4000000)
#fuses XT,NOWDT,NOPROTECT
#use standard_io(B)

//////////////////////// FUNCIONES //////////////////////

  void Parpadea_0(int Repeticiones)
  {
   int i;
   for(i=1;i<=Repeticiones;++i)
   {
      output_high(pin_B0);
         delay_ms(500);
      output_low(pin_B0);
         delay_ms(500);
   }
  }
 
 
  void Parpadea_1(int Repeticiones)
  {
   int i;
   for(i=1;i<=Repeticiones;++i)
   {
      output_high(pin_B1);
         delay_ms(500);
      output_low(pin_B1);
         delay_ms(500);
   }
  }
 
  void Parpadea_2(int Repeticiones)
  {
   int i;
   for(i=1;i<=Repeticiones;++i)
   {
      output_high(pin_B2);
         delay_ms(500);
      output_low(pin_B2);
         delay_ms(500);
   }
  }
 
  void Parpadea_3(int Repeticiones)
  {
   int i;
   for(i=1;i<=Repeticiones;++i)
   {
      output_b(0x07);
         delay_ms(500);
      output_b(0x00);
         delay_ms(500);
   }
  }
     
/////////////////////////////  PROGRAMA PRINCIPAL /////////////////////////
  void main()
{
   set_tris_b(0x00);
   output_b(0x00);
   
   Parpadea_0(5);
   Parpadea_1(5);
   Parpadea_2(5);
   Parpadea_3(5);
   
  while(true);

 
 PD: Ya se que es una tonteria de programa pero para uno que empieza como yo cuesta lo suyo escribir el codigo y que ademas que funcione.

 Miquel_S
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Microcursillo en C
« Respuesta #505 en: 25 de Octubre de 2009, 23:38:51 »
Muy bien Miguel! Una cosita, cuando definís que el compilador trate los puertos como estándar no es necesario definir los tris, porque cada vez que se actué sobre el puerto el compilador modificará el tris según corresponda  ;-) Esto podes verlo en C/ASM List


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Microcursillo en C
« Respuesta #506 en: 26 de Octubre de 2009, 11:44:31 »
Gracias suky por la observacion, lo tendre en cuenta. :shock:
 
 Miquel_S
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.