Está en la página 1de 9

INSTITUTO TECNOLGICO DE AGUASCALIENTES

Carrera
Electrnica

Materia
Microcontroladores

No Prctica
Prctica # 1
Definicin de pines en el Pic C

Nombre del profesor


M.C. Hctor Ulises Rodrguez Marmolejo

Nombre de los alumnos


Jonny Garca (13150048)
PRCTICA DE LABORATORIO

JONNY GARCA

Aguascalientes, Aguascalientes a 22/09/2015

Objetivo
Crear un programa en el que se coloquen nombres a cada uno de los pines
o en su defecto se coloquen nombres a los puertos para realizar la programacin
de manera que el cdigo se vuelva ms simple de procesar, utilizando el
encabezado (#define) en el Pic 18F4550.

Marco Terico
Definicin de funcin
El formato de funcin es como sigue:
[Clasifica] ID Vista opcional
[Tipo especfico] ID Cero o ms comas separadas (Ver tipos de datos).
[stmt] Cero o ms puntos y comas separados

La clasificacin para una funcin es como sigue:

Void
Type-specifier
#separate
#inline
#int_..

PRCTICA DE LABORATORIO

JONNY GARCA

Cuando uno de los anteriores es usado y la funcin es un prototipo (delante de la


funcin declarada antes de que esta sea definida), debes incluir la clasificacin
ambas: el prototipo y la funcin definida.
Una clasificacin (no-estandar) tiene que ser aadida al compilador para ayudar
en el problema creado, por el hecho de que el identificador no puede crear una
cadena constante. Una funcin que tiene un parmetro CHAR puede aceptar una
cadena constante cuando esta es llamada. El generador puede generar un laxzo
que puede llamar a la funcin una vez por cada carcter en la cadena.

Ejemplo:
void lcd_putc(char c ) {
...
}
lcd_putc ("Hi There.");

#define
Sintaxis

#define id text
or
# define id(x,y) text

Elementos Id es un preprocesador identificador, el texto es cualquier texto, x,y


es una lista del procesador identificador local, y dentro de esta forma
puede haber uno o ms identificadores separados por comandos.

PRCTICA DE LABORATORIO

JONNY GARCA

Propsito

Se utiliza simplemente para remplazar el Identificador (ID) con


cadena.
En la segunda forma (a C macro). Los identificadores locales son
igualados son los identificadores similares en el texto y reemplazados
con texto pasado a la macro donde fue usado.
Si el texto contiene una cadena de la forma #idx entonces el
resultado encima evaluado puede ser el parmetro id concatenado
con la cadena x.
Si el texto contiene una cadena con la forma #idx#idy el parmetro
idx es concatenado con el parmetro idy formando un nuevo
identificador.
Dos operadores especiales son respaldados dentro del texto
definido:
#x es el encadenamiento de los operadores originados en x.
X#y es la concatenacin de los operadores en xy.
La sintaxis del varadic macro es respaldado donde el ltimo
parmetro es especificado y el identificador es usado.
Ejemplo:
_va_args.
En este caso todos los argumentos son combinados con los guiones.

Ejemplo:
#define BITS 8
a=a+BITS; //same as
PRCTICA DE LABORATORIO

a=a+8;
JONNY GARCA

#define hi(x)
(x<<4)
a=hi(a);
//same as a=(a<<4);
#define isequal(a,b)
(primary_##a[b]==backup_##a[b])
// usage iseaqual(names,5) is the same as
// (primary_names[5]==backup_names[5])
#define str(s) #s
#define part(device) #include str(device##.h)
// usage part(16F887) is the same as
// #include "16F887.h"
#define DBG(...)

fprintf(debug,__VA_ARGS__)

Material utilizado

Tablilla de experimentacin (Protoboard)


3 resistencias de 220
2 resistencias de 2.2K
Pic 18F4550
1 Crystal
3 LEDs
1 boton
Cables para protoboard
Programador Master Prog
Software (Proteus y Pic C)

Desarrollo
PRCTICA DE LABORATORIO

JONNY GARCA

1) Se realiz el programa correspondiente de encendido y apagado de LEDs


definiendo funciones en el programa Pic C.
#define
#define
#define
#define

led_verde
led_amarillo
led_rojo
push_button

pin_b2
pin_b3
pin_b4
pin_a4

light_one_led(int led)
{
output_high(led_verde);
output_high(led_amarillo);
output_high(led_rojo);
switch(led)
{
case 0: output_low(led_verde);
break;
case 1: output_low(led_amarillo); break;
case 2: output_low(led_rojo);
break;
}
}
wait_for_one_press()
{
while(input(push_button));

//se cambia el signo ! para cambiar la


configuracion.

while(!input(push_button));
}
void main()
{
while(true)
{
light_one_led(0);
PRCTICA DE LABORATORIO

JONNY GARCA

wait_for_one_press();
light_one_led(1);
wait_for_one_press();
light_one_led(2);
wait_for_one_press();
}
}

2) Se realiz la simulacin en el software Proteus con su respectivos


componentes a utilizar.

R2
1k

U1

X1
1

2
CRYSTAL

D1

D2

2
3
4
5
6
7
14
13
33
34
35
36
37
38
39
40

RA0/AN0
RC0/T1OSO/T1CKI
RA1/AN1
RC1/T1OSI/CCP2/UOE
RA2/AN2/VREF-/CVREF
RC2/CCP1/P1A
RA3/AN3/VREF+
RC4/D-/VM
RA4/T0CKI/C1OUT/RCV
RC5/D+/VP
RA5/AN4/SS/LVDIN/C2OUT
RC6/TX/CK
RA6/OSC2/CLKO
RC7/RX/DT/SDO
OSC1/CLKI
RB0/AN12/INT0/FLT0/SDI/SDA
RD0/SPP0
RB1/AN10/INT1/SCK/SCL
RD1/SPP1
RB2/AN8/INT2/VMO
RD2/SPP2
RB3/AN9/CCP2/VPO
RD3/SPP3
RB4/AN11/KBI0/CSSPP
RD4/SPP4
RB5/KBI1/PGM
RD5/SPP5/P1B
RB6/KBI2/PGC
RD6/SPP6/P1C
RB7/KBI3/PGD
RD7/SPP7/P1D

D3

LED-YELLOW
LED-YELLOW
LED-YELLOW
18

R3

R4

220

220

220

220

VUSB
PIC18F4550

RE0/AN5/CK1SPP
RE1/AN6/CK2SPP
RE2/AN7/OESPP
RE3/MCLR/VPP

15
16
17
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
1

R1
1K

3) A continuacin se prosigui al desarrollo de la prctica dando como


resultado el siguiente circuito.

PRCTICA DE LABORATORIO

JONNY GARCA

Observaciones
La funcin #define te facilita la programacin.

Conclusiones
La funcin #define es de gran ayuda para realizar una tarea especfica y
despus llamarla en cualquier momento para facilitar la programacin

PRCTICA DE LABORATORIO

JONNY GARCA

Bibliografa
CCS C Compiler Manual, CCS Manual , # define pag. 86, Funcition definition
pag 43, Custom Computer Service, Inc. 2015

PRCTICA DE LABORATORIO

JONNY GARCA

También podría gustarte