You are on page 1of 92

Programacin en lenguaje C II

ARG013 - DVD
Programacin en lenguaje C II

Introduccin a la Programacin y uso


Clases Interactivas con audio y animaciones.

Clas es Inter activ as con audi o y MPLAB C-18 anim acio i nes.
TM

mc mc electronics

Programa certificado por Microchip Technology Inc.


V3.2 August 10, 2007

Agenda g
MPLAB C18 C Language Extensions
Variables en Memoria de Programa Acceso a los SFR M Mezclando l d C y Assembler A bl Definiendo Bloques Soporte y seteo de Configuracion Soporte de Interrupciones

Lab 1: Encendido de Leds en el PORTB Lab 2: Titileo de un Led en el PORTB C Conversor ADC uso de d librerias lib i Librerias para el control de LCDs El PWM y uso de librerias de control
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 2

MPLAB C18 Compiler p


Solo para PIC18 Basado en el ANSI:1989 standard Standard C functions Librerias para el Run time $495 US Unico Costo Versin Student ($free):
www.microchip.com/c18 Hasta 60 das:
Optimizacin deshabilitada Modo extendido deshabilitado
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 3

C18 Extensines de Lenguaje g j C


Variables en Memoria de Programa Acceso SFR A Assembler bl en Linea Li Mezcla C y Assembler Definicin de secciones Soporta Seteo de Configuracin S Soporta t Interrupt I t t

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 4

Tipos p de Datos en MPLAB C18

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 5

Formato de datos Little Endian


Los datos de ms de un byte de longitud, se almacenan en memoria siguiendo el criterio LITTLE ENDIAN, es decir los bytes menossignificativos ocupan las posiciones de memoria ms bajas bajas. Ejemplo: #pragma idata mi_dato=0x1000 Long valor = 0xAABBCCDD;

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 6

Tipos de Almacenamiento de Datos


MPLAB C18 maneja los modificadores establecidos por la norma ANSI:
1. Auto:
Las variables declaradas fuera de las funciones son globales y las declaradas en las funciones son locales. El mbito local tiene prioridad sobre el global. Si no se inicializan el valor que toman es indefinido. Las globales se comportan como estticas en el bucle C018i.c (*)

2. Extern:
Indica que la variable declarada pertenece a otro mdulo, por lo que no es necesario reservar memoria para ella. Dentro de un mismo fichero fuente sirve para acceder a una variable aunque todava no se haya llegado a su declaracin declaracin. Se auto-inicializan a cero.
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 7

Tipos de Almacenamiento de Datos


3. Register:
Indica que la variable declarada se debe guardar en uno de los registros del procesador. Si no es posible, se comporta como Auto Se utiliza para optimizar el tiempo de ejecucin de algunas funciones.

4. Static:
Variables locales l l a una funcin que retienen su valor en llamadas sucesivas a dicha funcin. Hay que poner static delante de la declaracin. Se inicializan a valor cero. Ahorra nmero de instrucciones para acceder a las variables.

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 8

Tipos de Almacenamiento de Datos


4. 4 Typedef:
Asigna g un nuevo nombre a un tipo p de datos.Y adems aade ...

5. Overlay:
Se aplica sobre variables locales. Las declara estticas pero se inicializan cada vez que se llama a la funcin. Se permite que una misma posicin de memoria pueda ser utilizada por diferentes variables. Podemos ahorrar espacio de memoria. El proceso es controlado por el linker.

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 9

Tipos de Almacenamiento de Datos


1. Const: Contenido de la variable es fijo. ANSI C. 2 Volatile: El contenido 2. t id d de l la variable i bl puede d cambiar bi .ANSI C MPLAB C C-18 aade ... 3. Far: Datos: La variable esta en un banco lejano, se necesitan
instrucciones de cambio de banco y y/o acceso indirecto. Cdigo: Podemos acceder a objetos por encima de los 64K.

4 Near: 4.
Datos:La variable esta en el banco de Acceso. (acceso directo mediante a). Cdigo: El objeto esta en una zona menor de 64K.
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 10

