Sunteți pe pagina 1din 116

Aprendiendo C18

Introduccin a la Programacin y uso

V3.2 August 10, 2007


Agenda
Instalacion de C18
Construyendo nuestro Primer Proyecto
Arquitectura de un Programa en C18
Ti
Tipos de
d datos
d t y variables
i bl
Almacenamiento en Memoria de Datos y
M
Memoria i de
d Programa
P
Introduccin a las Funciones
Visibilidad de las variables
Declaracin de variables
Como escribir y leer un PORT
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 2
Agenda cont.
Estructuras condicionales IF
B l
Bucles:
Bucle FOR
Bucle WHILE
Bucle DO-WHILE
Break , Contine y Goto
Operaciones logicas
Operadores logicos en condicionales
O
Operadores
d logicos
l i a nivel
i l BIT
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 3
Agenda cont.
Arrays
F
Funciones
i
Modularizacion de un programa
Creacion y declaracion de funciones
Llamada a funciones
Entrega de parametros
Directivas
#include
#d fi
#define
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 4
Agenda cont.
Las Librerias de C18
Librerias para el manejo de Perifericos
Manejo de la USART
Manejo del Timers
Manejo
j del ADC
Librerias para control por software
Manejo de displays LCDs
Librerias para tratamiento de Strings

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 5
Instalacion de C18

V3.2 August 10, 2007


Como hacer nuestro
Pimer Proyecto

V3.2 August 10, 2007


Arquitectura de un
Programa en C18

V3.2 August 10, 2007


Arquitectura de un programa en
C18

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 9
Tipos de Datos en MPLAB C18
Los datos que puede manejar C pueden ser del tipo
enteros,, enteros positivos
p y negativos,
g , decimales con
presicin simple o mayor, llamados flotantes de simple
y doble presicin

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 10
Datos y Variables

V3.2 August 10, 2007


Formato de datos Little Endian

Los datos de ms de un byte de longitud,


longitud se
almacenan en memoria siguiendo el criterio LITTLE
ENDIAN, es decir los bytes menos significativos
ocupan las posiciones de memoria ms bajas.
Ejemplo:

#pragma idata mi_dato=0x1000


Long valor = 0xAABBCCDD;

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 12
Las variables
Para almacenar los datos dentro de un microcontrolador
se usa la memoria,, el lugar
g donde se pueden
p almacenar
temporalmente los mismos, los denominamos
VARIABLES
Desde el ppunto
nto de vista
ista fsico la variable
ariable se aloja en un
n
registro, el cual puede almacenar 8 bits. Sin embargo
una variable puede ocupar mas de un registro, todo
depende del largo que tenga el dato que quiera
almacenarse en la variable
Las variables por tanto se identifican por un nombre o
identificador y por tener una dimensin lo cual se
asigna mediante un tipo que puede ser modificado por
un calificador

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 13
Tipos de Variables: Char
Para almacenar datos las variables podrn ser:
char (carcter): puede contener un carcter o un dato
numrico de -128 a +127
unsigned char (carcter sin signo): puede contener un
dato de 0 a 255
signed char (carcter con signo): es igual que la tipo
char

Registro

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 14
Variables tipo int
La variable tipo int ocupa 2 bytes (16 bits), y la
misma se usa tpicamente
p para
p almacenar datos
numricos.
Int se usa cuando queremos almacenar cualquier
nmero que vaya desde -32768
32768 a +32767
Unsigned int permite el rango mximo de
almacenamiento pero solo para nmeros positivos
desde 0 a 65535

2 Registros
R i t de
d 8bits
8bit
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 15
Variables tipo short
La variable tipo Short ocupa 2 bytes como lo hace int (16
bits), pero si le sigue el modificador long ampliamos su
rango a 3 bytes (24bits)
short se usa cuando queremos almacenar cualquier nmero que
vaya desde -32768 a +32767
unsigned short permite el rango mximo de almacenamiento pero
solo para nmeros positivos desde 0 a 65535
short long permite un rango mayor de almacenamiento con un
rango negativo y positivo de nmeros que va desde -8.368.608 a
+8 368 607 (24 bits)
+8.368.607
unsigned short long permite todo el rango pero solo admite
numeros positivos desde 0 a 16.777.215 (24 bits)

2 o 3 Registros de 8bits
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 16
Variables tipo long
La variable tipo long ocupa 4 bytes, se usa
cuando queremos almacenar cualquier nmero
que vaya desde -2.147.483.648 a +2.147.483.647
unsigned long permite el rango mximo de
almacenamiento pero solo para nmeros
positivos desde 0 a 4.294.967.295

4 Registros de 8bits
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 17
Variables tipo float y double
Las variables tipo float y double ocupan 4 bytes,
se usan cuando queremos almacenar cualquier
nmero decimal.

