Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación de PIC en C Con El Compilador MikroC PRO
Programación de PIC en C Con El Compilador MikroC PRO
//Nombre_de_programa.c
//Descripcin del programa.
//Autor: Ing. Penagos R.
//Declaracin de variables
...
//Funcin principal
void main( ){
//Instrucciones del programa.
...
}
Las lneas que comienzan con el doble slash // son slo comentarios que
no son necesarios pero s son muy importantes para documentar (informar)
acerca del significado de este cdigo.
La declaracin de variables se hace donde aparecen los puntos suspensivos ...
(normalmente la mayora de programas que son de alguna utilidad prctica
tienen variables, por lo tanto se debe hacer la declaracin correspondiente).
Las instrucciones del programa (las instrucciones que va a ejecutar o realizar
el microcontrolador) se colocan donde van los puntos suspensivos ... (dentro
de la funcin main)
PORTB=PORTA; //Los bits del puerto A se envan hacia los pines del puerto B.
Como caso especial, se pueden enviar bits individuales a cada uno de los pines de
un puerto:
if (condicin){
instrucciones1;
}
else{
instrucciones2;
}
Ejemplo 1:
Si el contenido de la variable codigo es igual al contenido de la variable clave , se
ejecutan las primeras cuatro instrucciones; de lo contrario se ejecutan nicamente
los dos ltimas instrucciones.
if (codigo==clave){
intentos=0;
RA7_bit=1;
Delay_1sec( );
RA7_bit=0;
}
else{
intentos++;
Delay_ms(200);
}
Ejemplo 2:
Instruccin de decisin sin else. Esta es una variante muy utilizada cuando se desea
condicionar la ejecucin de un grupo de instrucciones.
Las dos instrucciones se ejecutarn nicamente si la variable contador es igual a
2, de lo contrario la ejecucin contina a partir de la lnea //Aqu .
if (contador==2){
RB6_bit=~RB6_bit;
contador=0;
}
//Aqu.
Ejemplo 3:
Similar al caso anterior pero con una sola instruccin. Si la variable horas es igual
a 24 se reinicia esta variable con un valor de cero.
if (horas==24) horas=0;
Nota 1: Las condiciones se obtienen por medio de los operadores de relacin y los
operadores lgicos.
Nota 2: Operadores de relacin:
&& Y
|| O
Ejemplo 1:
La variable i tiene un valor inicial de 7 ( i=7 ) y un valor final de 1 ( i>=1 ). Esta
variable va disminuyendo de 1 en 1 ( i-- ). Por lo tanto las dos instrucciones se
ejecutarn en 7 ocasiones. La primera vez cuando i=7, la segunda cuando i=6, la
tercera cuando i=5 y as sucesivamente hasta la sptima vez cuando i=1. Luego la
ejecucin contina a partir de la lnea //Aqu .
Ejemplo 2:
El valor inicial de la variable es 1 y su valor final es 3. La variable i se va
incrementando de 1 en 1 ( i++ ). Por lo tanto la instruccin se ejecuta tres veces, lo
que da como resultado un retardo de 3 segundos. Luego la ejecucin contina a
partir de la lnea //Aqu .
while (condicin){
instrucciones;
}
Ejemplo 1:
La ejecucin del programa permanece indefinidamente en esta lnea mientras el
bit IOFS del registro OSCCON sea igual a cero. Como caso particular no se ejecuta
ninguna instruccin (la cual debera estar antes del punto y coma).
while (OSSCON.IOFS==0) ;
Ejemplo 2:
Ejemplo de un lazo infinito. En mikroC PRO, cualquier valor numrico
diferente a cero se considera VERDADERO, y un valor numrico igual a
cero se considera FALSO.
Al valor numrico del puerto A se le suma el valor 65, el resultado se enva hacia los
pines del puerto B. Este proceso se repite continua e indefinidamente, debido a que
la condicin siempre es verdadera (1).
while (1)
PORTB=PORTA+65;
Ejemplo 3:
Las cuatro instrucciones encerradas por { } se ejecutarn indefinidamente
mientras el valor del bit RB0 sea igual a 0.
while (RB0_bit==0){
RB1_bit=1;
Delay_ms(500);
RB1_bit=0;
Delay_ms(200);
}
do{
instrucciones;
}
while (condicin);
Ejemplo 1:
La variable kp tiene un valor inicial de cero. La instruccin kp=Keypad_Key_Click(
); se ejecuta y luego se revisa la condicin ( !kp ).Mientras kp sea igual a cero
(FALSO) la condicin ser VERDADERA ( !kp ), debido al operador de
negacin ! que cambia el valor de verdad a su estado contrario. Como resultado se
tendr un lazo infinito mientras la variable kp siga en cero. Cuando la
variable kp cambie de valor como consecuencia de la pulsacin de una tecla, la
condicin ser FALSA y la ejecucin continuar en la lnea //Aqu .
kp=0;
do
kp=Keypad_Key_Click( );
while (!kp);
//Aqu.
Ejemplo 2:
Las cuatro instrucciones dentro de { } se ejecutarn indefinidamente mientras la
variable tecla sea diferente a 1.
do{
ingreso( );
raiz( );
pn_1( );
seg_grado( );
}
while (tecla != 1);
switch (variable){
case 1: instrucciones1;
break;
case 2: instrucciones2;
break;
case 3: instrucciones3;
break;
default: instrucciones;
}
Funciones
Una funcin es una agrupacin de instrucciones para formar una nueva instruccin
creada por el programador (usuario). Empleando funciones, la solucin total de un
determinado problema se divide en varios subproblemas, cada uno de los cuales es
resuelto por medio de una funcin particular, aplicando de esta manera la conocida
mxima Divide y vencers.
Las funciones constituyen una de las caractersticas fundamentales de mikroC PRO,
pues todo programa bien escrito hace uso de ellas. Para poder utilizar una funcin
se deben cumplir los dos siguientes pasos:
//Nombre_de_programa.c
//Descripcin del programa.
//Autor: Ing. Penagos R.
//***************************Declaracin de funciones (prototipos)**************
************
...
//******************************Fin de declaracin de funciones*****************
************
//==================================Declaracin de variables====================
============
...
//===============================Fin de declaracin de variables================
============
//**********************************Funcin principal***************************
*****
void main( ){
//Instrucciones del programa.
...
}
//********************************Fin de funcin principal**********************
*****
//================================Definicin de funciones=======================
=====
funcin1{
instrucciones1;
}
funcin2{
instrucciones2;
}
//============================Fin de definicin de funciones====================
======
//7seg1.c
//Se utiliza la funcin Bin2_7seg que transforma un nmero binario a su
//equivalente en 7 segmentos.
void main(){
OSCCON=0x40; //Oscilador interno a 1MHz.
while (OSCCON.IOFS==0);//Esperar mientras el oscilador est inestable.
PORTA=0x00; //Inicializacin.
PORTB=0x00;
ANSEL=0x00; //Pines AN<6:0> como E/S digital.
TRISB=0x00; //Puerto B como salida.
while (1) PORTB=Bin2_7seg(PORTA);
}
//7seg1.c
//Se utiliza la funcin Bin2_7seg que transforma un nmero binario a su
//equivalente en 7 segmentos.
void main(){
OSCCON=0x40; //Oscilador interno a 1MHz.
while (OSCCON.IOFS==0);//Esperar mientras el oscilador est inestable.
PORTA=0x00; //Inicializacin.
PORTB=0x00;
ANSEL=0x00; //Pines AN<6:0> como E/S digital.
TRISB=0x00; //Puerto B como salida.
while (1) PORTB=Bin2_7seg(PORTA);
}
El tipo float es para nmeros con punto decimal, mientras que los dems tipos son
para nmeros enteros.
La EJECUCIN DE UNA INSTRUCCIN consiste en la realizacin de las
operaciones especificadas en esa instruccin. De la ejecucin se encarga la CPU
(unidad central de proceso) del microcontrolador PIC.