"Hola mundo!" utilizando el PCW C Compiler

#1
Bueno, este post estaría mejor para publicarlo en mi blog (si tuviera) pero espero que no les moleste que lo haga aquí, la cosa es que acabo de dar el primer paso en la programación pic desde ensamblador a C, utilizando el PCW C Compiler IDE.

Desde hace tiempo quería programar mis pics en C pero tal vez no había tenido la necesidad de hacerlo, ahora por un proyecto que se me presentó me veo obligado a realizar operaciones que bien las podría hacer en ensamblador pero me llevarían mucho tiempo así que hoy instalé el CCS y me puse a leer tutoriales, yo nunca he programado C así que aún no tengo nociones sobre esto pero logré hacer un programita que sería el equivalente al "Hola mundo!" en esto del mundo de los microcontroladores: un programa para encender y apagar un led.

Aquí dejo el código, aunque no sea nada emocionante pero es el primero que hago.

Aprovecho la ocasión para pedir ayuda sobre donde localizar literatura que me permita aprender a programar en C de una manera sencilla y de ser posible rápida. Muchas gracias y desde ahorita les aviso que ahora que intente programar en C me saldrán mil dudas y muchas de ellas es posible que las exponga en este foro.
 

Adjuntos

#2
Se podría hacer (Este podría ser un biuen comienzo para ello), todo una retaila de programillas para los que empezamos a programar en C.

Programitas simples, como el tuyo, para poder migrar al C.

Gracias Pic-man
 
#3
Mira los ejemplos que hay dentro de archivos de programa/picc/examples

Te recomiendo encarecidamente una lectura de programacion de C, solo necesitas las nociones basicas, pero esenciales como son las funciones, librerias, visibilidad.

Tambien es inportante tomar la idea de la "programacion estructurada".
Es un concepto que te permitiría hacer programas grandes y facilmente controlables.

Como sabes en asembler al final con tantos saltos y bucles tes pierdes, con una programacion estructurada no te pasara.

Te puedo garantizar que si pierdes ybo o dos dias leyendolo, ganas varias semanas de programacion y sobretodo de busqueda de fallos.
 
#5
siento no poderte ayudar, te sirve cualquier libro de C ya que lo que necesitas el concepto y no tanto los tokens (por ejemplo printf, return.).

me explico con un ejemplo de lo que te interesa:

Una funcion es un trozo de subprograma que le pasamos unos dator y nos retorna un resultado.

Te recomiendo que te pases por cualquier biblioteca y mires que tienen.

Te interesa aprender programacion estructurada o tacticas para simplificar la programacion (divide y venceras)

Visibilidad y tratamiendo de variables, matrices o estrucs y uniones
Tipos de funciones y como pasar los datos.


Solo C basico, nada de polimorfismos y cuentos de esos del C++ (es una extension) que por cierto ahora estan en el candelero por el propio creador por su ineficiencia en proyectos grandes.
 
#7
Proposito de novatos... yo soy uno mas!
y el tema es que el otro dia me instale al igual que pic-man el PWC... y la verdad me gusto mucho y me gusto el help, los ejemplos, todo!... Pero, la cosa es que cuando quise hace un input... me di cuenta que el help esta medio flaco.
Como recien empiezo con el PWC lo unico que pretendia era prender un led, por el PIN_B0, y escribi algo asi;

#include <16F84A.h>

#use (clock=400000) //esta linea no me la acuerdo bien, pero asi era.

void main (void)
{
do{
output_bit(PIB_B0, 1);
delay_ms (1000);
output_bit(PIN_BO, 0);
} while (TRUE);
}

este pedazo codigo deberia prender y apagar... ¿no?

Muchas gracias!
 
#8
con ese codigo siempre la veras encendida te falta poner :
oid main (void)
{
do{
output_bit(PIB_B0, 1);
delay_ms (1000);
output_bit(PIN_BO, 0);
delay_bit(1000); ---- eso es lo que te falta
} while (TRUE);
}
 
#10
Creo que el delay_bit es un error, una mezcla entre delay_ms y output_bit. El código correcto sería asi:
Código:
#include <16F84A.h>

#use (clock=4000000) // Importante, poner aquí la frecuencia del oscilador
//  que usa el PIC porque delay_ms() lo necesita para calcular el tiempo

void main (void)
{
do{
output_bit(PIB_B0, 1);  // pone el pin a 1
delay_ms (1000);       // espera 1 segundo
output_bit(PIN_BO, 0); // pone el pin a 0
delay_ms (1000);       // espera otro segundo, 
//      sino inmediatamente se pondrá a 1 y no se verá el efecto
} while (TRUE);        // bucle infinito
}
 
#12
Bueno, como comente al principio... soy nuevo en PICC...
El codigo que pongo a cont, deberia prender y apagar el pin B0 segun la lectura del pin A0

#include <16F84A.h>
#fuses XT
#use delay (clock=4000000)
#use fast_io(A)

void main (void)
{
do{
if (!input(PIN_A0))
output_bit (PIN_B0, 1);
else
output_bit (PIN_B0, 0);
} while (TRUE);
}

Lo curioso, es que cuando pongo un 1 en el pin A0, aumenta la intesidad del led.
Desde luego, eh visto que la forma bien de hacer esto es declarando el puerto, decir que pines son salidas, y entrada y etc... pero queria saber si asi como viene mi codigo se puede hacer.

Muchas gracias!
 
#13
Hola picman, busca en la red "curso de programación en c para microcontroladores pic 16f87xx", también "microcontroladores y lenguaje c","Manual de usuario del compilador PCW de CCs", "compilador c de ccs" y "ccs-variables" de la pagina de u-control. Yo tambien soy novato en esto del ccs y ya tengo toda esa información que te sugiero. Ahora queda estudiarla, ponerle empeño y los amigos de la lista (tiopepe. leonardo j.) y otros, sabrán despejar nuestras dudas de novatos, hasta que nosotros despejemos de las dudas de otros novatos. Asi funcionan las listas. Saludos.

Palmas
 
#18
hola que tal, yo tambien he estado trabajando con pcw pero cuando quiero compilar me apararece un fallo que no reconoce el dispositivo y no se por que ya lei los tituriales tengo de todo pero no puedo compilar el codigo me podrian hacesosar sobre esto
 
#19
Hola todos, yo también soy novato en esto de c y les agradezco todo lo que han escrito es lo que se necesita para comenzar, ahora me dedicare a las lecturas y haber como me va. los eatare molestando gracias.
 
#20
Buen día soy nuevo en esto de los foros y de programar microcontroladores (vamos que no se nada), soy programador de plcs, robots, escadas y demás, y siempre he querido aprender a programar microcontrladores, tengo un grabador pirata del ebay, tengo el programa PCW C compiler, se poco de programar en C, asi que necesito aprender desde cero, tengo un tutorial del PCW, donde vienes las intrucciones, pero lo dicho al llegar a las intrucciones especificas del microcontrolador me pierdo.

En fín me quedo a la espera de alguna respuesta, gracias...
 
Arriba