Tipos de Almacenamiento de Datos


5. RAM:
La variable se sita en en la memoria de datos.

6. ROM:
La variable esta en la memoria de programa.

Ejemplos: Ejemplos
Variable en memoria de datos : char data; Variable en cdigo cercano : rom near char data; Variable en cdigo lejano : rom far char data;

Por defecto FAR y RAM


2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 11

Ejemplo de Tipo de Almacenamiento de datos


// Definimos un tipo p nuevo typedef unsigned char BYTE; BYTE var_global = 0x0; // la primera zona de memoria GPR0 ( 0x80 ) // programa principal void main(void) { extern int var_externa; // declarada externa BYTE var_auto = 0x40; // variable local auto (PILA -> 0x500 ) static BYTE var_estatica _ = 0x50; ; // variable local esttica ( 0x80 ) // programa principal . for (;;) { var_auto++ ; // 0x500 ( PILA -> 0x500 ) var estatica++ ; // 0x8x / con NEAR Ox0x var_estatica++ var_global++ ; // 0x8x / con NEAR 0x0x var_externa++ ; // 0x8x / con NEAR 0x0x if ( (var_estatica==0x60) _ ) { break; } } } // Ejemplo de declaracin de una variable extern unsigned int var_externa; var externa; // la primera zona de memoria GPR0 ( 0x80 )

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 12

Sentencias de Control
Repetitivas:
While do-while For

Selectivas:
If If-else Switch S it h

Bifurcacin de control:
Break, continue, goto Return Exit: No vlido en MPLAB MPLAB-C18 C18
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 13

Sentencias de Control WHILE - DO - WHILE

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 14

Sentencias de Control FOR

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 15

Sentencias de Control IF - ELSE

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 16

Sentencia de Control SWITCH

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 17

Sentencias de control BREAK


Sentencia BREAK interrumpe la ejecucin de un bucle while, do do-while while o for. Ejemplo: cmo salir de un bucle infinito for ? For (;;) { if ( a==0) { break; } a=PORTA; }
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 18

Sentencia de Control CONTINUE


Sentencia CONTINUE Se utiliza en los bucles para pasar a la siguiente repeticin. For (;;) { if ( a!=0) ){ continue; } b k break; }

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 19

Sentencias de Control GOTO


Sentencia goto Transfiere incondicionalmente el control a la sentencia etiquetada por el identificador. identificador goto identificador; g identificador: i t instrucciones; i No es una buena prctica utilizarla !!!
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 20

Punteros de Memoria
U Un pu puntero e o es u una a variable a ab e que co contiene e e la a direccin a una zona de memoria donde reside un determinado tipo de dato.

char car; // variable tipo char char *pcar; // puntero a una variable tipo char car = 0xAA; ; pcar = &car; // & me da la direccin de car Los punteros a memoria de datos ocupan 16 bits !
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 21

Punteros de Memoria

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 22

Punteros de Memoria

En la memoria de programa se pueden almacenar variables, y por lo tanto se podrn definir punteros a ellas: rom near unsigned char *pcar; // NEAR -> 16 bits rom far unsigned int *pint; pint; // FAR -> 24 bits Un puntero de acceso a RAM no sirve para acceder a la ROM

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 23

Diferencias con ANSI C


Operaciones matemticas: La norma ANSI establece que las operaciones matemticas tienen que hacerse con precisin entera (INT) o superior. En este caso sera de 16 bits. El C18 permite operaciones entre CHAR con resultado un CHAR. Es decir 8 bits. Cadenas constantes: Podemos almacenarlas en la memoria de programa. Instrucciones especiales para moverlas entre la RAM y la ROM:

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 24

Diferencias con ANSI C


Ejemplos:
char h *strcpy * t (auto ( t char h *s1, * 1 auto t const t char h *s2) * 2) char *strcpypgm2ram (auto char *s1, auto rom const char *s2) rom char *strcpyram2pgm (auto rom char *s1, auto const char*s2) rom char *strcpypgm2pgm (auto rom char *s1, auto const rom char *s2)

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 25

