Presentacion C para DSPIC
Presentacion C para DSPIC
Presentacion C para DSPIC
Libreras
Declaracin de variables y funciones Programa principal Funciones
Ejemplo bsico
#include <p30f4011.h> Int Int main() { x=mult(5, 12); return 0; x; //declaracin de variables mult(int a, int b); //declaracin de funcin
}
Int mult(int x, int y) { int resultado; resultado=x*y; return resultado; }
Ejm. de librerias
p30f4011.h p30f3014.h p30fxxxx.h timer.h adc10.h uart.h
Funcin main()
Todo programa en C debe contener la funcin main(). Esta funcin normalmente contiene el programa principal y sin importar su posicin dentro del archivo de texto del programa, dicha funcin se ejecutara en primera instancia.
Ejemplos de funciones
#include <p30f4011.h> #include <timer.h> void ini_tmr23(void); main() { ini_tmr23(); return 0; } void ini_tmr23(void) { WriteTimer23(0); unsigned long match_value = 0xD693A400; ConfigIntTimer23(T2_INT_PRIOR_3 & T2_INT_ON); OpenTimer23(T2_ON & T2_IDLE_STOP &T2_GATE_OFF & T2_PS_1_1 & T2_32BIT_MODE_ON & T2_SOURCE_INT, match_value); }
Operadores relacionales
Operador == != > < >= <= Igual a Diferente de Mayor que Menor que Mayor o igual que Menor o igual que Descripcin
Operadores de desplazamiento
Operador Descripcin
x >> y x << y
Operadores lgicos
&& || ! Operador lgico AND Operador lgico OR Operador lgico NOT
Descripcin
Operador AND a nivel de bits Operador OR a nivel de bits Operador OR exclusivo (XOR) a nivel de bits Operador de complemento a nivel de bits
Ciclos (while)
Este ciclo sirve para ejecutar un o varias instrucciones una y otra vez mientras una condicin sea verdadera.
---------------------------- Forma General while (condicin) { // instrucciones } ---------------------------- Aplicacin, funcin de retardo void _delay(void) { int time = 10000; while (time != 0) time--; } ---------------------------- Ciclo infinito While(1) { }
Ciclos (do-while)
Es una variante del ciclo while. La condicin se evala al final del ciclo, lo cual permite que las instrucciones que se encuentran dentro del ciclo se ejecuten al menos unas vez, aun cuando la condicin sea falsa.
Forma General do { // instrucciones // instrucciones } while (condicin)
Ciclos (for)
Esta instruccin sirve para controlar la ejecucin de un ciclo un determinado numero de veces.
Forma General
For (expresin1;expresin2,expresin3) { // instruccin } Ejm: for(i=0;i<100;i++) { _delay(); } Es posible el anidamiento de ciclos
dias_mes=28; dias_mes=29;
Arreglos
Es el conjunto de variables de un mismo tipo (char, int, float, etc.), donde a cada variable se le denomina elemento. Todos estos elementos se referencian con el mismo nombre y se almacenan en un conjunto de posiciones de memoria consecutivas.
Declaracin de un arreglos char Int char bcd_7_seg[10] ={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; lista_int[10]; dias_mes[] ={31,28,31,30,31,30,31,31,30,31,30,31};
Escribir a un elemento del arreglo lista_int[0]=0x23; Leer un elemento del arreglo x=lista_int[5]; TODOS LOS ELEMENTOS DE LOS ARREGLOS INICINA CON INDICE 0
Cadena
Una cadena es un arreglo de caracteres el cual utiliza un carcter nulo (\0) para indicar el final de la cadena.
Declaracin de cadenas char char arreglo_char[5] = { H, o, l, a, \0 }; cadena[]=Hola
Apuntadores
Son variables especiales que se utilizan para conseguir la direccin de memoria de otras variables. Estas variables se utilizan para la indexacin de arreglos y cadenas.
Declaracin de un apuntador Para declarar un apuntador es necesario anteponerle al nombre del apuntador un asterisco (*).
Int char
*aptr_int; *aptr_cadena;
Para conseguir la direccin inicial que ocupa una variable se utiliza el operador (&), llamado tambin operador de direccin.
int int
x; *y;
y=&x;
main() { Int i;
aptr = bcd_7_seg;
for(i=0;i<10;i++) { PORTB= aptr[i]; _delay(); }
Organizacin de proyectos en C
Variables globales Se declaran al principio del archivo, fuera de cualquier funcin. Estas variables puedes ser usadas dentro de cualquier funcin siempre y cuando estas funciones estn declaradas en el mismo archivo (archivo.C).
Variables externas Estas variables son declaradas dentro del archivo que contenga la funcin main(), Es necesario adems que sean declaradas como variables externas ejm: extern volatile int seg; dentro de un archivo con extensin *.h. En este archivo debern ir todas las variables externas, as como las funciones que se pretendan utilizar fuera de los archivo donde fueron declaradas. En los archivos donde se pretenda utilizar las variables o funciones externas deber incluir la siguiente lnea de cdigo #include "common.h.
Libreras y su utilizacin
Funciones para perifricos CAN Controller Area Network ADC12 ADC10 Timers Reset/Control I/O ports Input Capture Output Capture UART Universal asynchronous receiver/transmitter DCI Data Convert Interface SPI Serial Peripheral Interface QEI Quadrature Encode Interface PWM Pulse Wide Modulation I2C Inter-Integrated Circuit Ref: 16-bits Language Tools Libraries
Programa en C
#include <p30f4011.h> void _delay1(int time); main (void) { TRISDbits.TRISD0=0; while(1) { LATDbits.LATD 0=~LATDbits.LATD0; _delay(10000); } } void _delay1(int time) { while(time!=0) time--; } //Complementa el contenido del bit //Se declara el pin 0 del puerto D como salida
Programa en ensamblador
.include "p30f4011.inc" .global __main __main: bclr repeat: btg call goto TRISD,#0 LATD,#0 time repeat
time: loop:
.end
MOV MOV
); );
); ); ); );