Professional Documents
Culture Documents
ARG013 - DVD
Programacin en lenguaje C II
Clas es Inter activ as con audi o y MPLAB C-18 anim acio i nes.
TM
mc mc electronics
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
202 PRC
Slide 4
202 PRC
Slide 5
202 PRC
Slide 6
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
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.
202 PRC
Slide 8
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.
202 PRC
Slide 9
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
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;
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
202 PRC
Slide 14
202 PRC
Slide 15
202 PRC
Slide 16
202 PRC
Slide 17
202 PRC
Slide 19
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
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
202 PRC
Slide 23
202 PRC
Slide 24
202 PRC
Slide 25
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
202 PRC
Slide 31
Directiva #PRAGMA
202 PRC
Slide 32
Directiva #PRAGMA
202 PRC
Slide 33
Directiva #PRAGMA
202 PRC
Slide 34
Interrupciones p
202 PRC
Slide 35
Interrupciones p
202 PRC
Slide 36
Interrupciones p
202 PRC
Slide 37
202 PRC
Slide 38
202 PRC
Slide 39
202 PRC
Slide 40
ASM. Dentro de C
202 PRC
Slide 41
ASM. Dentro de C
202 PRC
Slide 42
202 PRC
Slide 43
202 PRC
Slide 44
Archivos Asociados al C
202 PRC
Slide 45
Archivos Asociados al C
202 PRC
Slide 46
Programacin en lenguaje C II
ARG013 - DVD
Programacin en lenguaje C II
202 PRC
Slide 48
202 PRC
Slide 49
202 PRC
Slide 50
202 PRC
Slide 51
202 PRC
Slide 53
202 PRC
Slide 54
202 PRC
Slide 55
202 PRC
Slide 56
202 PRC
Slide 60
202 PRC
Slide 61
202 PRC
Slide 62
Build el Proyecto y
202 PRC
Slide 63
Successful Build
202 PRC
Slide 64
202 PRC
Slide 65
Conestando al Programados g
Conectado el p programador g
Conexin Sucedida
202 PRC
Slide 66
Programando g el Dispositivo p
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
Channel Select
CHS3:CHS0
AN12 AN12 AN10 AN8 AN7* AN6* AN5* AN4
AN9
VAIN
ADC
VREF+ VREF-
ADRESH
ADRESL
VDD
x0 x1 1x 0x
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
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
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
Conversor ADC
Config racion Configuracion
Conversor ADC
Config racion Configuracion
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
mc mc electronics
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);
// // // //
// // // //
return; }
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(); }
202 PRC
Slide 86
Programacin en lenguaje C II
ARG013 - DVD
Programacin en lenguaje C II
CCP2
PWM Mode
CCPxCON<5:4> M t Master CCPR2L 5 4
CCP2
Duty Cycle
Slave CCPR2H CCPx Output Comparator VDD VSS TMR2 = PR2 TMR2 = PR2 TMR2 = CCPRxH:2 LSb
R S
TMR2
Period
Comparator
PR2
Period
202 PRC
Slide 88
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
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.
202 PRC