Ejemplo de Cadenas en Memoria ROM y RAM


// Ejemplo de tratamiento de cadenas en RAM y ROM #include <string.h> // almaceno mi cadena en ROM const rom unsigned char micadena[ ]="hola ] hola mundo"; mundo ; // almaceno copia en RAM char strbuffer[21]; void main(void) { strcpy(strbuffer micadena); // incorrecto strcpy(strbuffer,micadena); strcpypgm2ram(strbuffer, micadena); // correcto for (;;); }
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 26

Estructuras annimas dentro de uniones

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 27

LAB 1
Ejercicio 1: Realizar un programa donde se enciendan LEDs conectados al PORTB.

Solucin:
#include <p18cxxx.h> #pragma config WDT = OFF void id main i ( (void) id) { TRISB = 0; /* Apaga los LEDs */ PORTB = 0; /* Enciende los LEDs */ PORTB = 0x5A; while (1) ; }
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 28

LAB 2
Ejerciocio 2: Realizar un programa que que un LED titile a un ritmo visula. El Led esta conectado al PORTB

Solucin: #include <p18cxxx.h> #pragma config WDT = OFF /* Rutina de Delay */ void delay (void) { unsigned g int i; ; for (i = 0; i < 10000 ; i++) ; }
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 29

LAB 2 cont.
/* Funcin Principal desde donde se invoca a Delay */ void main (void) { TRISB = 0; while hil (1) { /* Apaga los LEDs */ PORTB = 0; /* Delay para que los ojos humanos vean el cambio */ delay y (); /* Light the LEDs */ PORTB = 0x5A; /* Delay para que los ojos humanos vean el cambio*/ / cambio / delay (); } }
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 30

Directiva #PRAGMA

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 31

Directiva #PRAGMA

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 32

Directiva #PRAGMA

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 33

Directiva #PRAGMA

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 34

Interrupciones p

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 35

Interrupciones p

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 36

Interrupciones p

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 37

Cdigo para el Tratamiento de Interrupciones

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 38

Tratamiento del Contexto

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 39

Directiva #PRAGMA: ROM DATA

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 40

ASM. Dentro de C

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 41

ASM. Dentro de C

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 42

Llamando Rutinas ASM en C

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 43

Llamando Rutinas ASM en C

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 44

Archivos Asociados al C

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 45

Archivos Asociados al C

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 46

Programacin en lenguaje C II

ARG013 - DVD
Programacin en lenguaje C II

Creando Nuestro Primer e Proyecto oyecto e en MPLAB-C18 mc mc electronics

Programa certificado por Microchip Technology Inc.


V3.2 August 10, 2007

Abrir el MPLAB IDE

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 48

Crear un Nuevo Proyecto y

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 49

Nombre del proyecto p y

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 50

Seleccione la herramienta de compilacion il i


C18, MPASM, o Tercera Parte

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 51

Seleccione MPLAB C18 Toolsuite

Nota: N t mplink.exe, mcc18.exe & mplib.exe estan t localizados en c:\mcc18\bin


2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 52

Seleccionar el MCU requerido q

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 53

Seleccionar el MCU requerido q

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 54

Setear los Bits de Configuracin


Usted configura la base del dispositivo de esta ventana si usted quiere eliminarlos para la depuracin , sin embargo, embargo lo mejor es setear los ajustes en el cdigo fuente usando #pragma _config
para setear la p palabra de configuracin g macro p

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 55

Checkeando los Bits de Configuracin

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 56

Adicionando Archivos Fuentes al Proyecto


Click sobre Source Source Files FilesAdd Files

Source file: c:\rtc\202_PRC\Lab0\template_PIC18.c


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

Adicionando Archivos Header al y Proyecto


Click cobre Header FilesAdd Files

Header file: c:\mcc18\h\p18f4520.h


2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 58

Adicionando Linker Script al Proyecto


Click sobre Linker Linker Scripts ScriptsAdd Files

Linker File: c:\mcc18\lkr\18f4520i.lkr


2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 59

Seteando al Proyecto Build Opciones

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 60

