Introducción a la programación en C

Mucho más sencillo y organizado que el ensamblador, que ya dejé atrás hace unos meses pero que no dejaré de utilizar este curso supongo… Hay que tener algo de experiencia en programación en C.

Sin embargo C tiene las mismas historias: necesita seguir un esquema y unas partes, con sus funciones, declaración de variables, puertos, etc. Por lo tanto haré esta introducción para tener la base a mano.

Necesitaréis un programa para compilar lo que hagáis, yo estoy utilizando PIC C Compiler. Recordar con cualquier compilador que hay que seleccionar el micro que se va a usar.

Declaración de librerías, fuses, puertos y constantes

 
#include <pic.h>

Donde pic es el numero del micro, por ejemplo 16F84A

#fuses …

Aquí podemos poner varias cosas que queremos o no que nuestro micro use, separadas por comas:

– LP, XT, HS, RC (Usar cristal externo hasta 200 khz, de 4 a 10 Mhz, a partir de 8 Mhz o un oscilador resistencia-condensador)

– NOWDT (desactiva el watchdog timer)

– PWRT (delay al encender el micro para estabilizar tensión)

– CP (code protect, que no se pueda copiar el código de la memoria)

Éstos son los básicos y más necesarios pero hay bastantes más que se especifican en la datasheet de cada micro.

#byte x=y (nombre=dirección)

Para nombrar una dirección de un byte. Así se nombrarán puertos, por ejemplo PORT_A suele estar en la dirección 0x05: #byte PORT_A=0x05

Para evitar problemas que dan a veces simuladores y micros también declararemos aquí el estado del puerto (E o S), de ésta forma:

#byte TRIS_A=getenv(“SFR:TRISA”);

También podemos declarar bits (patillas) mediante:

#bit x=y.z (nombre=puerto.numero)

Declaración de funciones, variables, interrupciones y programación

Llegados a este punto lo que hacemos es declarar las variables (int, char, float…) y las funciones que programaremos después. Ésto no es necesario si no se van a usar.

Después de declararlas programamos la interrupción poniendo #Nombredeinterrupcion y en la linea siguiente programando la función de interrupción que se llevará a cabo. Por lo general el nombre de la interrupción ya está definido por las posibilidades del micro, por ejemplo int_ext (RB0/INT) o int_rb (RB4-RB7) dependiendo de donde cambie el estado del pin.

A continuación programamos las funciones que hemos declarado antes de las interrupciones.

Main, cuerpo del programa

Aquí programamos lo que queremos que el micro haga con todo lo que hemos declarado antes. Se empieza por un “void main() {” y se cierra } al final. Las funciones las iré explicando poco a poco según ponga ejemplos.

Sin duda hay mucho más que se puede hacer, puerto esclavo con conexion a ordenador, LCD, lectura analógica, y otras utilidades, pero éste es el cuerpo básico de un programa y se puede sacar mucho jugo de 4 funciones cualquiera. Ánimo y a por ello.

 

 

Leave a comment