ImageImageImageImage
Hazte Socio (El Foro siempre Gratis)
Paga con Tarjetas+ Info www.arde.cc/socios

Empezar desde 0 en C, ejemplos de programación

Postea aqui toda la parte de programación del lenguaje C, C++, C#...

Moderator: Junta Directiva

User avatar
gONzAO
Usuario Avanzado
Usuario Avanzado
Posts: 217
Joined: Wed Oct 19, 2005 11:31 pm
Location: Alcorcón

Re: Empezar desde 0 en C, ejemplos de programación

Post by gONzAO » Tue Aug 22, 2006 10:22 pm

Hola:

Lo de use fast_io() es como tú dices.

En cuando a cómo indicar si un pin es de entrada o salida:
Cada puerto tiene asignado un registro. La correspondencia es:
PORTx <-> TRISx

Nos fijamos en el puerto B: TRISB es un registro de 8bits y cada corresponde a un pin del puerto. Así el bit de mayor peso (MSB) es para RB7 y el de menor peso para RB0. Por cosas de la electrónica si pones un bit a 1 ese pin se convierte en entrada y si lo pones a 0 el pin pasa a ser una salida. (Quien quiera saber por qué o más cosas sobre eso que pregunte o envie privado).
Tras el reset TRISx toma el valor 0xFF, es decir 11111111b, todos los pines son entradas.
Imaginamos que queremos poner el pin 3 como entrada y los demás como salida. No tenemos que pasarle como parámetro de la función el número del pin sino el valor 00001000b que es el 0x08. Por lo tanto set_trisb(0x08). Si le hubieramos mandado el pin en hexadecimal habría sido set_trisb(0x03) y quedarían los pines RB0 y RB1 como entradas y el resto como salida (00000011b).

Un saludo
gONzAO

User avatar
rashii
Administrador
Administrador
Posts: 533
Joined: Mon Aug 22, 2005 10:55 am
Nombre: rashii
Location: Madrid
Contact:

Re: Empezar desde 0 en C, ejemplos de programación

Post by rashii » Tue Aug 22, 2006 11:00 pm

Si, gizer si no te quedo claro lo de fast_io esta tambien explicado en la teoria que colgue en lo de entradas y salidas. Un saludo.

User avatar
Nocturno
Principiante
Principiante
Posts: 36
Joined: Mon Aug 21, 2006 5:48 am
Location: Sevilla
Contact:

Re: Empezar desde 0 en C, ejemplos de programación

Post by Nocturno » Wed Aug 23, 2006 6:57 am

Los comandos fast_io y standard_io especifican al compilador si el control de los TRIS queda en manos del programador, o por el contrario es el compilador quien debe colocarlos.

Me explico:

STANDARD_IO: al especificar este modo, el compilador colocará el comando set_tris_x() donde necesite cambiar los pines de entrada a salida o viceversa, para asegurarse que los comandos OUTPUT o INPUT funcionan correctamente.

FAST_IO: el compilador se olvida por completo de los TRIS y es el programador quien debe colocar el set_tris_x donde haga falta.

Mi experiencia con PIC me dice que la mayoría de las veces configuras el sentido de los pines con set_tris una sóla vez al principio del programa y ya no vuelves a tocarlo más, por lo que siempre prefiero el FAST_IO. Así evito que el compilador me guarree el código.

Pero supongo que es una cuestión de preferencias, al fin y al cabo, el compilador te da las dos opciones.

Una cosa que también me gustaría aclarar para los que aprenden C. Estos comandos son característicos de CCS pero no los encontrarás disponibles en el resto de compiladores, por lo que si estás utilizando C18 o Hi-tech C te petará al compilar.
Un saludo desde Sevilla, España.

Visita MicroPIC


User avatar
gizer20
Usuario Desarrollador
Usuario Desarrollador
Posts: 1565
Joined: Sun Sep 25, 2005 9:29 pm
Location: Sabadell
Contact:

Re: Empezar desde 0 en C, ejemplos de programación

Post by gizer20 » Wed Aug 23, 2006 5:51 pm

entonces ke kompilador es el mas extendido?

User avatar
Nocturno
Principiante
Principiante
Posts: 36
Joined: Mon Aug 21, 2006 5:48 am
Location: Sevilla
Contact:

Re: Empezar desde 0 en C, ejemplos de programación

Post by Nocturno » Wed Aug 23, 2006 8:20 pm

No tengo ningún estudio de cuota de mercado de los compiladores, pero de todos los conocidos que tengo en el foro Todopic, el 99% utiliza CCS.
Un saludo desde Sevilla, España.

Visita MicroPIC


User avatar
gizer20
Usuario Desarrollador
Usuario Desarrollador
Posts: 1565
Joined: Sun Sep 25, 2005 9:29 pm
Location: Sabadell
Contact:

Re: Empezar desde 0 en C, ejemplos de programación

Post by gizer20 » Fri Aug 25, 2006 12:55 am

una pregunta puede no tenga relacion pero komo no se si son codigos fuente o ke os la hago sino la cambio( estoy leyendome los manuales no penseis ke me e olvidado del post)