4 Registros de 8bits
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 18
Almacenamiento de
variables
Las variables pueden crearse en la
memoria de datos (ram) o en la memoria
de programa del microcontrolador (rom).
Para indicarle al compilador donde deber
crear la variable se antepone a la
g
definicin de la variable las siglas rom o
ram.
Sino indicamos cual es el lugar
g donde se
almacenaran las variables, estas por
default se almacenaran en memoria de
datos
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 19
Almacenamiento en memoria de
Programa
Para almacenar datos en memoria de
programa eixsten 2 modificadores
modificadores,
denominados near y far (cercana y lejana:
ffar: cuando
d se usa estet modificador
difi d la l
variable se crea en la memoria de programa
por encima de los 64K
near: cuando se usa este modificador la
variable se crea en memoria de programa por
debajo de los 64K
Ejemplo:
#define MEM_MODEL near
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 20
Las funciones
Un programa de C esta constituido por rutinas, o
segmentos
g de cdigo
g que
q realizan una funcin
determinada.
Las funciones tienen un nombre, mediante el cual se
identifican.
identifican
La funcin mas importante, y donde comienza todo
programa
p g se denomina main (p (principal)
p )
Todo programa debe tener una funcin main donde se
encuentra la parte principal del mismo.
Las funciones son bloques de sentencias de cdigo, y
estn limitadas por llaves {}. Toda funcin comienza con
el {
{ y termina con }

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 21
Visibilidad de las variables
Las funciones usan las variables, las cuales si son
creadas dentro de las mismas se denominan locales,,
mientras que si son creadas fuera de las funciones, se
denominan globales.
Las variables
ariables locales solo existen
e isten dentro de las
funciones donde fueron creadas, y son destruidas, al
terminar la funcin
Las variables locales solo pueden ser vistas y por tanto
usadas, dentro de la funcin donde se crearon.
L variables
Las i bl globales
l b l son vistas
i t por todas
t d las
l
funciones, y por tanto pueden ser usadas por cualquier
funcin.

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 22
Ejemplos de definiciones de
variables
Definiendo una variable:
int contador;
char buffer;
Definiendo variables mltiples:
char buffer1, datos, contador;
Definiendo e inicializando las variables:
unsigned long contador = 0;

Nota: todas las sentencias en los programas


en C tterminan
i siempre
i con un ; ell programador
d
debe tener cuidado en no olvidar esta regla
pues generar
p g un error en el compilador
p

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 23
Sistemas de numeracin
Los datos en los programas pueden
escribirse
ibi en distintos
di ti t formatos:
f t
Decimal: es el formato normal por
default
Binario: se debe anteponer 0b :
0b1011001
Hexadecimal: se antepone 0x:
0x0F1A

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 24
Ejemplo de un Programa que
controla un LED

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 25
Estructuras dentro de
un programa

V3.2 August 10, 2007


Estructuras condicionales
Las estructuras condicionales evalan una condicin
determinada p por el programador.
p g La condicin a evaluar
se coloca entre parntesis.
La sentencia para el condicional comienza con la palabra
if
Si la condicin se cumple, se ejecuta la sentencia
siguiente
g al condicional;; caso contrario,, se ejecuta
j la
que se encuentra luego de la palabra else
Ejemplo:
if(PORTAbits.RA4==1) // testeamos RA4.
PORTBbits.RB0=1; // Si esta en 1
Encendemos el PORT RB0
else
l
PORTBbits.RB1=0; // Si esta en 0
Apagamos el PORT RB0
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 27
Sentencias Condicionales cont.
Si la condicin debe ejecutar mas de
una sentencia
sentencia, estas deben ir entre
llaves:
if (PORTAbits.RA4==1) // testeamos si RA4 = 1.
{
PORTBbits.RB0=1; // Si esta en 1
Encendemos RB0
PORTCbits.RC0=0; // Apagamos RC0
contador++; // incrementamos el contador
}
else
{
PORTBbits.RB0=0; // Sino Apagamos
RB0.
PORTCbits.RC0 = 1; // Encendemos RC1
contador--; // decrementamos el contador
} 202 PRC Slide 28
2006 Microchip Technology Incorporated. All Rights Reserved.
Ciclos Iterativos
Un ciclo iterativo es una secuencia de
i t
instrucciones
i que se repiten
it
sucesivamente hasta que se cumpla
una condicin.
Existen varias formas de crear un
ciclo iterativo:
Ciclo
Ci l FOR
Ciclo While
Ciclo Do-While
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 29
Ciclos FOR
Para crear este ciclo se usa la palabra clave FOR
La condicin a evaluar tiene 3 parmetros,
parmetros los cuales se
colocan entre parntesis y separados por ;
(i=0;i<10;i++): en este caso i es la variables que se
testea, se inicia en 0, y se evala que la misma tenga un
valor <10, finalmente indicamos que i se incremente
cada vez
Ejemplo:

for (i=0 ; i<10 ; i++)


{
PORTB = i; // enviamos al PORTB el valor de i
}

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 30
Ciclos while
Otra forma de un ciclo iterativo es la del while
(mientras) En este caso mientras la condicin
(mientras).
de evaluacin se cumpla, se ejecutaran las
sentencias encerradas entre llaves. La condicin
de evaluacin debe ir entre parntesis.

while (PORTAbits.RA0 == 1) // evaluamos que se cumpla RA0 = 1


{ // abrimos bloque que se ejecutar
contador++; // incrementamos el contador
PORTB = contador; // mostramos el contador
} // cerramos bloque

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 31
Ciclo do-while
El ciclo do-while es similar al while, con la diferencia que
mientras qque en el while,, si la condicin no se cumple,
p , el
bloque de sentencias no se ejecuta; en el do while por lo
menos se ejecutan una vez.
La condicin es checkeada al final del bloque
bloq e

do {
contador ++;
PORTB = contador;
} while (PORTAbits.RA1 = 1);

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 32
Sentencias de control
BREAK

Sentencia BREAK
interrumpe la ejecucin de un bucle while, do-while
o for.
for

Ejemplo: cmo salir de un bucle infinito for ?

For (;;) {
if ( a == 0) {
break;
}
a=PORTA;
a PORTA;
}
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 33
Sentencia de Control
CONTINUE

Sentencia CONTINUE

Se
S utiliza
tili en los
l bucles
b l para pasar a lla siguiente
i i t repeticin.
ti i

For ((;;)) {
if ( PORTAbits.RA0 = 1) {
continue;
}
contador++;
}

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 34
Sentencias de Control
GOTO

Sentencia goto

Transfiere
T fi incondicionalmente
i di i l t ell control
t l a lla sentencia
t i
etiquetada por el identificador.

goto identificador;

identificador:
instrucciones;

No
N es una b
buena prctica
ti utilizarla
tili l !!!

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 35
Operadores

V3.2 August 10, 2007


Operadores de Relacin
Operador Operacin Ejemplo Resultado (FALSE= 0, TRUE 0)

< M
Menor que x < y 1 sii x menor que y, sino
i 0
Menor que o 1 si x menor o igual a y, sino 0
<= x <= y
igual a
> Mayor que x > y 1 si x mayor que y, sino 0
Mayor que o 1 si x mayor o igual a y, sino 0
>= x >= y
i
igual
la
== Igual a x == y 1 si x igual a y, sino 0
!=
! No igual a x !=
! y 1 si x no igual a y, sino 0

En expresiones condicionales,
condicionales cualquier valor no 0 es
es interpretado TRUE. Un valor de cero 0 es siempre FALSE.

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 37
Operadores de relacin
Diferencia entre = y ==

Tenga cuidado de no confundir = y ==.


N son iintercambiables!
No bi bl !

= es el operador asignado
x = 5 asigna el valor 5 a la variable x
== es ell operador
d relacional
l i l 'igual
'i l a''
x == 5 prueba si es el valor de x es
5 if (x == 5)
{
haga si el valor de x es 5
}
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 38
Operadores Lgicos
Operado Operacion Ejemplo Resultado (FALSE = 0, TRUE 0)
r
&& Logica AND x && y 1 Si ambos x 0 y y 0,
sino 0
|| Logica
g OR x || y 0 Si ambos x = 0 e y = 0,
sino 1
! Logica NOT !x 1 if x = 0, sino 0

En expresiones condicionales,
condicionales cualquier valor no zero es
interpretado como TRUE. Un valor 0 es siempre FALSE.

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 39
Operadores Lgicos a nivel BIT
(Bitwise)
Operador Operacin Ejemplo Resultado (para cada bit)

& Bitwise AND x & y 1,


1 sii x e y son 1
0, si x o y son 0
1, si x o y son 1
| Bitwise OR x | y
0 sii x e y 0 son 0
0,
1, si x es distnto de y
^ Bitwise XOR x ^ y 0, si x es igual a y

~ Bitwise NOT ~x 1, si x es 0
(Complemento a uno) 0, si y es 1

La operacin se realiza Bit a Bit entre los 2


operandos que estan afectados por la
sentencia
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 40
Operadores
Desplazamiento
Operador Operacin Ejemplo Resultado

<< D
Desplaza
l a lla IIzq x << y Shift x por y bits
bit a lla IIzq
>> Desplaza a la Derecha x >> y Shift x por y bits a la Derecha

Ejemplo de desplazamiento a la Izquierda:


x = 5; // x = 0b00000101 = 5
y = x << 2; // y = 0b00010100 = 20

Cada
C d vez que se ejecuta
j t la
l sentencia
t i de
d desplazamiento,
d l i t
el contenido de la variable se desplaza hacia la derecha
o la izquierda N cantidad de bits, segun se exprese
Para desplazar, la variable es rellenada con ceros (no es
rotacin, es desplazamiento)
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 41
Operadores
El operador condicional
El operador condicional puede ser usado
para condicionar el asignarle un valor a
una variable
Ejemplo 1 (el mas usado comunmente)

x = (condicion) ? a : b;

Ejemplo 2 (el menos usado)

(condicion) ? (x = a):(x = b);

x = a si la condicion es true
En ambos casos: x = b si la condicin es false
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 42
Arrays

V3.2 August 10, 2007


Arrays
Definicin
Arrays son las variables que pueden almacenar muchos artculos del
tipo.. Los items individuales son conocidos como elementos
mismo tipo elementos,, son
almacenados secuencialmente y son identificados unicamente por el
indice del ARRAY(llamado aveces un subscript
subscript)).

Arrays:
Pueden contener cualquier nmero de
elementos
L elementos
Los l t deben
d b ser del
d l mismo
i tipo
ti
El ndice base es cero
El tamao del Array (numero de elementos)
debe estar en la declaracin
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 44
Arrays
Como crear un Array
Los arrays se declaran como las variables:
Sintaxis

tipo nombre
nombrearray [tamao
array[ ];
tamao];

tamao refierre al nmero de elementos


tamao debe ser una constante entera
Ejemplo

int a[10]
a[10];; // Un array que contiene 10 elementos

char s[25]
s[25];; // Un array que contiene 25 caracteres

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 45
Arrays
Como inicializar un array en la declaracin
Los Arrays pueden ser inicializados con una lista en la declaracin :
Sintaxis
tipo nombrearray[tamao
nombrearray[ ] = {item
tamao] {item1,,itemn};

Los items deben ser todos iguales en el


p de array
tipo y
Ejemplo
int a[5] = {10
10,, 20
20,, 30
30,, 40
40,, 50
50};
};

char b[5] = {'a'


'a',, 'b'
'b',, 'c'
'c',, 'd'
'd',, 'e'
'e'};
};

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 46
Arrays
Como usar un array
Arrays son accesibles como las variables, pero con un index:
Sintaxis
[indice
nombrearray[
nombrearray ]
indice]
Indice ppuede ser una variable o una constante
El primer elemento en un array tiene un indice 0
C no proporciona ninguna comprobacin de los lmites

Ejemplo
int i, a[10
10];
]; //un array que contiene 10 elementos

for(i = 0; i < 10
for( 10;; i++) {
a[i] = 0; //Inicializa los elementos del array a 0
}
a[4] = 42
42;; //cargamos el elemento 4
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 47
Arrays
Creando Arrays multidimensionales
Agregue las dimensiones adicionalesen la declaracin delarray :
Sintaxis
tipo nombrearray[tamao1]...[
nombrearray[ ]...[tamao
tamaon];
Los Arrays
y p
pueden tener cualquier
q nmero de
dimensiones
Tres dimensiones tienden a ser las ms usadas en
prctica comn
Ejemplo

int a[10
10][
][10
10];
]; //10x10 array para 100 enteros

float b[10
10][
][10
10][
][10
10];
];//10x10x10
//10x10x10 array para 100 decimales

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 48
Arrays
Creando Arrays multidimensionales
Arrays pueden ser inicializados con un listado dentro de un a listado:
Sintaxis

tipo nombrearray[tamao0][
nombrearray[ ][tamao
tamaon] =
{{item
{{ ,,item
item, },
item},

{item
item,,,item }};
item}};

Ejemplo

char a[3][
][33] = {{'X'
{{'X',, 'O',
'O', 'X'
'X'},
},
{'O'
'O',, 'O'
'O',, 'X'
'X'},
},
{'X'
'X',, 'X'
'X',, 'O'}};
'O'}};