Setear Include & LIB Search Paths

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 61

Habilatando Generacin del Archivo .map map

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 62

Build el Proyecto y

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 63

Successful Build

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 64

Seleccionando el Programador (ICD2)

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 65

Conestando al Programados g
Conectado el p programador g

Conexin Sucedida

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 66

Programando g el Dispositivo p

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 67

Programacin en lenguaje C II

ARG013 - DVD
Programacin en lenguaje C II

ADC
El conversor Analgico Digital de 10-bit

mc mc electronics

Programa certificado por Microchip Technology Inc.


V3.2 August 10, 2007

Channel Select

Conversor ADC de 10-bit Revisin


In ADCON0 Register

CHS3:CHS0
AN12 AN12 AN10 AN8 AN7* AN6* AN5* AN4

13:1 An nalog Mux

AN9

VAIN

10-bit A/D Result Registers

ADC
VREF+ VREF-

ADRESH

ADRESL

VREF+ / AN3 VREFREF / AN2


AN1 AN0

VDD
x0 x1 1x 0x

VSS VREF Select VCFG1:VCFG0 In ADCON1 Register


*AN5-AN7 not available on 28-pin devices
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 69

Conversor ADC de 10-bit Revisin


Paso aso 1: Inicializando c a a do e el ADC: C
Configure pines analogicos, voltaje de referencia, f i y pines i digital/analog di it l/ l I/O Seleccionar el canal de entrada A/D Seleccionar el tiempo de adquisicin S l i l clock l k de d conversin i Seleccionar el Habilitar el modulo ADC ( (con bit ADON ) Nota: El seteo del bit GO/DONE bit no esta incluido en el proceso de inicializacin
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 70

Conversor ADC
Proceso de Conversin C i
Paso 2: Configure la int del ADC (optional)
Clear al bit ADIF Set al bit ADIE Set al bit PEIE Set al bit GIE

Paso 3: Seleccione el tiempo p de tiempo p de adquisicion (TACQ) Solo requerido q si ACQT2:0 = 000 (desabilitado) Pasos 4: Setear bit GO/DONE al comenzar la conversion
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 71

10-bit A/D Converter


Con ersion Process Conversion

Paso aso 5: 5 Espere spe e pa para a la a A/D / conversion to complete


Wait W it f for GO/DONE bit t to b be cleared l d OR Wait for A/D interrupt

Paso 6: Leer el registro de resultado A/D ; clear el flag ADIF Esperar por lo menos 2 TAD para comenzar la siguiente adquisicin
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 72

Conversor ADC
Config racion Configuracion

Calculando Ca cu a do el e Tiempo e po de adquisicin adqu s c TACQ CQ = TAMP + TC + TCOFF CO


TAMP = Tiempo del amplificador = Tamp internal + Tamp external TC = Tiempo Ti de d Carga C = -(CHOLD)(RIC + RSS + RS)ln(1/2047)s TCOFF = Coeficiente de temperatura = (Temp 25C)(0.02s/C) para Temp > 25C = 0 para Temp < 25C
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 73

Conversor ADC
Config racion Configuracion

Calculando Ca cu a do el e tiempo t e po del de Amplificador p cado TAMP = TAMP INT+ TAMP EXT
TAMP INT : Tiempo interno del amplificador. amplificador Chequer datasheet para la parte especfica. Para el PIC18F4520, TAMP INT es 2 s. TAMP EXT: Teimpo del amplificador externo (circuito) . Esto llega a ser importante cuando los componentes externos se utilizan para precondicionar la seal. Puesto que el circuito externo en el PICDEM2 es solo un POTE mecnico, este nmero es :

TAMP = 2 s
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 74

Conversor ADC
Config racion Configuracion

Calculando Ca cu a do e el Tiempo e po de Ca Carga ga


TC = -(C (CHOLD)(RIC + RSS + RS)ln(1/2047)s
CHOLD RIC RSS RS = Capacitor de Hold interno = 25pF = Resistencia de Interconeccin = 1k = Impedancia del muestre = 2k = Impedancia de la fuente = 2.5kMAX

Asumiendo que la impedancia mxima de furnte es de 2.5k, se tiene: TC = 1.05s


2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 75

Conversor ADC
Config racion Configuracion

Calculando el Coeficiente de Temperatura p

TCOFF = (Temp 25 C) C)(0 (0.02 02s/ C)


Temp = Temperatura de operacin Valido p para Temp p > 25C. TCOFF = 0 para Temp < 25C Using the maximum operating temperature of 85C for an Industrial grade part, we have: TCOFF = 1.2s
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 76

Conversor ADC
Config racion Configuracion

Calculando Ca cu a do el e Tiempo e po de Adquisicin dqu s c TACQ CQ = TAMP + TC + TCOFF CO


Para Rs = 2.5k Temp = 85 C TAMP = 2 s

TACQ = 2 + 1 + 1.2 = 4.2 s


2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 77

C18 ADC Funciones de Librera


#include <adc.h> char h BusyADC B ADC (void); ( id)
Checquea si ADC esta esta procesando una conversin. Retorna 1 1 si esta ocupado ocupado.

void CloseADC (void);


Desabilita el ADC y ADC interrucin

void ConvertADC (void);


Inicia la conversin ADC

void OpenADC (unsigned char config, unsigned char config2) 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 78

C18 ADC Funciones de Librera


int ReadADC (void); Lea el resultado del conversor ADC Retorna un valor 16-bit con signo g Resultado puede estar justificado a la derecha o a la izquierda q determinado p por la configuracin g void SetChanADC (unsigned char channel); Selecciona el pin usado para entrada del ADC El valor del puede ser ADC ADC_CH0 CH0 hasta ADC_CH15)

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 79

Ejecicio j 3 : Realizar un programa p g que q lea el valos del conversor y lo almacene en la variable RESULT

LAB 3

#include <p18F452.h> #include <adc.h> #include <stdlib <stdlib.h> h> #include <delays.h> int result; void main( void ) { // configuracin del conversor A/D OpenADC( ADC ADC_FOSC_32 FOSC 32 & ADC_RIGHT_JUST ADC RIGHT JUST & ADC_8ANA_0REF, ADC 8ANA 0REF, ADC_CH0 & ADC_INT_OFF ); Delay10TCYx( y ( 5 ); ConvertADC(); while( BusyADC() ); result = ReadADC(); CloseADC(); }
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 80

// Delay yp para 50TCYuna vez configurado g // Inicia la conversin //Espera que se complete la conversin // Lee el resultado // Desabilita al conversor A/D

Programacin en lenguaje C II

ARG013 - DVD
Programacin en lenguaje C II

Control de LCD con MPLAB-C18

mc mc electronics

Programa certificado por Microchip Technology Inc.


V3.2 August 10, 2007

Librera para el control de un LCD


El MPLAB-C18 incorpora una serie de libreras para el control t l de d perifricos if i por software. ft Una U de d ellas ll es la l que controla un LCD inteligente. B s XLCD : esta ocupado BusyXLCD oc pado el controlador del LCD ? OpenXLCD : Configura las lineas I/O usedas para controlar el LCD e inicializarlo. inicializarlo putcXLCD : Escribe un byte al LCD. putsXLCD : Escribe un string al LCD LCD. putrsXLCD : Escribe un string desde memoria de programa del LCD LCD. ReadAddrXLCD: Lee la direccin de un byte desde el LCD ReadDataXLCD: Lee un byte desde el LCD LCD.
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 82

Librera para el control de un LCD


SetCGRamAddr : Setea la direccin del generador de caracteres t del d l LCD 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 83

LAB 4
Ejercicio 4 : Realizar un programa que reciba datos en la USART y los imprima en el LCD hasta que se reciba el caracter Q el cual finaliza el programa. programa . Cada caracter que se recibe se envia al LCD #include <p18C452.h> #include <xlcd.h> #include <delays.h> <delays h> #include <usart.h> void DelayFor18TCY( void ) { Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); Nop(); }
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 84

LAB 4 cont.
void id D DelayPORXLCD l PORXLCD (void) ( id) { Delay1KTCYx(60);

// // // //

Delay de Ciclos = Ciclos = Ciclos =

15ms (TimeDelay * Fosc) / 4 (15ms * 16MHz) / 4 60,000

return; } void DelayXLCD (void) { Delay1KTCYx(20);

// // // //

Delay de Ciclos = Ciclos = Ciclos =

5ms (TimeDelay * Fosc) / 4 ( (5ms * 16MHz) ) / 4 20,000

return; }

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 85

LAB 4 cont.
void main( void ) { char data; // configura el LCD externo OpenXLCD( EIGHT_BIT & LINES_5X7 ); // configura la USART OpenUSART( USART_TX_INT_OFF & USART_RX_INT_OFF & USART_ASYNCH_MODE & USART_EIGHT_BIT &USART_CONT_RX,25); while(1) { while(!DataRdyUSART()); //espera para un dato data = ReadUSART(); //lee el dato WriteDataXLCD(data); //escribe el dato al LCD if(data=='Q') break; } CloseUSART(); }

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 86

Programacin en lenguaje C II

ARG013 - DVD
Programacin en lenguaje C II

Libreras para el control del Mdulo PWM mc mc electronics

Programa certificado por Microchip Technology Inc.


V3.2 August 10, 2007

CCP2
PWM Mode
CCPxCON<5:4> M t Master CCPR2L 5 4

High Time (Duty Cycle)

CCP2

Duty Cycle
Slave CCPR2H CCPx Output Comparator VDD VSS TMR2 = PR2 TMR2 = PR2 TMR2 = CCPRxH:2 LSb

R S

TMR2

Corresponding TRIS Bit

Period

Comparator

Clear Timer, CCPx pin and latch D.C.

PR2

Period

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 88

Configurando el CCP2 para el CCP2 p para PWM PWM


Setear Periodo escribiendo el registro g PR2 . Setear el Duty Cycle escribiendo el CCPR2L y CCP2CON bits<5:4> . Marcar el pin CCP2 como salida clreando appropiadamente el bit del TRIS Setear el valor del prescaler del TMR2 , cuando habilita TMR2 al escribir el T2CON Configure el mdulo CCP2 para modo PWM
2006 Microchip Technology Incorporated. All Rights Reserved. 202 PRC Slide 89

Funciones C para el control del PWM


ClosePWMx: Desabilita el PWM canal x. OpenPWMx: Configura PWM canal x. SetDCPWMx: Escribe un nuevo duty cycle al PWM canalx. SetOutputPWM S tO t tPWMx: Setea S t los l bits bit d de configuracin fi i d de salida lid del PWM para el ECCP x. CloseEPWMx: Desabilita el PWM Mejorado canal x. OpenEPWMx: Configurael PWM Mejorado channel x. SetDCEPWMx: Esccribe un nuevo valor del duty cycle al PWM mejorado channel x. SetOutputEPWMx: Setea los bits de configuracin de salida del PWM Mejorado para el ECCP x.

2006 Microchip Technology Incorporated. All Rights Reserved.

202 PRC

Slide 90

Referencias
PIC18F4520 Datasheets PIC18F F Family il R Reference f manual l PICDEM2 Plus Users Guide MPLAB C18 C Compiler Users Guide MPLAB C18 C Compiler p Getting g Started Guide MPLAB C18 C Compiler Libraries Guide p Other PIC18-based classes:

101_TLS: _ Introduction to MPLAB-IDE 102_ASP: Introduction to PIC18F Architecture 202_ASP: PIC18 Peripherals in MPASM 390 USB USB F 390_USB: From S Scratch t h
202 PRC Slide 91

2006 Microchip Technology Incorporated. All Rights Reserved.

Programacin en lenguaje C II

ARG013 - DVD
Programacin en lenguaje C II

Gracias

GRACIAS !!!
Andrs Ral Bruno Saravia

mc mc electronics
2006 Microchip Technology Incorporated. All Rights Reserved.

Programa certificado por Microchip Technology Inc.


Slide 92

202 PRC

You might also like