# "Hola mundo!" utilizando el PCW C Compiler



## pic-man (Oct 19, 2007)

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.


----------



## bactering (Oct 20, 2007)

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


----------



## tiopepe123 (Oct 20, 2007)

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.


----------



## pic-man (Oct 20, 2007)

tiopepe podrias recomendarme algún libro o manual en específico? de todas formas yo ya estoy investigando por mi parte, muchas gracias


----------



## tiopepe123 (Oct 21, 2007)

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.


----------



## pic-man (Oct 21, 2007)

Ah pues muchas gracias tiopepe, el lunes sacaré algun libro de la biblioteca de la escuela


----------



## fede-x (Dic 12, 2007)

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!


----------



## jose68jose (Dic 12, 2007)

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);
}


----------



## fede-x (Dic 12, 2007)

Muchas gracias por la respuesta, en cuanto llegue a casa lo pruebo...
pero asi a grandes razgos el delay_bit(1000); que hace?


----------



## heli (Dic 12, 2007)

Creo que el delay_bit es un error, una mezcla entre delay_ms y output_bit. El código correcto sería asi:

```
#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
}
```


----------



## fede-x (Dic 12, 2007)

claro!, que zapallo que soy... 

muchas gracias!


----------



## fede-x (Dic 12, 2007)

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!


----------



## Palmas (Mar 21, 2008)

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


----------



## pic-man (Mar 21, 2008)

Gracias Palmas, tendre en cuenta lo que me dices y buscaré esos documentos.


----------



## macraig (Mar 21, 2008)

Este es muy bueno:
http://www.crasseux.com/books/ctut.pdf
Casi puedo decir q de ahi aprendi C  de ahi y un par de noches sin dormir... Y mucho cafe.

Salu2


----------



## trutos (Ago 20, 2008)

Hola amigos yoi tambien he empezado con esto y este archivo me ha servido arto para empezar esta en español, a ver si les sirbe


----------



## trutos (Ago 20, 2008)

Y aqui va otro


----------



## Julio Cesar12 (Dic 19, 2008)

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


----------



## LUAL (Abr 8, 2009)

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.


----------



## Christgiovan (Jun 6, 2009)

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...


----------



## foso (Ago 28, 2009)

Quisiera saber como usar el programa. El PCW. Una vez que escribimos el programa que hacemos ? yo lo compilo y me salta un error . El programa esta bien hecho. Lo saque de un libro. Y despues como lo enlazo con Mplab ?


----------



## gamer (Sep 4, 2010)

hola soy nuevo por aqui, yo eh programado en c++, pero para empezar a usar PCW C compiler me gustaria que me pasaran un ejemplo de un programa basico requiero declarar una salida para 8 led es decir 11111111 en el pic 16f84 creo. quiero saber que librerias necesito o si alguien me lo puede pasar...
por el momento es todo espero su respuesta gracias
bye.................................................................................................


----------