LA pregunta es : mrsuite1_0-beta-source.tgz este archivo ke e pusto antes kon ke programa lo tengo ke abrir es un simulador de robots modulares pero no se ke tipo de archivo es?

Otra pregunta si un archivo .hex se kiere descompilar kon el CCs se podra aunque el archivo desde donde se kompilo originalmente se asm?

User avatar
Nocturno
Principiante
Principiante
Posts: 36
Joined: Mon Aug 21, 2006 5:48 am
Location: Sevilla
Contact:

Re: Empezar desde 0 en C, ejemplos de programación

Post by Nocturno » Fri Aug 25, 2006 6:28 am

La extensión TGZ es un fichero comprimido de Unix / Linux y puedes abrirlo con Winzip o Winrar sin problemas.

Te recomiendo metas en favoritos la web http://filext.com donde puedes consultar el significado de cualquier extensión que exista.

No puedes descompilar un HEX hacia C, lo máximo es descompilarlo hacia ASM para lo que existen aplicaciones específicas.
Un saludo desde Sevilla, España.

Visita MicroPIC


User avatar
Qkiyo
Forero Habitual
Forero Habitual
Posts: 106
Joined: Sat Nov 04, 2006 3:36 pm
Location: Madrid

Re: Empezar desde 0 en C, ejemplos de programación

Post by Qkiyo » Tue Nov 07, 2006 9:48 pm

Ola a todos. Ants de nada gracias por ste post que me esta sirviendo de gran ayuda, ya k e empezado con los PIC y me sta costando cogerlo. Tngo algunas preguntillas..:
- ¿xk configurais los puertos como salidas o entradas?¿no se configuran al principio?
- en los 1ºos ejemplos que poneis, desde el "#define..." hasta el "void main void" (incluido), lo pone el compilador solo..¿no? (por la configuración que acemos al principio),
- y otra pregunta, el bucle infinito k aceis, ¿es correcto acerlo con:?

for (;;)
{

}

No se xk,me da error al compilar,a no ser k lo meta dentro del "void main..". Alguien me puede decir de algun set de instrucciones, estoy echo un liooOo :( . Muxas gracias y salu2 a tdos!!

User avatar
gONzAO
Usuario Avanzado
Usuario Avanzado
Posts: 217
Joined: Wed Oct 19, 2005 11:31 pm
Location: Alcorcón

Re: Empezar desde 0 en C, ejemplos de programación

Post by gONzAO » Tue Nov 07, 2006 11:03 pm

Hola:

Los puertos son de entrada/salida (E/S), es decir, la información puede entrar al microcontrolador o salir del mismo. En cada instante, un puerto o pin de un puerto es sólo una cosa, entrada o salida. Si quieres leer un dato del exterior hay que configurarlo como entrada y si quieres sacar información al exterior debemos configurarlo como salida.
Si unos pines siempre van a ser de salida en todo el programa y otros siempre serán entradas, pues se pone al principio y listo. En caso de que un puerto se use como entrada y salida en el mismo programa habrá que estar configurándolo "en directo", vamos, según se va ejecutando el programa. Para ello al principio de este hilo se explicaba cómo hacerlo.

En cuanto a lo del bucle infinito es que tiene que estar dentro de la función main. "Todas las instrucciones van dentro de funciones."

Un saludo
gONzAO

User avatar
Qkiyo
Forero Habitual
Forero Habitual
Posts: 106
Joined: Sat Nov 04, 2006 3:36 pm
Location: Madrid

Re: Empezar desde 0 en C, ejemplos de programación

Post by Qkiyo » Fri Dec 29, 2006 12:19 am

Buenas!

Buscando algo de ayuda, he vuelto a dar con este hilo, k veo k esta un pokillo abandonado..la verdad esk vendría muy bien k siguieramos poniendo ejemplos y explikaciones para la gente k no tiene apenas experiencia.

Bueno, llevo cosa de mes y medio usando CCS, y me doy cuenta k es un compilador de lo más práctico e intuitivo. Empecé de 0 prácticamente, y ahora estoy ya con la programación de un robot.
Recomiendo a aquel k empiece, k haga lo k kain589 recomendó en otro tema (k derivó en este), que se propongan retos muy simples, como el de encender y apagar un led, basándose en ejemplos ya hechos, y posteriormente modificándolos al gusto o necesidades de cada uno.
Así es como me he ido apañando y da resultados :wink: .

Aprovecho para comentar una duda (y perdonad si no fuera indicado hacerla por aki). Necesito controlar la velocidad de dos motores mediante PWM (Pulse With Modulation) por programación. He mirado por internet muchos ejemplos, pero la mayoría están en ensamblador,y apenas me entero.
El propio CCS trae un ejemplo, pero tmpk termino de coger la "mecánica" de la programación. Se en k consiste lo k debo hacer, pero no se como hacerlo. Os agradecería si alguien me pudiera mostrar un ejemplo explikado, o algo para poder continuar, xk la verdad esk me es muy necesario...

Muchas gracias a todos y SaLu2!!

PD: Contínuad con este tema!!, kreo k podría ser muy útil para principiantes :D

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest