Вы находитесь на странице: 1из 50

GAMA ALTA DE MICROCONTROLADORES

COMPILADOR C CCS
SISTEMAS EMBEBIDOS

DIGITALES III:

GAMA ALTA DE MICROCONTROLADORES

CONSTANTES Y
VARIABLES

PIC18F4550

DIGITALES III:

GAMA ALTA DE MICROCONTROLADORES

2. CONSTANTES
Las constantes son valores que el compilador
remplaza, almacenan valores fijos los cuales no
cambian.
Las constantes facilitan la comprensin de un
programa y las modificaciones del mismo
simplemente modificando su valor al inicio de un
programa. Al momento de definir una constante
no solo se puede asigna un valor, tambin se
puede expresar como la operacin matemtica con
otras constantes.
2.1 Declaracin de constantes
La declaracin se hace de dos formas:
#DEFINE
DIGITALES III: 3

GAMA ALTA DE
MICROCONTROLADORES

#define
NUMERO_PI
#define TRUE
1
#define FALSE
0
#define PERIMETRO_CIR

3.14159265
NUMERO_PI*RADIO

2.2 CONST
Utiliza la palabra reservada CONST antes de la
declaracin, el valor tampoco cambia en el programa
pero se la utiliza para que a este se le asigne una
posicin fija dentro de la memoria flash, a esta
posicin acceden para obtener el valor.
La constante se encuentra en una posicion fija y es
importante si se utiliza un modificador o si el valor de
esta constante cambia en la ejecucin del programa.

Pasos de un compilador estndar


Ejemplo:
Const unsigned
Const unsigned

char temperatura_max=40;
char temperatura_min=20;

2.3 CONSTANTES ENUMERADAS


Son constantes que se definen bajo un mismo
grupo, toman valores consecutivos o se puede
interrumpir las secuencias. Se utiliza la palabra
reservada ENUM.
Estas cuentan con las siguientes estructuras:
enum nombre_grupo{ elemento_0[=contante_0] ,
elemento_1[=contante_1]
,
elemento_2[=contante_2] ,
. .
. . . . . , elemento_n[=constante_n] }

GAMA ALTA DE
MICROCONTROLADORES

La anterior estructura es igual a:


#define elemento_0 contante_0
#define elemento_0 contante_0
#define elemento_0 contante_0
Observe que no requiere el smbolo =
De la estructura ENUM se tiene que:
nombre_grupo : Es el nombre del tipo enumerado.
elemento_n:

: Es el nombre a declarar

constante_n
: Es la equivalencia del elemento,
como se encuentra al interior de los corchetes quiere
decir que estos valores son opcionales.
],
Si constante_0 se omite por defecto carga el valor
de 0 y continua con la secuencia. Si se rompe la
secuencia se reinicializa en ese valor.
6

GAMA ALTA DE
MICROCONTROLADORES

Ejemplo de enum:
enum
dom}

dias{lun=1, mar, mie, jue,

vie,

sab,

De la asignacin anterior mar toma el valor de 2 y


as sucesivamente.
enum mes{ENE=1,
FEB,
MAR,
ABR,
MAY,
JUN,
JUL,
AGO,
SEP,
OCT,
NOV,
DIC}
De la asignacin anterior FEB toma el valor de 2 y
as sucesivamente hasta llegar a DIC=12.
7

GAMA ALTA DE
MICROCONTROLADORES
Constantes
especiales tipo

2.4
carcter
Los caracteres ASCII en C se representan por valor
decimal o hexadecimal, pero de ellos existen unos
caracteres especiales que se escriben de forma
especial para evitar errores en la compilacin entre
estosEN
tenemos:
C
Significado
Valor
\b
\r
\n
\0
\f
\t
\
\
\v

Espacio atrs
<bs>
Enter
<CR>
Retorno de carro
<Lf>
Nulo<NUL>
Salto de
pgina<FF>
Tabulaci
horiz<TAB>
Comilla
doble
Comilla sencilla
Tabulacin
vertic<VT>

decimal
8
13
10
0
12
9
34
39
11
8

GAMA ALTA DE
MICROCONTROLADORES

Los caracteres se pueden escribir entre comillas


sencillas, tambin se puede escribir el valor
hexadecimal o decimal.
3. Variables
Las variables representan posiciones de memoria las
cuales pueden cambiar el contenido de la informacin
a medida que el programa lo requiera. La declaracin
del tipo de variable se hace teniendo en cuenta la
informacin que va a contener, por ejemplo si
requiere almacenar numero enteros positivos que no
excedan de 255 o si cuenta con valores negativos
para un sensor de temperatura negativa.
Las variables tienen nombres y estos nombres deben
indicar el contenido de los datos que almacenan.
9

GAMA ALTA DE
MICROCONTROLADORES

Para declarar una variable es necesario como se


menciono anteriormente conocer los datos que se
van a almacenar, por ejemplo si se piensa construir
un velocmetro para un vehculo que indique la
velocidad en tres cifras
el valor que debe
almacenar la variable no baja de 0
km/h y
tampoco excede de 255 km/h, a menos que
instalara un velocmetro en un formula uno.
Las operaciones con valores positivos se ejecutan
ms rpidas en procesadores de 8 y 16 bits, con
estos
datos
se
realizan
comparaciones,
incrementos, decrementos, entre otras.
En conclusin el tipo de variable a seleccionar
depende del signo y de la informacin a
alamacenar.

10

3.1 Tipos

GAMA ALTA DE
de MICROCONTROLADORES
variables

a. Int 8: char
Reserva 1 byte de informacin y este puede valor
se puede encontrar en 256 combinaciones
posibles(2 exp 8).
Si el valor es positivo almacena un dato entre 0 a
255
Si el valor es negativo almacena un dato entre -128
a 127
b. Int 16: int
Reserva 2 bytes de informacin y este puede valor
se puede encontrar en 65536 combinaciones
posibles(2 exp 16).
Si el valor es positivo almacena un dato entre 0 a
65535
Si el valor es negativo almacena un dato entre11

3.1 Tipos

GAMA ALTA DE
de MICROCONTROLADORES
variables

c. Int 32: long


Reserva 4 bytes de informacin continuos y este
puede valor se puede encontrar en 4.294.967.296
combinaciones posibles(2 exp 32).
Si el valor es positivo almacena un dato entre 0 a
4.294.967.295
Si el valor es negativo almacena un dato entre
-2.147.483.648 a 2.147.483.647
d. Float:
Reserva 4 bytes de informacin, almacena datos
de tipo flotante. Los valores se representan
mediante mantisa, que es es un numero entre 0.1
y 1.0 y un exponenete que representa la potencia
de 10, valor que multiplica la mantisa.
12

GAMA ALTA DE
yMICROCONTROLADORES
el exponente puede

La mantisa
negativos.

ser positivos o

De los 32 bits utilizan:

3 bytes para la mantisa, de ellos 23 contienen el


valor y 1 un solo bit el signo.
1 byte para el signo, 1 bit de ellos se utiliza para
el signo.
Este tipo de datos se encuentra estandarizado y
utiliza la IEEE32.
El rango de valores que almacena se encuentra
entre:
1.17549435 exp -38 a 3.402823466 exp +38

e. double: No soportado por ACCCS

13

GAMA ALTA DE
MICROCONTROLADORES

4. Modificadores de datos
Las variables cuando se declaran pueden estar
acompaados de palabras reservadas del ANSI C
que no modifican el tamao en bits del tipo sino
el tratamiento y la forma en que se maneja esta
informacin.
Los modificadores permiten optimizar el cdigo
una vez llegue al proceso de ensamblado, hace
que un programa se ejecute mas rpido.
Los modificadores permite que se pueda
desarralloar operaciones entre variables de
diferente tipo, por ejemplo cuando sume un INT 8
con una INT 16.
Entre los modificadores se tiene: signed, unsigned,

14

GAMA ALTA DE MICROCONTROLADORES

4.1 unsigned:
Le da a la variable la caracterstica positiva, el primer
valor empieza en cero y el ltimo en (2 exp n)-1. En
este caso el bit de mayor peso tiene un valor y no
representa el signo.
El tipo de datos que se facilita para un
microcontrolador de 8 bits es el unsigned char, por ser
positivo y ser el de menor longitud.
4.2 signed:
Le da a la variable la caracterstica negativa, el
primer valor empieza en - (2 exp n)/2 y el ltimo en +
((2 exp n)/2)-1. En este caso el bit de mayor peso
tiene un valor del signo.
El bit de mayor peso es 1 si la variable es negativa y
III: 15
el bit vale 0 si la variable es positiva. Los DIGITALES
otros bits

GAMA ALTA DE MICROCONTROLADORES

Por defecto ANSI C si no se declara el modificador


signed o unsigned la toma como si esta fuera signed.
Los modificadores signed y unsigned no aplican a las
variables de tipo float y double por la naturaleza de
datos que estan contienen.
4.3 volatile:
El valor de la variable que posee este modificador
puede cambiar de valor por un agente externo, uno
de ellos es el hardware, en este caso una interrupcin
la pude modificar.
El programa cada vez que hace referencia a esta
variable lee desde la posicin especifica de memoria y
no asume ningn valor.
DIGITALES III: 16

GAMA ALTA DE MICROCONTROLADORES

Los
valores
manipulados en una
interrupcin, en los
puertos o registros
internos se pueden
declarar
como
voltiles.
Ejemplo:
El compilador como
observa
a
varaible1=100
y
despus la hace
igual
a
100,
entonces
al
optimizar no toma la
primer linea.
Si se utiliza volatil
si emsambla todo.

DIGITALES III: 17

GAMA ALTA DE MICROCONTROLADORES

DIGITALES III: 18

GAMA ALTA DE MICROCONTROLADORES

Operadores

PIC18F4550

DIGITALES III:

GAMA ALTA DE MICROCONTROLADORES

En el compilador se pueden utilizar operadores


variados que potencian el desarrollo de sistemas
embebidos como:
Aritmticos:
+ Suma
- Resta
* Multiplicacin
/ Divisin
% Mdulo (resto)
++Incremento (suma 1)
-- Decremento (resta 1)
Los operadores de ++ y pueden representar la
operacin de:
Postincremento: a++
Preincremento: ++a
DIGITALES III:
Postdecremento: a--

20

GAMA ALTA DE MICROCONTROLADORES

Cuando se desarrollan las operaciones matematicas


se debe tener en cuenta el tipo de datos que se
obtiene, por ejemplo en la suma:
Unsigned char sumando, adendo;
Unsigned int resultado;
Sumando=200;
Adendo=150;
Resultado=sumando+adendo
La suma de dos variables tipo char generan un
resultado de tipo int.
En la resta al igual que en las otras operaciones
matematicas se deben tener en cuentas los tipos de
variables a trabajar, por ejemplo, una resta que se
realice entre dos variables de tipo char sin signo el
resultado es un char pero con signo.

DIGITALES III: 21

GAMA ALTA DE MICROCONTROLADORES

De forma similar en la multiplicacion:


Unsigned char multiplicando,multiplicador;
Unsigned int resultado;
multiplicador=200;
multiplicando=150;
Resultado=multiplicador+multiplicando;
La division entre dos variables de tipo char depende
del resultado se puede asignara a otra variable de tipo
char, a menos que se requieran calculos precisos para
guardar el resultado en variables de tipo punto
flotante.
Decrementos e incrementos:
Cuando se utilizan los preincrementos primero se
realiza el incremento y con este valor se opera, por
ejemplo:
X=10;
DIGITALES III: 22
Y=X++;

GAMA ALTA DE MICROCONTROLADORES

X=10;
Y=++X;
En este caso Y es igual a 11 y X se hace igual a 11.
Operadores relacionales
C cuenta con los operadores relacionales que se
decriben a continuacin:
Smbolo
>
<
>=
<=
==
!=

Operacin

Ejemplo

Mayor que
if(a>b)
Menor que
if(a<b)
Mayor o igual que
if(a>=b)
Menor o igual que
if(a<=b)
Igual que
if(a==b)
Distinto que
if(a!=b)
DIGITALES III: 23

GAMA ALTA DE MICROCONTROLADORES

Operadores lgicos booleanos


Estos operadores solo generan dos resultados
verdadero o falsoy se basan en las operaciones del
algebra booleana, los operadores lgicos son:
Smbolo
Operacin
Ejemplo
&&
AND
if(a>b)
||
OR
if(a>b)
!
NOT (El valor contrario)
if (!a)

Estas operaciones se realizan entre variables y


permiten evaluar por ejemplo el estado de un
condicin, tambin para independizar las operaciones
se puede utilizar los parentesis, ejemplo:
If (( a>5) && (a<30))
If (( a<5) || (a=30))
DIGITALES III: 24

GAMA ALTA DE MICROCONTROLADORES

Los operadores lgicos corresponden a las tablas de


verdad muy conocidas por los estudiantes de
electrnica:
A

A &&B

A ||B

!A

DIGITALES III: 25

GAMA ALTA DE MICROCONTROLADORES

Operadores lgicos entre bits


C permite trabajar a nivel de bits, esto marca la
diferencia con otros lenguajes de programacin entre
estos operadores tenemos:

Smbolo Descripcin
Ejemplo
&
Y AND
A&B
|
Or Inclusiva
A|B
^
Or Exclusiva
A^B
<<
Rotacin a la izquierda A<<B
>>
Rotacin a la derecha A>>B
~
Complemento a uno
~A

DIGITALES III: 26

GAMA ALTA DE MICROCONTROLADORES

Los operadores lgicos bit a bit se expresan en la


siguiente tabla:
AND

OR

RESULTADO

A &B

RESULTADO

A |B

0&0

0|0

0&1

0|1

1&0

1|0

1&1

1|1

XOR
RESULTADO

A ^B

0|0

0|1

1|0

1|1

COMPLEMENTO
A
!A
0

DIGITALES III: 27

GAMA ALTA DE MICROCONTROLADORES

Observe algunos ejemplos de cmo utilizar los


operadores de bits:
unsigned char a,b,c;
a=0b11110000
b=0b00001111
C=a&b;/*en C despus de la operacin se encuentra
el valor 255*/
Esta misma estructura de programacin se utiliza
para los operadores bit a bit como el complemento o
la lgica XOR. Observe el cdigo:
unsigned char a,b,c;
a=0b11110000
b=0b00001111
C=~(a&b);/*en C despus de la operacin se
encuentra el valor 0*/
DIGITALES III: 28

GAMA ALTA DE MICROCONTROLADORES

Desplazamiento de bits:
Los operadores desplazan los bits a la derecha o a la
izquierda segn se especifique en la instruccin.
La estructura es:
Resultado=variable >> numero de bits a desplazar a
derecha.
Resultado=variable << numero de bits a desplazar a
izquierda.
Ejemplo:
C=a <<4
La anterior instruccin desplaza a la izquierda 4
posiciones, los valores que sobran en cada
desplazamiento se desechan y los espacios que
quedan se rellenan con ceros.
Estas instrucciones son diferentes a las rotaciones
ya29
DIGITALES III:

GAMA ALTA DE MICROCONTROLADORES

Funciones y
sentencias de control

PIC18F4550

DIGITALES III:

GAMA ALTA DE MICROCONTROLADORES

5.1 Funciones
Una funcion es una serie de instrucciones que se
llamaran varias veces a lo largo de la ejecucion de un
programa, estas son siomilares a las utilizadas en
ensamblador por las intrucciones call.
La funcin ejecutan una actividad especfica, el
llamado que se hace a una secuencia de cdigo hace
que se facilite entender un cdigo. El cdigo es
reusable. La estructura de una funcin es:
Tipo nombre_funcion( tipo parametro 1, parametro2
)
{
instrucciones. . . .
}
Los valores se retornan por medio de la instruccin:
DIGITALES III: 31
return(variable)

GAMA ALTA DE MICROCONTROLADORES

Funciones
Si la funcin si retorna un valor la estructura es:
Tipo nombre_funcion( tipo parametro 1, parametro2
)
{
instrucciones. . . .
return(variable o expresion);
}
Pero si la funcin no retorna un valor es necesario
definirla de la siguiente manera:
Void nombre_funcion( tipo parametro 1, parametro2
)
{
instrucciones. . . .
}
La anterior siempre y cuando recibe parmetros, si no
DIGITALES III: 32
recibe parmetros
la funcion es sencilla
en su

GAMA ALTA DE MICROCONTROLADORES

Si la funcin no retorna ningn valor y tampoco recibe


parmetros la estructura es:
void nombre_funcion(void)
{
instrucciones. . . .
}
Las funciones cuando retorna parmetros estn deben
devolver el mismo tipo de dato del cual se define.
Las funciones se ubican antes de la funcin void
main(void).

DIGITALES III: 33

GAMA ALTA DE MICROCONTROLADORES

5.2 Sentencias de control


Como todo lenguaje de programacin encontramos
estructuras como:
a. Estructura if-else
La sentencia solo se ejecuta si se cumple la condicin.
En caso contrario el programa sigue su curso sin
ejecutar la sentencia.
Sintaxis:
if (condicin)
{
sentencia;
}
En el caso anterior se valida en una ocasin y se
ejecuta si es verdad. Se pueden suprimir las llaves
Otro formato evalua la existencia de una condicin y
en caso de ser verdadera ejecuta la linea, en caso de
DIGITALES III:
ser falsa ejecuta el segmento de instrucciones

34

GAMA ALTA DE MICROCONTROLADORES

if (condicin)
{ sentencia1; }
/*CONDICION VERDAD*/
else
{ sentencia2; }
/*CONDICION FALSA*/
Existe otra opcin se denomina If anidados, en ella se
valida diferentes opciones:
if (condicin)
{ sentencia1;
}
else if (condicin)
{ sentencia2;
}
else if (condicin)
{ sentencia3;
}
else
sentencia4;

DIGITALES III: 35

GAMA ALTA DE MICROCONTROLADORES

b. Estructura Switch
Esta estructura se suele utilizar en los mens, de
manera que segn la opcin seleccionada se ejecuten
una serie de sentencias. Su sintaxis es:
switch (variable)
{
case contenido_variable1:
sentencias;
break;
case contenido_variable2:
sentencias;
break;
default:
sentencias;
break;
}
DIGITALES III: 36

GAMA ALTA DE MICROCONTROLADORES

Cada case puede incluir una o ms sentencias sin


necesidad de ir entre llaves, ya que se ejecutan todas
hasta que se encuentra la sentencia BREAK. La
variable evaluada slo puede ser de tipo entero o
caracter. default ejecutar las sentencias que incluya,
en caso de que la opcin escogida no exista.
switch (variable)
{
case contenido_variable1:
sentencias;
break;
case contenido_variable2: /*EJECUTA PARA
LAS TRES*/
case contenido_variable3: /*EL MISMO
SEGMENTO*/
case contenido_variable4:
sentencias;
DIGITALES III: 37
break;

GAMA ALTA DE MICROCONTROLADORES

Estructuras repetitivas
Las estructuras de repeticin se utilizan en los
programas y estas pueden ser de dos tipos: una
cuando realiza un nmero conocido de veces o la otra
cuando la repeticin depende de una condicin.
La estructura repetitiva cuando se conoce un nmero
finito de veces es:
c. Ciclo for
El ciclo for ejecuta un bloque de instrucciones n veces,
se utiliza este ciclo cuando se conoce el nmero de
iteraciones o repeticiones de una tarea. Su sintaxis es
la siguiente:
for(valor inicial; condicin de paro; incremento)
{
instrucciones
}

DIGITALES III: 38

GAMA ALTA DE MICROCONTROLADORES

Donde el valor inicial se asigna a una variable de tipo


entero o char, cuya funcin es la de contar y controlar
el nmero de iteraciones del ciclo, el ciclo se ejecuta
hasta la condicin paro, en cada iteracin se
incrementa el numero de veces establecido en el
enunciado.
Ejemplo:
Unsigned char i;
for (i=1; i<20; i++)
{
Output_A(i);
Delay();
}
Donde se establece como variable de inicio la variable
i y se inicializa con 1, la condicin de paro del ciclo se
ejecuta hasta que i sea menor de 20y el incremento o
actualizacin de i es un incremento de 1 en 1.
DIGITALES III: 39

GAMA ALTA DE MICROCONTROLADORES

Ejemplo 2:
Unsigned int i;
for (i=1; i<2000; i++)
{
Output_B(i);
Delay();
}
Donde se establece como variable de inicio la variable
i y se inicializa con 1, la condicin de paro del ciclo se
ejecuta hasta que i sea menor de 2000 y el
incremento o actualizacin de i es un incremento de 1
en 1.
Si se quiere crear ciclos infinitos se puede crear la
estructura:
for (;;)
{
DIGITALES III: 40

GAMA ALTA DE MICROCONTROLADORES

d. Sentencia break
Cuando se desea salir de manera abrupta de un ciclo
se puede utilizar la instruccin BREAK. Por lo general
se utiliza despus de una condicin al interior del ciclo.
Unsigned int i;
for (i=1; i<20; i++)
{
if (i==10)
{
break;
/* Sale del ciclo sin esperar que i sea menor a 20 */
}
Output_B(i);
Delay();
}
DIGITALES III: 41

GAMA ALTA DE MICROCONTROLADORES

e. Sentencia continue:
Cuando se desea saltar una iteracin y continuar con
el resto de los ciclo se utiliza la instruccin
CONTINUE, esta sentencia tambin se ejecuta
despus de una condicin. Ejemplo:
Unsigned int i;
for (i=1; i<20; i++)
{
if (i==15)
continue; /* Salta la secuencia si la i es igual a15 */
Output_B(i);
Delay();
}

DIGITALES III: 42

GAMA ALTA DE MICROCONTROLADORES

f. ciclo while
Este ciclo ejecuta un bloque de instrucciones mientras
una condicin determinada sea verdadera. Su sintaxis
es la siguiente:
while(condicin)
{
instrucciones
}
Cuando la ejecucin de un programa llega al ciclo
while, sucede lo siguiente:
1. Es evaluada la expresin de la condicin.
2. Si la condicin se evala como falsa (es decir, a
cero), el ciclo while termina, y la ejecucin pasa al
primer enunciado que se encuentre a continuacin de
los enunciados del while.
3. Si la condicin se evala como verdadera (esto es,
1), se ejecutan los enunciados (bloque de
DIGITALES III: 43
instrucciones ) del while.

GAMA ALTA DE MICROCONTROLADORES

Es decir, se evala la expresin de la condicin, y de


resultar cierta, se ejecuta el bloque de instrucciones
del while, mientras que, si dicha condicin se evala
como falsa, la ejecucin del ciclo termina.
Actividad en clase:
Construya un ejemplo que se genere un secuencia de
leds hasta que el valor por el puerto A de PIC18F4550
sea igual a 15.

DIGITALES III: 44

GAMA ALTA DE MICROCONTROLADORES

g. ciclo do while
Este ciclo ejecuta por lo menos un bloque de
instrucciones y posteriormente evalua una condicin.
Su sintaxis es la siguiente:
do
{
instrucciones
} while(condicin);
Cuando la ejecucin de un programa llega al ciclo
while, sucede lo siguiente:
1. Ejecuta el bloque de instrucciones.
2. Es evaluada la expresin de la condicin. Si la
condicin se evala como falsa (es decir, a cero), el
ciclo do while termina,
3. Si la condicin se evala como verdadera (esto es,
1), se regresa al paso 1.

DIGITALES III: 45

GAMA ALTA DE MICROCONTROLADORES

h. Sentencia goto
C le permite utilizar la sentencia goto pero ests no es
muy utilizada hoy en dia, se hace un tanto ilegible el
cdigo y pareciera ensambaldor. Ejemplo :
y=1;
Incrementar
y++;
if( y<20) goto incrementar
Se recomienda al programador mejor no utilizar estas
estructuras,

DIGITALES III: 46

GAMA ALTA DE MICROCONTROLADORES

5.3 Mezcla de C con lenguaje ensamblador


C le permite utilizar la
sentencia para ingresar
instrucciones en ensamblador, esto se hace cuando se
confa en bloques de instrucciones que han
funcionado de forma eficiente o cuando desea agregar
subrutinas que no cuenta el compilador C CCS.
Entre las razones por las cuales se puede utilizar se
encuentran:
Ejecutar procedimientos optimizados en velocidad de
ejecucin.
Manejar
caractersticas
especiales
de
un
microcontrolador que no la posea el compilador.
Invocar
instrucciones
especficas
del
microcontrolador como bajo consumo o interrupciones
por software.
Generar pequeos lapsos de temporizacin, debido a
DIGITALES III: 47
que estos pueden variar dependiendo del compilador

GAMA ALTA DE MICROCONTROLADORES

Cdigo de una linea:


C le permite ingresar una sola linea de lenguaje
ensamblador para ello utilice la sintaxis:
Asm( <instruccin de ensamblador> )
Ejemplo
Asm( sleep );
Cdigo intermedio:
C le permite ingresar cdigo intermedio
programa para ello utilice la sintaxis:
__Asm <instruccin de ensamblador>
__Asm <instruccin de ensamblador>

en

el

Ejemplo
__Asm
sleep
Observe que no requiere agregar ; al final de la
lnea.

DIGITALES III: 48

GAMA ALTA DE MICROCONTROLADORES

Bloque de ensamblador:
C le permite ingresar bloques de lenguaje
ensamblador, al interior del bloque no se hace usos
del carcter ; para indicar fin de linea. Los bloques
se agregan entre las sentencias: #asm y se finalizan
con #endasm. Ejemplo:
#asm
clrf bsr
Nop
Nop
Nop
sleep
#endasm
Es de anotar que cuando se utiliza este sentencia no
se puede tabular, todas las sentencias #asm y
DIGITALES III: 49
#endasm empiezan en la columna 1.

50

Вам также может понравиться