int b[2][
][22][
][22] = {{{0
{{{0, 1},{
},{22, 3}},{{
}},{{44, 5},{
},{66, 7}}};

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 49
Arrays
Visualizando Arrays de 2 dimensiones
int a[3][3] = {{0, 1, 2},
{3, 4, 5},
fila, Columna {6, 7, 8}};
a[y][x] Columna

a[0][0] = 0; 0 1 2 x
ffila 0

a[0][1] = 1;
a[0][2]
[0][2] = 2
2;
0 0 1 2
0,0 0,1 0,2
a[1][0] = 3;
fila 1

a[1][1] = 4; Fila
F 1 3 4 5
a[1][2] = 5; 1,0 1,1 1,2

a[2][0] = 6;
2 6 7 8
a2

a[2][1] = 7;
fila

2,0 2,1 2,2


a[2][2] = 8; y
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 50
Arrays
Visualizando Arrays de 3 dimensiones

int a[2][2][2] = {{{0, 1},{2, 3}},


Plano, Fila, Columna
{{4 5},{6,
{{4, 5} {6 7}}};
1 z
a[z][y][x]
a[0][0][0] = 0; 0
Pllane 0

a[0][0][1] = 1; 4
a[0][1][0] = 2; 0 5
a[0][1][1] = 3; 0
fila
a[1][0][0] = 4; 1 x
7
1
Plane 1

a[1][0][1] = 5;
a[1][1][0] = 6;
2
[ ][ ][ ]
a[1][1][1] = 7;
;
y
0
3
1
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 51
Arrays
Ejemplo de procesamiento de un array

/**************************************************
* Imprime
p 0 a 90 en incrementos de 10
**************************************************/
int main
main((void
void))
{
int i = 0;
int a[10
10] ] = {0
{0,1,2,3,4,5,6,7,8,9};
while (i < 10
10))
{
a[i] *= 1010;
;
printf(
printf ("%d
"%d\\n"
n",
, a[
a[i]);
i++;
}
while (1);
}

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 52
Strings
Array de caracteres y Strings
Definicin
Strings son array de char en los cuales el ltimo caracter
es un caracter nulo '\0' con un valor ASCII de 0. C no
tiene tipos de datos string naticos s , los strings deben ser
tratados como arrays de caracteres
caracteres..

Strings:
Estan encerrados entre comillas "string"
Terminan con un caracter nulo '\0'
Deben ser tratados como una array de caracteres
(tratados elemento por elemento)
Pueden ser inicializados por un string literal

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 53
Strings
Creando un Array o String de Caracteres
Los Strings se crean como en cualquier otro array de char:
sintaxis
char nombrearray[longitud
nombrearray[ ];
longitud];

longitud debe
d b ser un caractert mas que lal longitud
l it d
mxima del string a almacenarpara que tambien se
pueda guardar
p g el caracter el caracter nulo '\0'
Un array char con n elementos contiene un string
igual a n-1 char
ejemplo
char str1
str1[[10
10];
]; //Contiene 9 caractere mas '\
'\0'

char str2
str2[[6]; //contiene 6 caracteres mas '\
'\0'

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 54
Strings
Como inicializar un String al Declararlo
Array de caracteres pueden ser inicializados con strings literales:
Sintaxis
char nombrearray[] = "Microchip"
nombrearray[] "Microchip";;
Arrayy no requiere
q tamao
El tamao es automaticamente determinado por la
longitud de string
caracter NULL '\0' es automaticamente adicionado
sintaxis
char str1
str1[]
[] = "Microchip"
"Microchip";; //10 caracteres "Microchip\
"Microchip\0"

char str2
str2[[5] = "Hola"
"Hola";; //5 caracteres "Hola\
"Hola\0"

//Declaracin alternati
alternativaa de string requiere
req iere tamao
char str3
str3[[4] = {'P'
'P',, 'I'
'I',, 'C'
'C',, '\0'
0'};
};
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 55
Strings
Como inicializar un string en Cdigo
En cdigo, puede inicializarse un string elemento por elemento:
Sintaxis
nombrearray[0] = char1;
nombrearray[
[1] = char2;
nombrearray[
nombrearray

[n] = '\0'
nombrearray[
nombrearray 0';;

Caracter Null '\0'


\ debe ser adicionado manualmente
Ejemplo
str[0]
str[ = H;
H;
str[
str [1] = o;
o ;
str[
str [2] = l;
l ;
str[
str [3] = a;
a ;
str[
str [5] = \0
0; ;

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 56
Strings
Comparando Strings
Los Strings no pueden ser comparados por
operadores relacionales (==
(==, !=,
!= etc.)
etc )
Debe usar librera C Standar en funciones para
manipulacin de strings
strcmp() retorna 0 si los string son iguales

Ejemplo

char str
str[]
[] = "Hola"
"Hola";;

strcmp(( str
if (!strcmp str,, "Hola"
"Hola"))
))
printf(
printf
p (El string g es \"%s
"%s\
\".
".\
\n"
n",
, str
str);
);

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 57
Funciones

V3.2 August 10, 2007


Funciones
Estructura un programa

Print()
{
main() ...
{ return;
} Nop()
... {
Print(); ...
... Delay() return;
Delay(); { }
... ...
} Nop();
return;
}

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 59
Funciones
Que es una funcin?
Definition

Funciones son segmentos


g de programa
p g autnomos
diseados para realizar una tarea especfica, bien definida
definida..

Todos los programas en C tienen una o mas


funciones
La funcin main() es requerida
Las funciones pueden tomar valores desde el
cdigo que las llama
Las funciones retornan un valor simple
Las funciones ayudan a organizar un programa
en segmentos logicamente manejables
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 60
Funciones
Recuerda las clases de Algebra?
Las Funciones en C son conceptualmente son
similares a las funciones matemticas
matemticas

Definicin de la funcin

Nombre de la
funcin
f(xx) = x2 + 4x
f( 4x +3
Parmetro de la funcin

Si usted pasa un valor 7 a la funcin: f(7)


f(7), el
valor 7 obtenido "copiado" dentro de x y usado
donde quiera que x exisista con la funcin
definida: f(7) = 72 + 4*7 + 3 = 80
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 61
Funciones
Definiciones
Sintaxis

Tipo
p de dato retornado
expresion Parametro listado
Nombre (opcional)

tipo identifier
identifier((tipo1 arg1,,tipon argn)
{
d l
declaracn
dde sentencias
t i
Cuerpo
return expresion
expresion;;
}

Cabecera Retorna Evaluacin (opcional)

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 62
Funciones
Definiciones de funciones: Retorna tipo de datos
sintaxis

tipo identificador
identificador((tipo1 arg1,,tipon argn)
{
declaraciones
sentencias
t i
return expresion
expresion;;
}

El tipo
p de clarado de la funcin
debe coincidir con el tipo de datos
que expresion devuelva
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 63
Funciones
Definicin de Funciones: Tipo de datos retornado

Una funcin puede tener declaraciones


para retornos mltiples
mltiples, pero solamente
una ser ejecutada y deben todas ser del
mismo tipo
ejemplo

int test(
test(int a, int b)
{
if (a > b)
return 1;
else
return 0;
}

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 64
Funciones
Definicin de Funciones: Tipo de datos retornados
El tipo de funcin es void si:
La sentencia return no tiene expresion
La sentencia return no esta presente en
todas
Esto a veces llama a una funcin de
procedimiento puesto que no se devuelve nada
Ejemplo

void identificador
identificador((tipo1 arg1,,tipon argn)
{
declaraciones
sentencias return;
return ;p
puede ser omitida si no
return;
return ; se retorna nada
}
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 65
Funciones
Definicin de Funciones: Parmetros
Los parmetros de una funcin se declaran
apenas como variables ordinarias
ordinarias, pero una
coma delimita la lista dentro del parntesis
los nmbres de los parmetros solo son vlidos
dentro de la funcin (locales a la funcion)

Sintaxis
tipo identificador
identificador((tipo1 arg1,,tipon argn)
{
declaraciones Parmetros de funciones
sentencias
return expresion
expresion;;
}
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 66
Funciones
Definicin de funciones: Parmetros
Lista de parmetros puede mezclar datos
int Txdata(int x, x float y,y char z)
Los parmetros del mismo tipo se deben
declarar por separado - es decir:
int maximum(int x, y) no puede trabajar
int maximum(int x, x int y) es correcta

Ejemplo
int maximum
maximum((int x, int y)
{
return ((
((xx >
>= y) ? x : y);
}

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 67
Funciones
Definicin de funciones: Parmetros
Si no se requieren parmetros , usar
l palabra
la l b clave
l id en lugar
void l de
d la
l
lista de parmetro al definir la funcin
Ejemplo
identificador(void
tipo identificador( void)
)
{
declaraciones
sentencias
return expresion
expresion;;
}

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 68
Funciones
Como llamar o invocar una Funcion
Sintaxis de la llamada a funcin

Sin parmetros y no retorna valor


Delay();
Delay ();
Sin parmetros pero con retorno de valor
x = Delay
Delay();
();
Con parmetros pero sin retorno de valor
Delay10KTCYx(
Delay10KTCYx (a);
Con parmetros y retorna un valor
x = itoa
itoa((a, b);

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 69
Funciones
Funcion Prototipos
Justificada como variables, una funcin debe
ser declarada antes de que pueda ser utilizada
La declaracin debe ocurrir antes de main () o de
otras funciones que la utilicen
Declaraciones pueden tener dos formas:
La definicin de funcin entera
Justificada como funcion prototype la
definicin de funcin en s mismo se puede
entonces poner dondequiera en el programa

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 70
Funciones
Funciones Prototipos
Funcin prototipo puede tener dos formatos
diferentes:
Una exacta copia de la funcin HEADER:
Ejemplo Funcion Prototipo 1

int maximum
maximum((int x, int y);

Como la funcin main, pero sin los nombres


de parmetro - solamente los tipos necesitan
estar
t presentes
t para cadad parmetro:
t
Ejemplo Funcion Prototipo 2
int maximum
maximum((int
int,
, int
int);
);

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 71
Funciones
Declaracion y Uso: Ejemplo 1
Ejemplo 1

int a = 5, b = 10
10,
, c;

int maximo
maximo((int x, int y) Funcion es
{ d l d y
declarada
return ((
((xx >= y) ? x : y); definida antes
} de ser usada en
el main()
int main
main((void
void))
{
c = maximo
maximo((a, b);
printf(
printf (el maximo es: %d\
%d\n"
n",
, c)
}

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 72
Funciones
Declaracion y Uso: Ejemplo 2
Ejemplo 2

int a = 5, b = 10
10,
, c;
F
Funcion
i es
int maximo
maximo((int x, int y); declarada con
prototipo
p p antes
int main
main((void
void)) de ser usada en
{ el main()
c = maximo
maximo((a, b);
printf(
printf (el maximo es %d\
%d\n"
n",
, c)
}
F
Funcion
i es
int maximo
maximo((int x, int y) definida despues
{
de ser usada en el
return ((
((xx >= y) ? x : y);
}
main()

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 73
Funciones
Pasaje de parmetros por Valor

Parametros pasados a una funcin son pasados


valor
l por valor
l
Valores pasados a una funcin son copiados
dentro de los parmetros de las variables
locales
La variable original que es pasada a la funcin
o puede ser
no se modificada
od cada por
po la
a funcinpuesto
u c puesto
que solamente una copia de su valor fue pasada

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 74
Funciones
Pasaje de parmetros por Valor
Ejemplo
int a, b, c;

int contador
contador((int x, int y)
{
x = x + (++
(++yy);
return x;
El valor de a es copiado en x.
}
El valor
l de d b es copiado
i d en y.
int main(
main (void
void)) La funcin no cambia el valor
{ de a b.
a = 5;
b = 10
10;
;
c = contador
contador((a, b);
}
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 75
Funciones y Alcance
Variables declaradas dentro de la funcin
Las variables declararon dentro de un bloque de la
funcin no son accesibles fuera de la funcin

Ejemplo
int x;
int acumula
acumula((int n)
{
int a;
return (a += n)n);
;
}
int
t main
main(
a (void
void)
o d)
d)
{
x = acumula
acumula(
(5); Esto puede generar un error. a no
x = a; puede ser accedida fuera de la funcin
} donde ha sido declarada.
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 76
Funcione y Alcances
Variable Global versus Local
Ejemplo
int x = 5; x puede ser vista por todos

int suma
suma((int y)
{
int z = 1; (suma) parametro local es y
(suma) variable local es z
return (x + y + z);
}

int main
main((void
void))
{ (main) variable local es a
int a = 2;
x = suma
suma((a);
a = suma
suma((x);
}
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 77
Funciones y Alcance
Parameters
Superposicin" de nombres de variables:
n Declarada
D l d como Global
Gl b l y local
l l n Declarada
D l d solo
l como global
l b l

int n; int n;

int acumula(
acumula(int n) int acumula(
acumula(int x)
{ {

y += n; y += n;

} }

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 78
Funciones y Alcance
Parametros
Ejemplo
Diferentes
int n; f
funciones
i pueden
d
int acumula(
acumula(int n) usar el mismo
{ nombre
b del
d l
y += n;
} parmetro

int prod(
prod(int n)
{
z *= n;
}

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 79
printf()
Funcin de la Librera Standard
Usada para escribir texto en la salida standard"
Muchas en los microcontroladores PIC18 es la UART
Esto nos permite depurar un programa ya sea usando el
programa hyperteminal de Windows o en la USART
virtual del MPLABSIM

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 80
printf()
Funcin de la Librera Standard
Sintaxis

printf(ControlString
printf(ControlString,, arg1 ,argn
arg1, );
argn);
argn
Imprime todo palabra por palabra dentro del string
excepto %d
%d'ss los cuales son reemplazados por los
valores de los argumentos del listado
Ejemplo

int a = 5, b = 10
10;
;
printf(
printf("a = %d
%d\
\nb = %d
%d\
\n"
n",
, a, b);
Result:
NOTA: el 'd' en %d es la conversion
a=5 del caracter. (ver la siguiente
b = 10 lamina para mas detalles)

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 81
printf()
Conversion Caracteres para Control de String
Conversion
de caracter Significado
%c C
Caracter
t simple
i l
%s String (todo los caracteres hasta '\'\0')
%d Entero sin signo
%o Entero octal sin signo
%u Entero decimal sin signo
%x minuscula(1a5e))
Entero decimal sin signo con digitos minuscula(1a5e
%X como x, pero con dgitos mayusula (e.g. 1A5E
1A5E))
%f Valor decimal con signo(floating point)
%e Valor decimal con exponente(e.g. 1.26e
1.26e--5 )
%E como e, pero usando E para el exponente (e.g. 1.26E
1.26E--5 )
%g como e o f, pero dependiendo del tamao y precision del valor
%G como g, pero usando E para el exponente
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 82
printf()
El valor mostrado es interpretado enteramente
por el formato del string:
printf("ASCII = %d", 'a');
permite sacar : ASCII = 97
p
Un string mas problemtico :
printf("Value = %d", 6.02e23);
permite
it sacar: Valor = 26366
Resultados incorrectos pueden ser mostrados si
ell tipo
ti ded formato
f t no corresponde
d all tipo
ti ded
formato verdadero del argumento

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 83
printf()
Useful Format String Examples for Debugging
Imprimir valor hexadecimal 16-bit con un prefijo "0x" y
rellenar con ceros si es necesario p
para completar
p 4
dgtos hexa :

printf(
printf(direccion
direccion de x = %#06x
%#06x\\n
n",
, x_ptr);
x ptr);

# Especifica
E ifi que un 0x0 o 0X debera
d b precederd un valor
l hexadecimal
h d i l
(tiene otro significado para diferentes conversiones de caracteres)

06 Especifica que 6 caracteres deben salir (incluido el prefijo 0x )), los


ceros permiten rellenar a la izquierda si es necesario

x Especifica que el valor de salida debe ser expresado como un


entero hexadecimal

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 84
printf()
Useful Format String Examples for Debugging

Como el anterior, excepto fuerza las letras


hex mayusculas mientras deja 'x' en '0x'
minusculas:
printf(Direccin de x = 0x%04X
0x%04X\\n", x_ptr);

04 E
Especifica
ifi que 4 caracteres
t deben
d b ser sacados d (no ( incluyendo
i l d 0x
0
ya que se incluyo explicitamente en el string), los ceros seran
completados en la izquierda en caso de necesidad

X Especifica que el valor debera ser expresado como un entero


hexadecimal con A-F maysculas

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 85
Directivas elementales

V3.2 August 10, 2007


Directivas
Las directivas son ordenes que le damos
al compilador,
compilador no son instrucciones de
lenguaje C18.
E i t varias
Existen i directivas
di ti para ell
compilador, sin embargo las mas usadas
son 3
#include: nos permite incluir un archivo
#define: permite redefinir una etiqueta
#pragma: se usa para definiciones de los
fusibles de configuracin y las interrupciones
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 87
Directiva #include
Tres formas usan esta directiva #include:
Syntax

#include <archivo.h>
E este
En t caso ell compilador
il d busca
b ell archivo
hi en ell directorio
di t i actual
t l
y en el resto de los directorios

P ejemplo:
Por j l C:\
C:
C \Program
P Files
Files\
Fil \Microchip
Mi
Microchip\
hi \

#include archivo.h
busca solo en el directorio actual

#include c:
c:\\Miproyecto
Miproyecto\
\archivo.h
Usa un path especfico para buscar un archivo include

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 88
Directiva #include
archivo HEADER main
main.h
h y achivo FUENTE main
main.c
c

main.h main.c

unsigned int a; #include "main.h"


unsigned int b;
unsigned int c; int main(void
main(void))
{
a = 5;
El contenido del archivo
b = 2;
main.h son efectivamente c = a+b;
pasados dentro del }
comienzo del main.c en las
lineas de directivas
#include

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 89
Libreras de C18

V3.2 August 10, 2007


Las libreras de Microchip
Microchip ha desarrollado una serie de libreras
mediante las cuales es posible controlar todos
los perifricos del microcontrolador, perifricos
externos y hacer conversiones de datos
Las libreras viene dentro del MCC18.
Microchip
c oc p docu
documenta
e ta sus libreras
b e as
profusamente en su manual :
MPLAB C18 C COMPILER LIBRARIES
(documento :DS51297F)

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 91
Las libreras de Microchip
Las libreras se encuentran separadas
por:
Libreras de perifricos de hardware
Libreras de perifricos por software
Libreras Generales por software
Libreras Matemticas

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 92
Libreras para el control de
Perifricos por Hardware
Estas libreras permiten configurar y
controlar los perifricos que incorporan
los MCU PIC18:
Funciones I/O
Conversor A/D
Timers
Modulo Captura
PWM
I2C
SPI
USART
MicroWire

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 93
Libreras para el control de
Perifricos por Software
Estas libreras permiten configurar y
controlar los siguiente perifricos
LCDs Inteligentes
Conexin en 4 u 8 bits
CAN 2510
I2C
SPI
USART

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 94
Libreras Generales de software
Estas libreras permiten en tratamiento de
caracteres estas se clasifican en
caracteres,
Funciones para clasificacin de caracteres
Funciones para la conversin de datos
Funciones para el manejo de Strings y memoria
Funciones de Delays
Funciones de Reset
Funciones para salida de caracteres

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 95
Funciones Matemticas
Estas libreras nos permiten procesar
di
diversas funciones
f i matemticas
t ti
como ser:
Funciones trigonomtricas
Funciones exponenciales
Funciones logartmicas

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 96
Librera para el control de un
LCD
El MPLAB-C18 incorpora una serie de libreras para el
control de pperifricos por
p software. Una de ellas es la
que controla un LCD inteligente.
BusyXLCD : esta ocupado el controlador del LCD ?
OpenXLCD : Configura las lineas I/O usedas para controlar
el LCD e inicializarlo.
putcXLCD : Escribe un byte al LCD
LCD.
putsXLCD : Escribe un string al LCD.
putrsXLCD : Escribe un string
p g desde memoria de p
programa
g
del LCD.
ReadAddrXLCD: Lee la direccin de un byte desde el LCD
ReadDataXLCD: Lee un byte desde el LCD.

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 97
Librera para el control de un
LCD
SetCGRamAddr : Setea la direccin del generador de
caracteres del LCD.

SetDDRamAddr : Setea la direccin de datos del LCD.

WriteCmdXLCD : Escribe un comando al LCD .

WriteDataXLCD : Escribe un byte al LCD.

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 98
Ejemplo de aplicacin del uso de
las librerias LCD
Para usar la librera XLCD el usuario debe editar
el archivo xlcd.h
xlcd h para adaptar las conexiones del
hardware de su aplicacin por ejemplo:

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 99
Programa LCD

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 100
Programa LCD cont

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 101
Programa LCD cont.

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 102
C18 ADC Funciones de Librera
#include <adc.h>
char BusyADC (void);
Checquea si ADC esta esta procesando una conversin.
Retorna 1 si esta ocupado.
void CloseADC (void);
Desabilita el ADC y ADC interrucin
void ConvertADC (void);
Inicia la conversin ADC
void OpenADC
p (unsigned
g char config,
g
unsigned char config2);
Usado para configurar el ADC
Algunos PIC18 Tiene un 3rd argumento portconfig
Valores de config y config2 puede variar por dispositivo
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 103
C18 ADC Funciones de Librera
int ReadADC (void);
Lea el resultado del conversor ADC
Retorna un valor 16-bit con signo
Resultado puede estar justificado a la derecha o
a la izquierda determinado por la configuracin
void SetChanADC (unsigned char
channel);
Selecciona el pin usado para entrada del ADC
El valor del puede ser ADC_CH0
C C hasta
ADC_CH15)

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 104
Ejemplo de uso de las Librerias
ADC h
ADC.h

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 105
Ejemplo de uso de las Librerias
ADC h cont.
ADC.h cont

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 106
Librerias para el Manejo de los
Timers (Timers h)
(Timers.h)
Estas librerias nos permiten manejar el Timer0,
Timer1 Timer2 , Timer3 y Timer4
Timer1, Timer4.
Esta formada por las siguientes funciones:
OpenTimerX: permite configurar el Timer
CloseTimerX: apaga el Timer
WriteTimerX: nos permite escribir en el Timer
ReadTimerX: nos permite leer el Timer
N t lla X d
Nota: debe
b ser reemplazada
l d por ell Nro
N del
d l
timer que estemos trabajando

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 107
Librerias para el Manejo de los
Timers (Timers h)
(Timers.h)
OpenTimer : nos permite configurar el
f
funcionamiento
i i t del
d l Timer.
Ti
Segn
g el Timer que
q seleccionemos
sera el paso de parmetros:
Ejemplo:
OpenTimer0( TIMER_INT_OFF &T0_8BIT & T0_SOURCE_INT & T0_PS_1_32 );
OpenTimer1( TIMER_INT_ON & T1_8BIT_RW & T1_SOURCE_EXT & T1_PS_1_1 &
T1 OSC1EN OFF & T1
T1_OSC1EN_OFF T1_SYNC_EXT_OFF
SYNC EXT OFF ));

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 108
Librerias para el Manejo de los
Timers (Timers h)
(Timers.h)
ReadTimer: nos permite leer el valor de cuenta del
Timer.
Timer
Ejemplo:
timer0 = (unsigned char) ReadTimer0();
WriteTimer: nos permite escribir un valor dentro del
Timer
Ejemplo:
WriteTimer0( 10000 );
Cl
CloseTimer:
Ti d
desabilita
bili ell timer
i y desactiva
d i lal
interrupcin del mismo
Ejemplo:
CloseTimer1();
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 109
Ejemplo de uso de la Librera
Timers h
Timers.h

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 110
Libreras para el manejo de la
USART
La librerias para el manejo de la USART nos permiten
controlar la configuracin, transmisin y recepcin de
datos:
BusyUSART: nos permite saber si ya se transmiti un dato
CloseUSART: desactivamos la USART
DataRdyUSART: nos permite saber si hay un dato disponible en
el buffer de lectura de la USART
getcUSART: lee un byte desde la USART
getsUSART: lee un STRING desde la USART
OpenUSART: nos permite configurar la USART
putcUSART: escribimos un byte a la USART
putsUSART: escribimos un string desde la RAM a la USART
putrsUSART:
t USART escribimos
ibi un string
t i desde
d d la
l memoria
i de
d
programa a la USART
ReadUSART: leemos un byte desde la USART
WriteUSART:escribimos un byte en la USART
baudUSART: seteamos el BAUD RATE en la USART mejorada

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 111
Programa ejemplo del uso de la
librera de la USART cont.
cont

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 112
Programa ejemplo del uso de la
librera de la USART cont.
cont

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 113
Laboratorios

V3.2 August 10, 2007


Donde conseguir ayuda
Usted puede consultar:
www.microchip.com

2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 115
Fin
Gracias a todos!!!

V3.2 August 10, 2007

S-ar putea să vă placă și