Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
Solutions
Store
Distributors
Libstock
C ontact Us
search here
Featured Compilers
mikroC PRO for PIC
LENGUAJE ENSAMBLADOR
Como el proceso de escribir un cdigo ejecutable
era considerablemente arduo, en consecuencia fue
creado el primer lenguaje de programacin
denominado ensamblador (ASM). Siguiendo la
sintaxis bsica del ensamblador, era ms fcil
escribir y comprender el cdigo. Las instrucciones
en ensamblador consisten en las abreviaturas con
significado y a cada instruccin corresponde una
localidad de memoria. Un programa denominado
ensamblador compila (traduce) las instrucciones del
lenguaje ensamblador a cdigo mquina (cdigo
binario).
HEste programa compila instruccin a instruccin sin optimizacin. Como permite controlar en detalle todos los procesos puestos en
marcha dentro del chip, este lenguaje de programacin todava sigue siendo popular.
Incluso una sola operacin en el programa escrito en ensamblador consiste en muchas instrucciones, hacindolo muy
largo y difcil de manejar.
Cada tipo de microcontrolador tiene su propio conjunto de instrucciones que un programador tiene que conocer para
escribir un programa
Un programador tiene que conocer el hardware del microcontrolador para escribir un programa
Programa escrito en C (El mismo programa compilado al cdigo ensamblador):
converted by Web2PDFConvert.com
Los lenguajes de programacin de alto nivel (Basic, Pascal, C etc.) fueron creados con el propsito de superar las desventajas del
ensamblador. En lenguajes de programacin de alto nivel varias instrucciones en ensamblador se sustituyen por una sentencia. El
programador ya no tiene que conocer el conjunto de instrucciones o caractersticas del hardware del microcontrolador utilizado. Ya no es
posible conocer exactamente cmo se ejecuta cada sentencia, de todas formas ya no importa. Aunque siempre se puede insertar en el
programa una secuencia escrita en ensamblador.
Si alguna vez ha escrito un programa para un microcontrolador PIC en lenguaje ensamblador, probablemente sepa que la arquitectura
RISC carece de algunas instrucciones. Por ejemplo, no hay instruccin apropiada para multiplicar dos nmeros. Por supuesto, para cada
problema hay una solucin y ste no es una excepcin gracias a la aritmtica que permite realizar las operaciones complejas al
descomponerlas en un gran nmero operaciones ms simples. En este caso, la multiplicacin se puede sustituir con facilidad por
adicin sucesiva (a x b = a + a + a + ... + a). Ya estamos en el comienzo de una historia muy larga... No hay que preocuparse al utilizar uno
de estos lenguajes de programacin de alto nivel como es C, porque el compilador encontrar automticamente la solucin a ste
problema y otros similares. Para multiplicar los nmeros a y b, basta con escribir a*b.
Lenguaje C
El lenguaje C dispone de todas las ventajas de un lenguaje de programacin de alto nivel (anteriormente descritas) y le permite realizar
algunas operaciones tanto sobre los bytes como sobre los bits (operaciones lgicas, desplazamiento etc.). Las caractersticas de C
pueden ser muy tiles al programar los microcontroladores. Adems, C est estandarizado (el estndar ANSI), es muy portable, as que
el mismo cdigo se puede utilizar muchas veces en diferentes proyectos. Lo que lo hace accesible para cualquiera que conozca este
lenguaje sin reparar en el propsito de uso del microcontrolador. C es un lenguaje compilado, lo que significa que los archivos fuentes
que contienen el cdigo C se traducen a lenguaje mquina por el compilador. Todas estas caractersticas hicieron al C uno de los
lenguajes de programacin ms populares.
La figura anterior es un ejemplo general de lo que sucede durante la compilacin de programa de un lenguaje de programacin de alto
nivel a bajo nivel.
muy similar al C estndar, no obstante en determinados aspectos difiere del ANSI estndar en algunas caractersticas. Algunas de estas
diferencias se refieren a las mejoras, destinadas a facilitar la programacin de los microcontroladores PIC, mientras que las dems son
la consecuencia de la limitacin de la arquitectura del hardware de los PIC. Aqu vamos a presentar caractersticas especficas del
lenguaje mikroC en la programacin de los microcontroladores PIC. El trmino C se utilizar para referirse a las caractersticas comunes
de los lenguajes C y mikroC.
Este libro describe una aplicacin muy concreta del lenguaje de programacin C utilizado en el compilador mikroC PRO for PIC. En este
caso, el compilador se utiliza para la programacin de los microcontroladores PIC.
FASES DE COMPILACIN
El proceso de compilacin consiste en varios pasos y se ejecuta automticamente por el compilador. Por con, un conocimiento bsico
del funcionamiento puede ser til para entender el concepto del lenguaje mikroC.
El archivo fuente contiene el cdigo en mikroC que usted escribe para programar el microcontrolador. El preprocesador se utiliza
automticamente por el compilador al iniciarse el proceso de la compilacin. El compilador busca las directivas del preprocesador (que
siempre empiezan por #) dentro del cdigo y modifica el cdigo fuente de acuerdo con las directivas. En esta fase se llevan a cabo
inclusin de archivos, definicin de constantes y macros etc, lo que facilita el proceso. Ms tarde vamos a describir estas directivas en
detalle. El analizador sintctico (parser) elimina toda la informacin intil del cdigo (comentarios, espacios en blanco). Luego, el
compilador traduce el cdigo a un archivo binario denominado archivo .mcl. El enlazador (linker) recupera toda la informacin requerida
para ejecutar el programa de los archivos externos y la agrupa en un solo archivo (.dbg). Adems, un proyecto puede contener ms de un
archivo fuente y el programador puede utilizar funciones predefinidas y agrupadas dentro de los archivos denominados libreras. Por
ltimo, el generador .hex produce un archivo .hex. Es el archivo que se va a cargar en el microcontrolador.
El proceso entero de la compilacin que incluye todos los pasos anteriormente descritos se le denomina building.
ESTRUCTURA DE PROGRAMA
La idea principal de escribir un programa en C es de romper un problema mayor en varios trozos ms pequeos. Supongamos que es
necesario escribir un programa para el microcontrolador para medir la temperatura y visualizar los resultados en un LCD. El proceso de
medicin se realiza por un sensor que convierte temperatura en voltaje. El microcontrolador utiliza el convertidor A/D para convertir este
voltaje (valor analgico) en un nmero (valor digital) que luego se enva al LCD por medio de varios conductores. En consecuencia, el
programa se divide en cuatro partes, de las que cada una corresponde a una accin especfica:
1.
2.
3.
4.
converted by Web2PDFConvert.com
Y ahora, su primer programa real! La figura muestra la estructura de programa, sealando las partes en las que consiste.
La manera de escribir el cdigo en C es muy importante. Por ejemplo, C difiere entre minsculas y maysculas, as que la funcin main()
no se puede escribir MAIN() o Main(). Adems, note que dos lneas del cdigo dentro de la funcin terminan con un punto y coma. En C
todas las sentencias deben terminar con un punto y coma ;, as el compilador puede aislarlas y traducirlas a cdigo mquina.
converted by Web2PDFConvert.com
COMENTARIOS
Los comentarios son las partes del programa utilizados para aclarar las instrucciones de programa o para proporcionar ms informacin
al respecto. El compilador no hace caso a los comentarios y no los compila al cdigo ejecutable. Dicho de manera sencilla, el compilador
es capaz de reconocer los caracteres especiales utilizados para designar dnde los comentarios comienzan y terminan y no hace nada
de caso al texto entre ellos durante la compilacin. Hay dos tipos de tales caracteres. Unos designan los comentarios largos que ocupan
varias lneas de programa marcados por la secuencia especial /*...*/, mientras que otros designan los comentarios cortos que caben en
una sola lnea //. Aunque los comentarios no pueden afectar a la ejecucin de programa, son tan importantes como cualquier otra parte
de programa. Aqu est el porqu... Con frecuencia es necesario mejorar, modificar, actualizar, simplificar un programa... No es posible
interpretar incluso los programas simples sin utilizar los comentarios.
I
D
P
A
O
T
D
D
E
E
S
T
P
A
M
A
O
C B I I T N S
)
char
Texto (caracteres)
de 0 a 255
int
Valores enteros
16
de -32768 a 32767
float
32
de 1.1754943508210-38 a
6.805647744071038
double
32
de 1.1754943508210-38 a
6.805647744071038
*Debido a las limitaciones impuestas por el hardware del microcontrolador, es imposible alcanzar una mayor precisin de datos que la
del tipo float. Por eso, el tipo double en mikroC equivale al tipo float.
Al aadir un prefijo (calificador) a cualquier tipo de dato entero o carcter, el rango de sus posibles valores cambia as como el nmero de
los bytes de memoria necesarios. Por defecto, los datos de tipo int son con signo, mientras que los de tipo char son sin signo. El
calificador signed (con signo) indica que el dato puede ser positivo o negativo. El prefijo unsigned indica que el dato puede ser slo
positivo. Note que el prefijo es opcional.
converted by Web2PDFConvert.com
T DI
EP
char
int
O D
AD T E O
T D A A MT
AO
OC
( NR N A P N MR G EE O RF
signed char
de -128 a 128
unsigned int
16
de 0 a 65535
short int
de 0 a 255
de -128 a 127
long int
32
de 0 a 4294967295
32
de -2147483648 a 2147483647
OI D J E D
O
EV
A B L I OT
Hexadecimal (base 16): el nmero empieza con 0x (o 0X). Los enteros hexadecimales consisten en los dgitos (de 0 a
9) y/o las letras (A, B, C,D, E, F). Por ejemplo: 0x1A.
Decimal (base 10): el nmero consiste en los dgitos (de 0 a 9). El primer dgito no puede ser 0. En este formato, se
puede introducir el signo de nmero (+ o -). Por ejemplo: 569, -25, +1500.
Octal (base 8): los nmeros se representan a base 8 utilizando slo 8 dgitos (de 0 a 7). Los enteros octales empiezan
con 0. Por ejemplo: 056.
Binario: cuando un entero empieza con 0b (o 0B) se representan como una serie de bits (0 y 1). Por ejemplo:
0B10011111
0x11
11
-152
011
0b11
//
//
//
//
//
formato
formato
formato
formato
formato
0.
-1.23
23.45e6
2e-5
3E+10
.09E34
//
//
//
//
//
//
=
=
=
=
=
=
0.0
-1.23
23.45 * 10^6
2.0 * 10^-5
3.0 * 10^10
0.09 * 10^34
59 // entero
'p' // carcter ASCII 'p'
Una secuencia de caracteres es denominada cadena (string). Las cadenas estn encerradas entre comillas dobles, por ejemplo:
converted by Web2PDFConvert.com
RS
Los identificadores pueden incluir cualquiera de los caracteres alfabticos A-Z (a-z), los dgitos 0-9 y el carcter
subrayado '_'. El compilador es sensible a la diferencia entre minsculas y maysculas. Los nombres de funciones y
variables se escriben con frecuencia con minsculas, mientras que los nombres de constantes se escriben con
maysculas.
Los identificadores no pueden empezar con un dgito.
Los identificadores no pueden coincidir con las palabras clave del lenguaje mikroC, porque son las palabras reservadas
del compilador.
El compilador mikroC reconoce 33 palabras clave:
M
absolute
data
if
return
asm
default
inline
rx
typeid
at
delete
int
sfr
typename
do
io
short
union
bit
double
long
signed
unsigned
bool
else
mutable
sizeof
using
break
enum
namespace
static
virtual
case
explicit
operator
struct
void
catch
extern
org
switch
volatile
char
false
pascal
template
while
class
float
private
this
code
for
protected
throw
friend
public
true
continue
goto
register
try
typedef
auto
const
temperatura_V1
Presin
no_corresponder
dat2string
SuM3
_vtexto
7temp
%ms_alto
if
j23.07.04
nombre de variable
//
//
//
//
//
//
//
//
//
//
//
OK
OK
OK
OK
OK
OK
NO
NO
NO
NO
NO
------
no
no
no
no
no
Declaracin de variables
Cada variable debe ser declarada antes de ser utilizada en el programa. Como las variables se almacenan en la memoria RAM, es
necesario reservar el espacio para ellas (uno, dos o ms bytes). Al escribir un programa, usted sabe qu tipo de datos quiere utilizar y
qu tipo de datos espera como resultado de una operacin, mientras que el compilador no lo sabe. No se olvide de que el programa
maneja las variables con los nombres asignados. El compilador las reconoce como nmeros en la memoria RAM sin conocer su
tamao y formato. Para mejorar la legibilidad de cdigo, las variables se declaran con frecuencia al principio de las funciones:
<tipo> variable;
Es posible declarar ms de una variable de una vez si tienen el mismo tipo.
converted by Web2PDFConvert.com
int Velocidad_de_ascensor
enum motor_de_ascensor {PARADA,INICIO,NORMAL,MXIMO};
Velocidad_de_ascensor = NORMAL; // Velocidad_de_ascensor = 2
Definir los nuevos tipos de datos
La palabra clave typedef le permite crear con facilidad los nuevos tipos de datos.
typedef unsigned int positivo; // positivo es un sinnimo para el tipo sin signo int
positivo a,b;
// Variables a y b son de tipo positivo
a = 10;
// Variable a equivale a 10
b = 5;
// Variable b equivale a 5
mbito de variables y constantes
Una variable o una constante es reconocida por el compilador en base de su identificador. Un identificador tiene significado si el
compilador lo puede reconocer. El mbito de una variable o una constante es el rango de programa en el que su identificador tiene
significado. El mbito es determinado por el lugar en el que se declara una variable o una constante. Intentar acceder a una variable o
una constante fuera de su mbito resulta en un error. Una variable o una constante es invisible fuera de su mbito. Todas las variables y
constantes que pensamos utilizar en un programa deben ser declaradas anteriormente en el cdigo. Las variables y constantes pueden
ser globales o locales. Una variable global se declara en el cdigo fuente, fuera de todas las funciones, mientras que una variable local
converted by Web2PDFConvert.com
se declara dentro del cuerpo de la funcin o dentro de un bloque anidado en una funcin.
Alas variables globales se les puede acceder de cualquiera parte en el cdigo, an dentro de las funciones con tal de que sean
declaradas. El mbito de una variable global est limitado por el fin del archivo fuente en el que ha sido declarado.
El mbito de variables locales est limitado por el bloque encerrado entre llaves {} en el que han sido declaradas. Por ejemplo, si estn
declaradas en el principio del cuerpo de funcin (igual que en la funcin main) su mbito est entre el punto de declaracin y el fin de esa
funcin. Refirase al ejemplo anterior. Alas variables locales declaradas en main() no se les puede acceder desde la Funcin_1 y al
revs.
Un bloque compuesto es un grupo de declaraciones y sentencias (que pueden ser bloques tambin) encerradas entre llaves. Un bloque
puede ser una funcin, una estructura de control etc. Una variable declarada dentro de un bloque se considera local, o sea, existe slo
dentro del bloque. Sin embargo, las variables declaradas fuera del mbito todava son visibles.
Aunque las constantes no pueden ser modificadas en el programa, siguen las mismas reglas que las variables. Esto significa que son
visibles dentro de su bloque a excepcin de las constantes globales (declaradas fuera de cualquier funcin). Las constantes se declaran
normalmente en el inicio del cdigo fuera de cualquier funcin (como variables globales).
Clases de almacenamiento
Las clases de almacenamiento se utilizan para definir el mbito y la vida de variables, constantes y funciones dentro de un programa. En
mikroC se pueden utilizar diferentes clases de almacenamiento:
auto es una clase de almacenamiento por defecto para las variables locales, as que se utiliza raramente. Se utiliza
para definir que una variable local tiene duracin local. La clase de almacenamiento auto no se puede utilizar con
variables globales.
static es una clase de almacenamiento por defecto para las variables globales. Especifica que una variable es visible
dentro del archivo. A las variables locales declaradas con el prefijo static se les puede acceder dentro del archivo
fuente (o sea se comportan como variables globales).
extern: la palabra clave extern se utiliza cuando el programa est compuesto por diferentes archivos fuente. Esto le
permite utilizar una variable, una constante o una funcin declarada en otro archivo. Por supuesto, para compilar y
enlazar este archivo correctamente, el mismo debe ser incluido en su proyecto. En los siguientes ejemplos, el
programa consiste en dos archivos: File_1 y File_2. El File_1 utiliza una variable y una funcin declaradas en File_2.
File 1:
File 2:
int cnt = 0;
void hello();
void hello(){ // Modificaciones que afectan a la
.
// cnt en File_1 son visibles aqu
.
.
converted by Web2PDFConvert.com
2.5 OPERADORES
Un operador es un smbolo que denota una operacin aritmtica, lgica u otra operacin particular. Dicho de manera sencilla, varias
operaciones aritmticas y lgicas se realizan por medio de los operadores. Hay ms de 40 operaciones disponibles en el lenguaje C,
pero se utiliza un mximo de 10-15 de ellas en prctica. Cada operacin se realiza sobre uno o ms operandos que pueden ser variables
o constantes. Adems, cada operacin se caracteriza por la prioridad de ejecucin y por la asociatividad.
OPERADORES ARITMTICOS
Los operadores aritmticos se utilizan en las operaciones aritmticas y siempre devuelven resultados numricos. Hay dos tipos de
operadores, los unitarios y los binarios. Adiferencia de las operaciones unitarias que se realizan sobre un operando, las operaciones
binarias se realizan sobre dos operandos. En otras palabras, se requieren dos nmeros para ejecutar una operacin binaria. Por
ejemplo: a+b o a/b.
O
int
a =
b =
c =
c =
a,b,c;
5;
4;
a + b;
c%2;
//
//
//
//
//
//
//
//
Adicin
Resta
Multiplicacin
Divisin
Resto de la divisin
Declarar 3 enteros a, b, c
Inicializar a
Inicializar b
c = 9
c = 1. Esta operacin se utiliza con frecuencia
para comprobar la paridad. En este caso, el
resultado es 1 lo que significa que la variable
es un nmero imparo
OPERADORES DE ASIGNACIN
Hay dos tipos de asignacin en el lenguaje C:
Los operadores simples asignan los valores a las variables utilizando el carcter comn '='. Por ejemplo: a =8
Las asignaciones compuestas son especficas para el lenguaje C. Consisten en dos caracteres como se muestra en
la tabla a la derecha. Se utilizan para simplificar la sintaxis y habilitar la ejecucin ms rpida.
E
O
+=
Expresin
Equivalente
a += 8
a=a+8
-=
a -= 8
a=a-8
*=
a *= 8
a=a*8
/=
a /= 8
a=a/8
%=
a %= 8
a=a%8
OE
RJ
++a
++
--
int
a =
c =
b =
a, b, c;
b = 5;
1 + a++; // c = 6
++c + a // b = 7 + 6 = 13
converted by Web2PDFConvert.com
OPERADORES RELACIONALES
Los operadores relacionales se utilizan en comparaciones con el propsito de comparar dos valores. En mikroC, si una expresin es
evaluada como falsa (false), el operador devuelve 0, mientras que si una oracin es evaluada como verdadera (true), devuelve 1. Esto se
utiliza en expresiones tales como si la expresin es evaluada como verdadera, entonces...
O
DD
EO
SR
I E P J C E I M P N LC
OO
>
mayor que
b>a
si b es mayor que a
>=
a >= 5
<
menor que
a<b
si a es menor que b
<=
a <= b
==
igual que
a == 6
si a es igual que 6
!=
desigual que
a != b
si a es desigual que b
int prop;
int var = 5;
prop = var < 10; // Expresin es evaluada como verdadera, prop = 1
OPERADORES LGICOS
Hay tres tipos de operaciones lgicas en el lenguaje C: Y (AND) lgico, O (OR) lgico y negacin - NO (NOT) lgico. Los operadores
lgicos devuelven verdadero (1 lgico) si la expresin evaluada es distinta de cero. En caso contrario, devuelve falso (0 lgico) si la
expresin evaluada equivale a cero. Esto es muy importante porque las operaciones lgicas se realizan generalmente sobre las
expresiones, y no sobre las variables (nmeros) particulares en el programa. Por lo tanto, las operaciones lgicas se refieren a la
veracidad de toda la expresin.
Por ejemplo: 1 && 0 es igual a (expresin verdadera) && (expresin falsa)
El resultado 0, o sea - Falso en ambos casos.
O
&&
||
NO
DO
ER
P E C J I E MN P
RO
Complemento a uno
a = ~b
b=5
a = -5
<<
Desplazamiento a la izquierda
a = b << 2
b = 11110011
a = 11001100
>>
Desplazamiento a la derecha
a = b >> 2
b = 11110011
a = 00011110
&
c=a&b
a = 11100011
b = 11001100
c = 11000000
c=a|b
a = 11100011
b = 11001100
c = 11101111
c=a^b
a = 11100011
b = 11001100
c = 00101111
Note que el resultado de la operacin de desplazamiento a la derecha depende del signo de la variable. En caso de que el operando se
aplique a una variable sin signo o positiva, se introducirn los ceros en el espacio vaco creado por desplazamiento. Si se aplica a un
entero con signo negativo, se introducir un 1 para mantener el signo correcto de la variable.
R
Alta
() [] -> .
de izquierda a derecha
de derecha a izquierda
* / %
de izquierda a derecha
+ -
de izquierda a derecha
converted by Web2PDFConvert.com
Baja
int
a =
b =
res
res
< >
de izquierda a derecha
de izquierda a derecha
== !=
de izquierda a derecha
&
de izquierda a derecha
de izquierda a derecha
de izquierda a derecha
&&
de izquierda a derecha
||
de derecha a izquierda
?:
de derecha a izquierda
de izquierda a derecha
a, b, res;
10;
100;
= a*(a + b); // resultado = 1100
= a*a + b; // resultado = 200
La autoconversin se realiza asimismo en las operaciones de asignacin. El resultado de la expresin de la derecha del operador de la
asignacin siempre se convierte en el tipo de la variable de la izquierda del operador. Si el resultado es de tipo de la prioridad ms alta,
se descarta o se redondea para coincidir con el tipo de la variable. Al convertir un dato real en un entero, siempre se descartan los
nmeros que siguen al punto decimal.
int x;
// A la variable x se le asigna el tipo integer (un entero)
x = 3;
// A la variable x se le asigna el valor 3
x+ = 3.14; // El valor 3.14 se agrega a la variable x al
if(expresin) operacin;
Si el resultado de la expresin encerrada entre parntesis es verdadero (distinto de 0) la operacin se realiza y el programa contina con
la ejecucin. Si el resultado de la expresin es falso (0), la operacin no se realiza y el programa contina inmediatamente con la
ejecucin.
Como hemos mencionado, la otra forma combina tanto el operador if como el else:
if(expresin)
operacin1
else
operacin2
Si operacin1 u operacin2 est compuesta, escriba una lista de sentencias encerradas entre llaves. Por ejemplo:
if(expresin) {
... //
... // operacin1
...} //
else
operacin2
El operador if-else se puede sustituir por el operador condicional '?:':
sentencias que pertenecen a ese bloque se ejecutan hasta llegar a la palabra clave break o hasta el final de la operacin switch. Si no
coinciden, el selector se compara con la constante2. Si coinciden, las sentencias que pertenecen a ese bloque se ejecutan hasta llegar a
la palabra clave break etc. Si el selector no coincide con ninguna constante, se ejecutarn las operaciones que siguen al operador
default.
Tambin es posible comparar una expresin con un grupo de constantes. Si coincide con alguna de ellas, se ejecutarn las operaciones
apropiadas:
BUCLES
Amenudo es necesario repetir una cierta operacin un par de veces en el programa. Un conjunto de comandos que se repiten es
denominado un bucle de programa. Cuntas veces se ejecutar, es decir cunto tiempo el programa se quedar en el bucle, depende de
las condiciones de salir del bucle.
Bucle While
El bucle while se parece a lo siguiente:
while(expresin){
comandos
...
}
Los comandos se ejecutan repetidamente (el programa se queda en el bucle) hasta que la expresin llegue a ser falsa. Si la expresin
es falsa en la entrada del bucle, entonces el bucle no se ejecutar y el programa continuar desde el fin del bucle while.
Un tipo especial del bucle de programa es un bucle infinito. Se forma si la condicin sigue sin cambios dentro del bucle. La ejecucin es
simple en este caso ya que el resultado entre llaves es siempre verdadero (1=verdadero), lo que significa que el programa se queda en
el mismo bucle:
Bucle Do-while
El bucle do-while se parece a lo siguiente:
converted by Web2PDFConvert.com
do
operacin
while (cambiar_condicin);
La expresin cambiar_condicin se ejecuta al final del bucle, que significa que operacin se ejecuta como mnimo una vez sin reparar en
que si la condicin es verdadera o falsa. Si el resultado es distinto de 0 (verdadero), el procedimiento se repite.
Todos los siguientes ejemplos son equivalentes. Esta parte del cdigo visualiza "hello" en un LCD 10 veces con un retardo de un
segundo. Note que en este ejemplo se utilizan funciones predefinidas, que se encuentran en las libreras del compilador mikroC PRO for
PIC. No obstante le aconsejamos que no trate de entenderlas en detalle. Su comportamiento general dentro del bucle se explica por
medio de los comentarios.
//
//
//
//
//
//
Condicin
Visualizar hello en el LCD
Retardo de 1000 ms
Borrar el LCD
Retardo de 500ms
Contador se incrementa
//
//
//
//
//
i = 0;
do {
Lcd_Out(1,3,"hello");
Delay_ms(1000);
Lcd_Cmd(_LCD_CLEAR);
Delay_ms(500);
i++;
}
while (i<10);
SENTENCIAS DE SALTO
SENTENCIA BREAK
Aveces es necesario detener y salir de un bucle dentro de su cuerpo. La sentencia break se puede utilizar dentro de cualquier bucle
(while, for, do while) y en las sentencias switch tambin. En stas la sentencia break se utiliza para salir de las sentencias switch si la
condicin case es verdadera. En este ejemplo, Esperar est parpadeando en la pantalla LCD hasta que el programa detecte un uno
lgico en el pin 0 del puerto PORTA.
SENTENCIA CONTINUE
La sentencia continue colocada dentro de un bucle se utiliza para saltar una iteracin. Adiferencia de la sentencia break, el programa se
queda dentro del bucle y las iteraciones continan.
converted by Web2PDFConvert.com
x++;
continue; // Despus de esta lnea, saltar a la sentencia while con x=8
}
a = 1/(x-7); // Esta divisin generar un error si x=7
...
if(CO2_sensor) goto aire acondicionado; // Si se consta que el valor
...
// de la variable CO2_sensor =1
...
// mtodo 1
int display [3]; // Declaracin de la matriz display capaz de contener 3 enteros
// mtodo 2
const DGITOS = 5;
char Matriz_nueva[DGITOS]; // Declaracin de la matriz Matriz_nueva
converted by Web2PDFConvert.com
void main() {
const MUESTRAS_DE_AGUA = 4; // Valor de la constante MUESTRAS_DE_AGUA es 4
int i, temp; // Variables i y temp son de tipo int
int profunidad_de_sonda [MUESTRAS_DE_AGUA] = {24,25,1,1987};// Todos
// temporalmente
profundiad_de_sonda [i] = profundiad_de_sonda [MUESTRAS_DE_AGUA-1-i];
profundiad_de_sonda [MUESTRAS_DE_AGUA-1-i] = temp;
}
int Tabla [3][4]; // Tabla se define de modo que tenga 3 filas y 4 columnas
Esta matriz se puede representar en la forma de una tabla.
tabla[0][0]
tabla[0][1]
tabla[0][2]
tabla[0][3]
tabla[1][0]
tabla[1][1]
tabla[1][2]
tabla[1][3]
tabla[2][0]
tabla[2][1]
tabla[2][2]
tabla[2][3]
Similar a las matrices unidimesionales, es posible asignar los valores a los elementos de una tabla en la lnea de declaracin. La
asignacin debe ser realizada lnea a lnea como en el siguiente ejemplo. Como hemos visto anteriormente, esta matriz tiene dos filas y
tres columnas:
42
19
PUNTEROS
Un puntero es una variable destinada a recibir una direccin. Un puntero apunta a una localidad de memoria, referenciada por una
direccin. En C, la direccin de un objeto se puede obtener por medio un operador unitario &. Para acceder al contenido de la memoria
en una direccin especfica (tambin llamado objeto apuntado), se utiliza un operador de indireccin (*).
tipo_de_variable *puntero;
converted by Web2PDFConvert.com
En esta etapa, el puntero mi_puntero apunta al valor almacenado en esta localidad de memoria, o sea, a un valor desconocido. As que,
una inicializacin es muy recomendable:
puntero = &variable;
Ahora, puntero contiene la direccin de variable.
Para acceder al contenido de la variable apuntada, debe utilizar *. El siguiente ejemplo muestra el contenido de memoria dependiendo
de la accin realizada por medio del puntero.
Los punteros son muy tiles para manejar las matrices. En este caso, un puntero se utilizar para apuntar al primer elemento de una
matriz. Debido al hecho de que es posible realizar operaciones bsicas sobre los punteros (aritmtica de punteros), es fcil manejar los
elementos de una matriz.
Fjese en la diferencia entre *v+1 y *(v+1) en el siguiente ejemplo:
{0,5,10};
Los punteros tambin pueden ser declarados con el prefijo const. En este caso, su valor no puede ser modificado
despus de la inicializacin, similar a una constante.
A diferencia de C, el mikroC no admite alojamiento dinmico.
ESTRUCTURAS
Ya hemos visto cmo agrupar los elementos dentro de matrices. No obstante, al utilizar este mtodo todos los elementos deben ser del
mismo tipo. Al utilizar estructuras, es posible agrupar diferentes tipos de variables bajo el mismo nombre. Las variables dentro de una
estructura se le denominan los miembros de la estructura. Las estructuras de datos se declaran al utilizar la siguiente sintaxis:
struct nombre_de_estructura {
tipo1_de_miembro1 miembro1;
tipo2_de_miembro2 miembro2;
tipo3_de_miembro3 miembro3;
..
};
No es posible inicializar variables dentro de la declaracin de la estructura de datos:
struct generador {
int voltaje;
char corriente;
};
Entonces, podr definir los objetos denominados turbina en el cdigo. Acada uno de estos tres objetos (turbinas) se le asignan las
variables corriente y voltaje.
converted by Web2PDFConvert.com
turbina_3.voltaje = 150;
turbina_3.corriente = 12;
Por supuesto, igual que al utilizar los punteros, todava se le permite realizar operaciones por medio de operadores y sentencias
definidos en las partes anteriores.
Si est familiarizado con el lenguaje C, recuerde que mikroC no admite la inicializacin de los miembros de estructura por medio de las
llaves. Por ejemplo, conjunto_1 ={15,m}; devuelve un error en mikroC.
2.8 FUNCIONES
Una funcin es una subrutina que contiene una lista de sentencias a realizar. La idea principal es dividir un programa en varias partes
utilizando estas funciones para resolver el problema inicial con ms facilidad. Adems, las funciones nos permiten utilizar las destrezas y
el conocimiento de otros programadores. Una funcin se ejecuta cada vez que se llame dentro de otra funcin. En C, un programa
contiene como mnimo una funcin, la funcin main(), aunque el nmero de funciones es normalmente mayor. Al utilizar funciones el
cdigo se hace ms corto ya que es posible llamar una funcin tantas veces como se necesite. En C, el cdigo normalmente consiste en
muchas funciones. No obstante, en caso de que su programa sea muy corto y simple, puede escribir todas las sentencias dentro de la
funcin principal.
FUNCIN PRINCIPAL
La funcin principal main() es una funcin particular puesto que es la que se ejecuta al iniciar el programa. Adems, el programa termina
una vez completada la ejecucin de esta funcin. El compilador reconoce automticamente esta funcin y no es posible llamarla por otra
funcin. La sintaxis de esta funcin es la siguiente:
converted by Web2PDFConvert.com
VALOR DEVUELTO
Una funcin puede devolver un valor (esto no es obligatorio) por medio de la palabra clave return. Al llegar a return, la funcin evala un
valor (puede ser una expresin) y lo devuelve a la lnea de programa desde la que fue llamada.
return r;
// Devolver el valor contenido en r
return (2*x - y); // Devolver el valor de la expresin 2*x-y
Una funcin no puede devolver ms de un valor, pero puede devolver un puntero o una estructura. Tenga cuidado al utilizar matrices y
punteros. El siguiente ejemplo es un error tpico:
tipo de resultado
nombre de funcin
tipos de parmetros
un punto y coma (;)
El prototipo de la funcin main no necesita ser declarado.
converted by Web2PDFConvert.com
// definidos
int time = 100;
// en la declaracin de las funciones f y wait_1
a = 10.54;
b = 5.2;
resultado = f(a,b); // Ejecutar la funcin f por medio de los parmetros a y b
pausa_1(tiempo);
funcinX();
Cuando se llama una funcin, el programa salta a la funcin llamada, la ejecuta, despus vuelve a la lnea desde la que fue llamada.
converted by Web2PDFConvert.com
Para utilizar una matriz en una funcin es necesario asignar la direccin a la matriz (o a su primer miembro). Vea el siguiente ejemplo:
float mtodo_1(int[]);
float mtodo_2(int*);
// y promedio2
int voltaje [NMERO_DE_MEDICIONES] = {7,8,3,5,6,1,9}; // Declaracin de la
// matriz voltaje
promedio1 = mtodo_1(&voltaje[0]); // Parmetro de la funcin es la direccin
// la matriz
}
//
float mtodo_1(int voltaje[])
// Inicio de la funcin mtodo_1
{
int i, suma;
//
float mtodo_2 (int *voltaje) //Inicio de la funcin mtodo_2
{
int i, suma;
#include
#undef
#define
#ifdef
#endif
#ifndef
#if
#else
#elif
Definiciones de macro
Inclusiones de archivos
Control de compilacin
converted by Web2PDFConvert.com
Ahora, vamos a presentar slo las directivas del preprocesador utilizadas con ms frecuencia. Sin embargo, no es necesario saber todas
ellas para programar microcontroladores. Slo tenga en cuenta que el preprocesador es una herramienta muy poderosa para los
programadores avanzados en C, especialmente para el control de compilacin.
Tanque_1 = (((Dimetro/2)*(Dimetro/2)*PI)*altura;
Por medio de la directiva #undef es posible quitar una definicin de nombre de macro. As se especifica que la substitucin que se ha
definido anteriormente ya no va ocurrir en el siguiente cdigo. Esto es til cuando usted quiere restringir la definicin slo a una parte
particular del programa.
#include <nombre_de_archivo>
#include "C:\Ruta\nombre_de_archivo.h"
TRISB = 0; // todos los pines del puerto PORTB se configuran como salidas
PORTB = 0; // todos los pines del PORTB se ponen a 0
ACCESO A LOS BITS INDIVIDUALES
El compilador mikroC PRO for PIC le permite acceder a los bits individuales de variables de 8 bits por su nombre o su posicin en byte:
converted by Web2PDFConvert.com
Para acceder a un bit individual, se puede utilizar '.FX' as como '.BX' (X es un entero entre 0 y 7 que representa la posicin de bit).
TIPO SBIT
Si quiere declarar una variable que corresponde a un bit de un SFR, hay que utilizar el tipo sbit. Una variable de tipo sbit se comporta
como un puntero y se debe declarar como una variable global:
TIPO BIT
El compilador mikroC PRO for PIC proporciona un tipo de datos bit que se puede utilizar para declarar variables. No se puede utilizar en
las listas de argumentos, punteros y los valores devueltos de funciones. Adems, no es posible declarar e inicializar una variable de tipo
bit en la misma lnea. El compilador determina el bit en uno de los registros disponibles para almacenar las variables.
//
//
//
bit bg = 0; //
bit bf;
bit *ptr;
bit bg;
bg = 0;
Una o ms instrucciones en ensamblador estn insertadas en el programa escrito en C, utilizando el comando asm:
asm
{
instrucciones en ensamblador
...
}
Los cdigos escritos en ensamblador pueden utilizar constantes y variables anteriormente definidos en C. Por supuesto, como el
programa entero est escrito en C, sus reglas se aplican al declarar estas constantes y variables.
converted by Web2PDFConvert.com
FUNCIN DE INTERRUPCIN
Una interrupcin detiene la ejecucin normal de un programa para ejecutar las operaciones especficas. Una lista de sentencias a
ejecutar debe estar escrita dentro de una funcin particular denominada interrupt(). La sintaxis de una interrupcin en mikroC se parece a
lo siguiente:
void interrupt() {
cnt++ ;
// Al producirse una interrupcin
// la cnt se incrementa en 1
PIR1.TMR1IF = 0; // Poner a 0 el bit TMR1IF
}
Adiferencia de las funciones estndar, no es necesario declarar el prototipo de la funcin interrupt(). Adems, como la ejecucin de esta
funcin no forma parte de la ejecucin de programa regular, no se debe llamar de ninguna parte de programa (se ejecutar
automticamente dependiendo de las condiciones que el usuario ha definido en el programa). En el siguiente captulo vamos a dar una
clara explicacin de la ejecucin y definicin de subrutinas de interrupcin.
LIBRERAS
Usted probablemente ha notado que en los ejemplos anteriores hemos utilizado algunas funciones como son 'Delay_ms', 'LCD_out',
'LCD_cmd' etc. Estas funciones estn definidas en las libreras contenidas en el compilador mikroC.
Una librera representa un cdigo compilado, anteriormente escrito en mikroC, que contiene un conjunto de variables y funciones. Cada
librera tiene un propsito especfico. Por ejemplo, la librera LCD contiene funciones de visualizacin de la pantalla LCD, mientras que
C_math proporciona algunas funciones matemticas.
Antes de utilizar alguna de ellas en el programa, es necesario comunicrselo al compilador al marcarlas en la lista de las libreras del
compilador existentes. Si el compilador encuentra una funcin desconocida durante la ejecucin de programa, primero va a buscar su
declaracin en las libreras marcadas.
Aparte de las libreras existentes, es posible crear las libreras y luego utilizarlas en el programa. El procedimiento de cmo crear libreras
se describe en detalles en Help (Ayuda) del compilador.
El compilador mikroC incluye tres tipos de libreras:
- libreras ANSI C estndar:
L
- libreras miscelneas:
L
Button Library
Conversion Library
Sprint Library
PrintOut Library
Time Library
Trigonometry Library
Setjmp Library
ADC Library
CAN Library
CANSPI Library
Utilizada para las operaciones con el mdulo CAN externo (MCP2515 o MCP2510)
converted by Web2PDFConvert.com
Utilizada para las operaciones con las tarjetas de memoria Compact Flash
EEPROM Library
EthernetPIC18FxxJ60 Library
Utilizada para las operaciones con el mdulo LCD grfico con resolucin 128x64
I2C Library
Utilizada para las operaciones con el mdulo de comunicacin serial I2C incorporado
Keypad Library
Lcd Library
Utilizada para las operaciones con las tarjetas multimedia MMC flash
Utilizada para las operaciones con los circuitos utilizando la comunicacin serial One Wire
PS/2 Library
PWM Library
RS-485 Library
Utilizada para las operaciones con los mdulos utilizando la comunicacin serial RS485
Sound Library
SPI Library
Utilizada para la comunicacin SPI de 4 bits con el LCD (de 2x16 caracteres)
UART Library
1.
2.
3.
4.
5.
converted by Web2PDFConvert.com
Basta con seguir las instrucciones y pulsar sobre Next, OK, Next, Next... En general, es el mismo procedimiento menos la ltima opcin:
'Do you want to install PICFLASH v7.11 programmer?'. Para qu sirve este software? De eso vamos a hablar ms tarde. Por ahora, basta
con saber que es un software autnomo utilizado para cargar el programa en el microcontrolador.
Una vez ms: Next, OK, Next, Next...
Una vez completada la instalacin del PICflash, el sistema operativo le preguntar a instalar otro programa similar, un software para
programar un grupo especial de los microcontroladores PIC que funcionan en modo de bajo consumo (3.3 V). Salte este paso...
El ltimo paso - la instalacin del controlador (driver)!
converted by Web2PDFConvert.com
El controlador a instalar depende del sistema operativo utilizado. Seleccione el controlador correspondiente al SO (sistema operativo)
utilizado (por medio de abrir la carpeta correspondiente) e inicie la instalacin. Otra vez, Next, OK, Next, Next... Bueno, todo est instalado
para iniciar a programar!
Desgraciadamente, una descripcin detallada de todas las opciones disponibles de este IDE nos tomara mucho tiempo. Por eso vamos
a describir slo lo ms importante del compilador mikroC PRO for PIC. De todos modos, para obtener ms informacion presione el botn
de Ayuda (Help) [F1].
converted by Web2PDFConvert.com
Device (dispositivo):
Al seleccionar el tipo de microcontrolador a utilizar permite al compilador extraer el archivo de definicin (archivo .def) asociado. El archivo
de definicin de un microcontrolador contiene las informaciones especficas de sus registros SFR, de sus direcciones de memoria y
algunas variables de programacin especficas a ese tipo del microcontrolador. Es obligatorio crear un archivo .hex compatible.
Oscillator (oscilador):
Se debe especificar la velocidad de operacin del microcontrolador. Por supuesto, este valor depende del oscilador utilizado. El
compilador la necesita para compilar rutinas, lo que requiere informacin del tiempo (por ejemplo, la funcin Delay_ms). Ms tarde, el
programador necesitar esta informacin tambin. La velocidad de operacin se configura de modo que permita al oscilador interno del
microcontrolador funcionar a una frecuencia seleccionada.
Build/Debugger Type:
Todo el proceso de compilar (building) est compuesto por anlisis sintctico (parsing), compilar, enlazar (linking) y generar los archivos
.hex. El tipo de compilacin le permite ajustar el modo de compilacin. Dependiendo del modo seleccionado, difieren los archivos
generados a cargar en el microcontrolador.
Release: Al elegir esta opcin , el compilador no puede afectar ms a la ejecucin de programa despus de la compilacin. El programa
a cargar en el microcontrolador no ser modificado de ninguna manera.
ICD debug: Al elegir esta opcin, una vez completado el proceso de la compilacin y cargado el programa en la memoria del
microcontrolador, el compilador se queda conectado al microcontrolador por medio del cable USB y el programador, y todava puede
afectar a su funcionamiento. El archivo .hex generado contiene los datos adicionales que permiten el funcionamiento del depurador. Una
herramienta denominada mikroICD (Depurador en circuito - In Circuit Debugger) permite ejecutar el programa paso a paso y proporcionar
un acceso al contenido actual de todos los registros de un microcontrolador real.
El simulador no utiliza los dispositivos reales para simular el funcionamiento del microcontrolador, as que algunas operaciones no
pueden ser reproducidas (por ejemplo, interrupcin). De todos modos, resulta ms rpido depurar un programa por medio de un
simulador. Adems, no se requiere ningn dispositivo destino.
converted by Web2PDFConvert.com
Note que es posible modificar cualquier configuracin en cualquier momento mientras se edita el programa. No se olvide de recompilar y
reprogramar su dispositivo despus de modificar una configuracin.
Por ejemplo, si su programa utiliza un LCD no hace falta escribir nuevas funciones ya que al seleccionar la librera Lcd, usted podr
utilizar funciones listas para ser utilizadas de la librera LCD (Lcd_Cmd, LCD_Init...) en su programa. Si esta librera no est seleccionada
en la ventana Library Manager, cada vez que intente utilizar una funcin de la librera LCD, el compilador le informar de un error. Una
descripcin de cada librera est disponible al pulsar con el botn derecho del ratn sobre su nombre y seleccionar la opcin Help.
Al escribir un programa, no espere que termine la redaccin del programa para compilarlo. Compile su cdigo de forma regular con el
propsito de corregir cunto ms errores de sintaxis. Asimismo usted puede compilar su programa cada vez que se complete la
redaccin de una nueva funcin as como probar su comportamiento al utilizar modo de depuracin (ver la prxima seccin). De este
modo, resulta ms fcil solucionar los errores de programa para no tomar un camino errneo en redactar su programa. De lo contrario,
usted tendr que editar el programa entero.
y su descripcin.
Como un error en su cdigo puede generar mucho ms errores, simplemente debe intentar solucionar el primer error en la lista y
despus recompile su programa. En otras palabras, es recomendable solucionar los errores uno a uno.
En el ejemplo anterior hay dos errores y una advertencia: faltan un punto y coma y una declaracin de variable La advertencia le informa
que falta el tipo del valor devuelto de la funcin main.
La compilacin le permite corregir su programa por medio de solucionar todos los errores en mikroC. Cuando todos los errores se
solucionen, su programa est listo para ser cargado en el microcontrolador. De todas formas, su tarea todava no est terminada, porque
an no sabe si su programa se comporta como se esperaba o no.
DEPURAR EL PROGRAMA
La depuracin es un paso muy importante ya que permite probar el programa despus de una compilacin realizada con xito, o
solucionar los errores descubiertos mientras se ejecuta el programa. Como ya hemos visto, hay dos modos de depurar: un depurador
software que simula el funcionamiento del microcontrolador (modo por defecto) y depurador hardware (mikroICD) que lee directamente el
contenido de la memoria del microcontrolador. El procedimiento de depuracin es el mismo sin reparar en el modo elegido. En caso de
elegir la opcin ICD debug, hay que cargar el programa en el microcontrolador antes de depurarlo.
Para iniciar la depuracin, pulse sobre la opcin Start debugger del men Run. El editor del cdigo ser ligeramente modificado
automticamente y aparecer una ventana denominada Watch Values. El principio de depuracin se basa en ejecutar el programa paso
a paso y monitorear el contenido de los registros y los valores de las variables. De este modo, es posible comprobar el resultado de un
clculo y ver si algo inesperado ha ocurrido. Al ejecutar el programa paso a paso, podr localizar los problemas con facilidad.
Durante una depuracin el programa ser modificado, por lo que usted siempre debe recompilar el programa despus de cada
correccin, y reiniciar el depurador para comprobar qu ha sido modificado.
Step Into - Ejecuta una sola instruccin. Cuando la instruccin es una llamada a una rutina, el depurador har un
salto a la rutina y se detendr despus de ejecutar la primera instruccin dentro de la rutina.
Step Over - Se ejecuta una sola instruccin. Cuando la instruccin es una llamada a una rutina, el depurador no har
un salto a la rutina, sino que se ejecutar toda la rutina. El depurador se detiene a la primera instruccin despus de la
llamada a la rutina.
Run To Cursor - El programa se ejecuta hasta la lnea en la que se encuentre el cursor.
Step out - Se ejecutan las dems instrucciones dentro de la rutina. El depurador se detiene inmediatamente al salir
de la rutina.
converted by Web2PDFConvert.com
Para visualizar esta ventana es necesario seleccionar la opcin View/Debug Windows/Watch Values. Entonces usted puede hacer una
lista de registros/variables que quiere monitorear y la manera de visualizarlos.
STOPWATCH (CRONMETRO)
Si quiere saber cunto tiempo tarda un microcontrolador en ejecutar una parte del programa, seleccione la opcin Run/View Stopwatch.
Aparecer una ventana como se muestra en la figura a la derecha. Cmo funciona un cronmetro? Eso es pan comido... El tiempo que
tarda un comando (step into, step over, run/pause etc.) en ejecutarse por el depurador se mide automticamente y se visualiza en la
ventana Stopwatch. Por ejemplo, se mide tiempo para ejecutar un programa, tiempo para ejecutar el ltimo paso etc.
PROGRAMAR EL MICROCONTROLADOR
Si ha solucionado todos los errores en su cdigo y cree que su programa est listo para ser utilizado, el siguiente paso es cargarlo en el
microcontrolador. El programador PICflash se utiliza para este propsito. Es una herramienta diseada para programar todos los tipos de
microcontroladores PIC. Est compuesto por dos partes:
La parte hardware se utiliza para introducir un cdigo hexadecimal (el programa a ser cargado en el microcontrolador)
y para programar el microcontrolador por medio de niveles de voltaje especficos. Durante el proceso de la
programacin, un nuevo programa se escribe en la memoria flash del microcontrolador, mientras que el programa
converted by Web2PDFConvert.com
TERMINAL USART
El terminal USART representa una sustitucin para la estndar Windows Hyper Terminal. Se puede utilizar para controlar el
funcionamiento del microcontrolador que utiliza la comunicacin USART. Tales microcontroladores estn incorporados en un dispositivo
destino y conectados al conector RS232 de la PC por medio de un cable serial.
La ventana USART terminal dispone de opciones para configurar la comunicacin serial y visualizar los datos enviados/ recibidos.
EDITOR EEPROM
Al seleccionar la opcin EEPROM Editor del men Tools, aparecer una ventana como se muestra en la siguiente figura. As es cmo
funciona la memoria EEPROM del microcontrolador. Si quiere cambiar de su contenido despus de cargar el programa en el
microcontrolador, sta es la forma correcta de hacerlo. El nuevo contenido es un dato de un tipo especfico (char, int o double), primero
debe seleccionarlo, introducir el valor en el campo Edit Value y pulsar sobre Edit. Luego, pulse sobre el botn Save para guardarlo como
un documento con extensin .hex. Si la opcin Use EEPROM in Project est activa, los datos se cargarn automticamente en el
microcontrolador durante el proceso de la programacin.
converted by Web2PDFConvert.com
converted by Web2PDFConvert.com
Un cdigo generado que utiliza herramientas para controlar los visualizadores LCD y GLCD contiene funciones de la librera Lcd. Si las
utiliza en el programa, no se olvide de marcar la caja de chequeo junto a esta librera en la ventana Library Manager. As el compilador
ser capaz de reconocer estas funciones correctamente.
previous chapter | table of contents | next chapter
dsPIC Solution
PIC32 Solution
PIC32
PIC32
PIC32
PIC32
STM32 Solution
AVR Solution
Support
dsPIC
dsPIC
dsPIC
dsPIC
dsPIC
Forum
AVR
AVR
AVR
AVR
m ik roBUS
Follow us on
Lets m ak e
STM32
STM32
STM32
STM32
8051 Solution
C
C
C
C
Press
Legal
8051
8051
8051
8051
8051
Add-on boards
Dev. Boards
Com pilers
Program m ers
Book s
Kits
Additional Software
Visual TFT
Visual GLCD
Pack age Manager
GLCD Font Creator
Tim er Calculator
Archive
About Us
Click Boards
m ik rom edia shields
Com m unication
Storage
Real Tim e Clock
Display
Measurem ent
Audio & Voice
Power Supply
GPS
GSM/GPRS
Custom ization
C opyright 1998 - 2014. MikroElektronika. All rights reserved. All trade and/or services marks mentioned are the property of their respective owners.
converted by Web2PDFConvert.com
converted by Web2PDFConvert.com