SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
Hi-Tech Compiler for
                                               PIC18                          Introducción a la
                                                                              programación en C




1.-Introduccion                                      Esto asume que el usuario fabricara las librerías
                                                     de manejo de los periféricos del
El Hi-Tech para PIC es un compilador                 microcontrolador.
profesional estándar que fue por una compañía
muy bien establecida como un proveedor de
desarrollo de sistemas de herramientas. Hi tech
suministra compiladores en C para un gran
rango de microcontroladores en el Mercado:
PIC16,18,24,32 y dsPIC(Procesadores de señal
digital) como también los microcontroladores
de Motorola (freescale) 68000,ARM,derivados
del 8051, Textas Instruments, Dispositivos
MSP430, y otros productos.

Las características notables son las siguientes:

1.-ANSI C – Completa característica y portable.
2.-Fiable
3.-Multiple niveles de optimizaciones en C
4.-Un optimización por ensamblador                   Diagrama de secuencia de inicialización de compilación
5.-Relocaliza las variables locales para disminuir
el uso de la RAM.                                    1.1.- Estructura de un Programa
6.-Una buena librería en C.
                                                     Los procesadores PIC18 tienen algunas
La optimización lleva a la reducción del tamaño      localidades que contienen la configuración de
del código final para remover códigos                los bits llamados fuses estos bits pueden ser
redundantes y modifica la versión del                establecidos usando el macro de configuración.
ensamblador para reducir el número de
instrucciones para la mínima.                        El macro tiene el formato:

La más obvia desventaja de este compilador es        __CONFIG(n,X);
que solo las funciones de la librería estándar
para conversión de datos, manejo de la               Donde n es el número de registro de
memoria, operaciones matemáticas y básicas           configuración y X es el valor que es para
E/S están proporcionadas.                            establecer la configuración de palabra. El macro
Introduccion a la programacion en HI-TECH 2011
es definido en <htc.h> hay que asegurar incluir
esta librería cada vez que iniciemos un proyecto
con un micro.

Ejemplo

  #include <htc.h>
  __CONFIG(1, RC);                                            Formato radix para Constantes
  __CONFIG(2, BW8 & PWRTDIS & WDTPS1 & WDTEN);
  __CONFIG(4, STVRDIS);                                       1.4 Tipos de Variables

                                                       Las variables pueden ser localizadas como uso
                                                       interno en cada función o si se desea ser una
Después podemos definir la velocidad de reloj:
                                                       variable visible en todas las funciones.
  #define _XTAL_FREQ 4000000                           Por ejemplo:
  //Oscilador Interno de 4MHZ
                                                                      int value;
                                                                      Void función(void){
                                                                               Value=100;
1.2 Tipo de Datos
                                                                      }
El compilador Hi tech C PRO para la familia
PIC18 soporta tipo de datos básicos con 1, 2,3 y
4 byte.                                                La función puede usar la variable value ya que
                                                       es una variable global, mientras:


                                                                  Void función(void){

                                                                           Int value;

                                                                           Value=100;

                                                                  }


1.3 Constantes                                         La función puede usar la variable value ya que
                                                       es una variable interna y solo ella puede usarla,
El formato de constantes especifica su radix. Hi       mientras si existiera otra función no puede
tech C PRO para la familia PIC18 soporta el            tomar el valor de la variable porque no existiría
Radiz estándar ANSI especifica cual establece          en ella.
constantes binarios en código C.

En la tabla siguiente se observa como son
definidas las constantes.


       2   Introducción a la programación en C en Hi tech Compiler for PIC18
Introduccion a la programacion en HI-TECH 2011
1.5 Operadores




Las asignaciones son de gran ayuda para reducir memoria de programa del microcontrolador ya que
simplifica la manera de ser una operación. Por ejemplo:


 var=var+3000;                                 var+=3000;

  07DB 0870       MOVF 0x70, W                 07DD 30B8       MOVLW 0xb8

  07DC 3EB8       ADDLW 0xb8                   07DE 07F0      ADDWF 0x70, F

  07DD 00F0       MOVWF 0x70                   07DF 1803      BTFSC 0x3, 0

  07DE 0871       MOVF 0x71, W                 07E0 0AF1      INCF 0x71, F

  07DF 1803       BTFSC 0x3, 0                 07E1 300B      MOVLW 0xb

  07E0 3E01       ADDLW 0x1                    07E2 07F1      ADDWF 0x71, F

  07E1 3E0B       ADDLW 0xb

  07E2 00F1      MOVWF 0x71




      3   Introducción a la programación en C en Hi tech Compiler for PIC18
Introduccion a la programacion en HI-TECH 2011
Las operaciones aritméticas son las que están en la tabla siguiente:

                             +       Suma
                             -       Resta
                             *       Multiplicación
                             /       División
                             %       Modulo, Resto de una división entera
                             --      Decremento
                            ++       Incremento
                          sizeof     Determina el tamaño en bytes de un
                                     operando


Ejemplo:

Var=var2+var3; //suma

Unsigned char var[8];

Var2=sizeof(var); //var2=8 ya que es el tamaño del arreglo

Las relaciones sirven para hacer la comparación de una variable con otro donde al cumplir cierta
relación conlleve a una acción.

                                        <     Menor que
                                        >     Mayor que
                                       >=     Mayor o igual que
                                       <=     Menor o igual que
                                       ==     Igual
                                       ¡=     Distinto
                                       ?:     Expresión
                                              Condicional


Por ejemplo:

Var=100;

Var2=2200;

Var!=var2?var++:var2--; //Entra a var++ si es cierta la condición sino
entra a var2—




      4    Introducción a la programación en C en Hi tech Compiler for PIC18
Introduccion a la programacion en HI-TECH 2011
Las operaciones lógicas son usadas para realizar operaciones de comparación entre varios elementos:

                                               !      NOT
                                              &&      AND
                                              ||      OR
Ejemplo:

If(var==100 && var2==2000);

Las operaciones de bits sirven para separar ciertos bits donde se desean solo tener como comparación.

                                    ~    Complemento en 1
                                    &    AND
                                    ^    OR exclusiva
                                     |   OR
                                    >>   Desplaza a Derecha
                                    <<   Desplaza a Izquierda


Ejemplo:

Var=~0xFF; Var=0x00;

Var=0xFF&0Xf0;          Var=0Xf0;



1.6 Funciones

Las funciones son bloques de sentencias, todas las sentencias se deben de enmarcar dentro de las
funciones. Al igual que las variables, las funciones deben definirse antes de utilizarse.

Una función puede ser invocada desde una sentencia de otra función. Una función puede devolver un
valor a la sentencia que la ha llamado. El tipo de dato se indica en la definición de la función; en el caso
de no indicarse nada se entiende que es unsigned char y en el caso de no devolver un valor se debe de
especificar el valor VOID. La función, además de devolver un valor, puede recibir parámetros o
argumentos.

La estructura de una función :

Tipo_dato nombre_funcion(tipo parámetro,parametro2…){

        (sentencia);

}




       5   Introducción a la programación en C en Hi tech Compiler for PIC18
Introduccion a la programacion en HI-TECH 2011
Ejemplo:


             void main(void){
                  Var=suma(10,20);
             }
             int suma(int x,int y){
                  int z;
                  z=x+y;
                  return z;
             }


2.- Declaraciones de Control

Las declaraciones son usadas para controlar el proceso de ejecución del programa.

Hi tech admite las siguientes:

    •   If-else
    •   While
    •   do-while
    •   for
    •   switch-case
    •   return
    •   break,continue y goto

    2.1 if-else


                                     if (expr){
                                              sent_1;
                                     }[else
                                              sent_2;]



Primero entra a la comparación de la expr si es cierta entra a ejecutar la sentencia sent_1 sino entra a la
sentencia sent_2.

                                               Nota
Los elementos que estén encerrados en corchetes [] son opcionales




        6   Introducción a la programación en C en Hi tech Compiler for PIC18
Introduccion a la programacion en HI-TECH 2011

                                  if (expr){
                                            sent_1;
                                  }[else if(expr2){
                                            sent_2;
                                  } else
                                            sent_3;
                                  ]

Si al evaluar la expresión expr resulta falsa entonces entrara a la comparación expr2 pero si ninguno de
los dos son ciertas entonce entrara a ejecutar a sent_3.




                                                           If(A==10) B=0;
                                                           Else b=1;




                                                         If(A==0){
                                                                 If(B==3) A=0;
                                                         }else
                                                                 B=0;




         2.2.- switch-case

Una manera rápida de acceder a una decisión múltiple es usar la sentencia switch-case:

Var=1;

Switch(Var){

         case 0://


         7   Introducción a la programación en C en Hi tech Compiler for PIC18
Introduccion a la programacion en HI-TECH 2011
        case 1: B=0; break;

        default: //

}

Cuando entra a la sentencia switch realiza la búsqueda de valor deseado, en este caso cuando la variable
Var es igual a 1, entra en el case 1 ya que este caso contiene el valor correspondiente a la variable Var
pero si no existe ninguna igualdad en los case simplemente entrara a default.

                                              Nota
No puede haber dos CASE con la misma constante




                                                              switch(A){

                                                                      case 0: B=10; break;

                                                                      case 1: B=20; break;

                                                                      case 2: B=40; break;

                                                                      default: break;

                                                              }




        2.3.- for

En las expresiones del for la inicialización es una variable a la cual se le asigna un valor inicial con el
controlar el bucle. La condición de finalización sirve para evaluar ANTES de ejecutar las sentencias si es
cierta o no, en el caso de ser cierta se ejecutan las sentencias y en caso contrario se sale del for. Por
último, la expresión de incremento o decremento modifica la variable de control DESPUÉS de ejecutar el
bucle.




       8   Introducción a la programación en C en Hi tech Compiler for PIC18
Introduccion a la programacion en HI-TECH 2011




                                                        for(n=0;n<10;n++){
                                                                Printf(n);
                                                        }




        2.4 while/do-while

While se usa para repetir sentencias.

while(expresión){

        Sentencias;

}

Primero evalua la expresión si es cierta sigue ejecutando la sentencia hasta que la expresión sea
totalmente falsa.

Do-While es diferente de while y for ya que tiene que entrar por lo menos una vez para ejecutar la
sentencia y después evalúa la expresión.

do{

        Sentencias;

}while(expresión);




      9    Introducción a la programación en C en Hi tech Compiler for PIC18
Introduccion a la programacion en HI-TECH 2011




                                                         while(n<5 || x>10){
                                                                b=100;
                                                                a=10;
                                                         }




                                                  do{
                                                          b++;
                                                          printf(b);
                                                  }while(b<100);




return: sirve para devolver datos.

break: Sirve para salir de bucles como son for,while,do-while

goto: Provoca un salto incondicional




     10    Introducción a la programación en C en Hi tech Compiler for PIC18
Introduccion a la programacion en HI-TECH 2011
3. Comentarios

Los comentarios sirven para facilitar la comprensión del programa, y permite que otros usuarios puedan
entender el programa fácilmente.

    •   Utilizamos // para poner comentarios a una línea especifica
    •   Usamos /* y*/ para envolver a dentro de ellos un texto que puede ser por default la explicación
        del programa en general.

Ejemplo:

PORTB=0x00; //Apagamos puerto b

*/ Inicializamos el puerto b para que no exista

  El efecto rebote o picos cuando incie el micro*/

PORTB=0x00;




                          En HI TECH compiler for PIC18


Para iniciar en la programación de microcontroladores de PIC18 se debe de tener el software que nos
proporciona gratis la compañía Microchip en su web, www.microchip.com, el programa es MPLAB IDE, al
descargarlo e instalarlo, debemos ahora de descargar el software HI TECH for PIC18 en su página
www.htsoft.com y lo instalamos.

Al tener todo bien instalado, procedemos abrir el software MPLAB IDE.




     11    Introducción a la programación en C en Hi tech Compiler for PIC18
Introduccion a la programacion en HI-TECH 2011




                                             Software MPLAB

Como ya tenemos abierto el software vallamos a crear un proyecto en C, daremos click en <proyect
Wizard> nos abrirá una venta donde nos saluda, daremos click en <next> aparecerá en seguida el paso
                                                                     uno a realizar que es seleccionar el
                                                                     microcontrolador a programar, en
                                                                     este caso vallamos a elegir el
                                                                     PIC18F2550, y damos click en
                                                                     <next> el paso dos es elegir el
                                                                     compilador a usar, buscaremos el
compilador HI TECH en <Active toolsuite>, y después <next> el paso tres es buscar lugar donde se debe
de guardar nuestro proyecto, entonces buscamos donde queramos archivar nuestro proyecto, y damos
click en <next>, después nos mencionara que si queremos adherir proyectos existentes al nuestro, y
finalizaremos.

                             Ahora como nuestro lugar del proyecto no contiene ningún archivo, solo
                             vallamos a agregar una hoja en blanco en <file><new>, después grabamos
                             la hoja en blanco en el lugar del proyecto y lo agregamos al espacio de
                             trabajo solo dar click derecho en <Source File> y agregamos la hoja en
                             blanco que fue antes guardada, y listo hemos hecho una hoja de trabajo,
                             estamos listo para empezar a programar.

                             Lo primero que vamos a realizar es el parpadeo de un led, como se va
                             utilizar un oscilador interno se debe de configurar correctamente los fuses
                             del micro, para que este pueda ser calibrado con el Oscilador Interno.

                             El PIC18F2550 contiene un modulo de USB que utiliza algunos bits de
                             configuración para usarlo, en este caso se deben de configurar de una
forma donde no se utilice estos bits o desactivarlos.



     12    Introducción a la programación en C en Hi tech Compiler for PIC18
Introduccion a la programacion en HI-TECH 2011
   /////////////////////////////////////////////////////////////
   //Configuracion para trabajar Con oscilador interno de 8Mhz
   __CONFIG(1,INTIO & FCMDIS & IESODIS & PLLDIV5 & PLLPOSTDIV2 & CPUDIV1 & USBOSC);
   /////////////////////////////////////////////////////////////
   __CONFIG(2,VREGDIS & PWRTEN & BORDIS & WDTDIS & BORV45 & WDTPS32K);
   __CONFIG(3,PBDIGITAL & LPT1DIS & MCLREN);
   __CONFIG(4,STVRDIS & LVPDIS & ICPORTDIS & DEBUGDIS);
   __CONFIG(5,UNPROTECT);
   __CONFIG(6,UNPROTECT);
   __CONFIG(7,UNPROTECT);




Para la utilización de los fueses y de los registros del Micro, se debe de agregar la librería estándar para
uso de todos los módulos PIC18.

#include<htc.c>

Después definiremos la frecuencia de trabajo para la utilización de __delay_ms para ellos se usa la línea:

//////////////////////////////
//Frecuencia FOSC 8Mhz
//////////////////////////////
#define _XTAL_FREQ 8000000

Ahora ya podemos agregar la función principal, void main (void) como vimos en la configuración de bits
(fuses) en __CONFIG(1,INTIO…) se utilizado un oscilador interno, para el uso de una frecuencia de 8Mhz
se debe de inicializar el registro OSCCON.




     13    Introducción a la programación en C en Hi tech Compiler for PIC18
Introduccion a la programacion en HI-TECH 2011
Solo basta de cargar el valor de los 3 bits IRCF2:IRCF0.

OSCCON=0x70; //Oscilador a 8Mhz
NOP();NOP();NOP();NOP();

Se utiliza los parámetros NOP() para que pueda establecerse la frecuencia, para hacer el parpadeo de un
led, se debe de configurar correctamente los registros TRIS, como vamos a hacer el parpadeo de un led
en un solo pin del puerto B, los bits que representa al registro de puerto o cualquier registro solo, es
poner el nombre del bit en este caso RB0.

                                                  NOTA
Siempre tenga a la mano la hoja de datos del microcontrolador que se vaya a trabajar para estar
siempre informado de los registros y de los bits de cada uno de ellos.

Para un ciclo perpetuo se usa la sentencia while.

////////////////////////////////////////////////
//Configuración del Puerto B                ////
////////////////////////////////////////////////
     TRISB=0x00;
     PORTB=0x00;
/*************************************************/
     while(1){
           RB0=0;
           DELAY1S();
           RB0=1;
           DELAY1S();
     }

Como se ve se usa una función de temporización de 1 segundo como el compilador no ofrece librerías
de retardos tan altos, nosotros debemos de fabricar los, para ellos haremos la función DELAY1S().

Solo basta usar una variable y una sentencia for para repetir tiempos.

//////////////////////////////
//FUNCION DE 1 SEGUNDO
//////////////////////////////
void DELAY1S(void){
     unsigned char time;
     for(time=0;time<100;time++){
           __delay_ms(10);
     }
}

     14    Introducción a la programación en C en Hi tech Compiler for PIC18
Introduccion a la programacion en HI-TECH 2011
El programa completo se muestra a continuación:


////////////////////////////////////////////////////////
//                         BLINK EN PIN PB0
//Autor: george.manson.69
//Lugar: Mexico
//Compilador: HI TECH PIC18 (LITE MODE)
////////////////////////////////////////////////////////
#include<htc.h>
/////////////////////////////////////////////////////////////
//Configuracion para trabajar Con oscilador interno de 8Mhz
__CONFIG(1,INTIO & FCMDIS & IESODIS & PLLDIV5 & PLLPOSTDIV2 & CPUDIV1 & USBOSC);
/////////////////////////////////////////////////////////////
__CONFIG(2,VREGDIS & PWRTEN & BORDIS & WDTDIS & BORV45 & WDTPS32K);
__CONFIG(3,PBDIGITAL & LPT1DIS & MCLREN);
__CONFIG(4,STVRDIS & LVPDIS & ICPORTDIS & DEBUGDIS);
__CONFIG(5,UNPROTECT);
__CONFIG(6,UNPROTECT);
__CONFIG(7,UNPROTECT);
//////////////////////////////
//Frecuencia FOSC 8Mhz
//////////////////////////////
#define _XTAL_FREQ 8000000
float value;

//////////////////////////////
//FUNCION DE 1 SEGUNDO
//////////////////////////////
void DELAY1S(void){
       unsigned char time;
       for(time=0;time<100;time++){
              __delay_ms(10);
       }
}
/////////////////////////////////////////////////
//Funcion de interrupcion
//Si no se usa simplemente no hacemos nada...
//Esto sirve para direccionar lo los datos
//en un lugar muy cercano al Inicio de la memoria
//de datos
////////////////////////////////////////////////
static void interrupt
isr(void){}
//////////////////////////////
//FUNCION PRINCIPAL
//////////////////////////////
void main(void){
/////////////////////////////////////////////////
//Registro para Configurar el Oscilador Interno//
/////////////////////////////////////////////////
       OSCCON=0x70;
       NOP();NOP();NOP();NOP();//4Ciclos para estabilizar Frecuencia


    15    Introducción a la programación en C en Hi tech Compiler for PIC18
Introduccion a la programacion en HI-TECH 2011
/////////////////////////////////////////////////
/*************************************************/
////////////////////////////////////////////////
//Configuracion del Puerto B                ////
////////////////////////////////////////////////
       TRISB=0x00;
       PORTB=0x00;
/*************************************************/
       while(1){
              RB0=0;
              DELAY1S();
              RB0=1;
              DELAY1S();
       }
}




    16   Introducción a la programación en C en Hi tech Compiler for PIC18

Más contenido relacionado

La actualidad más candente

Guia referencia mc
Guia referencia mcGuia referencia mc
Guia referencia mcsackter
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivasstarduslex
 
Lenguajec 1
Lenguajec 1Lenguajec 1
Lenguajec 1joeshego
 
Clase 3introduccion a_lenguace_c
Clase 3introduccion a_lenguace_cClase 3introduccion a_lenguace_c
Clase 3introduccion a_lenguace_ckikeMerck
 
Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacioncharnisch
 
Estructura de un rograma
Estructura de un rogramaEstructura de un rograma
Estructura de un rogramaivanjvic
 
Estructura de Programa en C++
Estructura de Programa en C++Estructura de Programa en C++
Estructura de Programa en C++ncrmax
 
Programación en c (iii parte)
Programación en c (iii parte)Programación en c (iii parte)
Programación en c (iii parte)MarielaCuriel
 
Lenguaje C para Administradores de Red - Script II Punteros
Lenguaje C para Administradores de Red - Script II PunterosLenguaje C para Administradores de Red - Script II Punteros
Lenguaje C para Administradores de Red - Script II Punterossirfids
 

La actualidad más candente (20)

Guia referencia mc
Guia referencia mcGuia referencia mc
Guia referencia mc
 
OPERADORES PARA C++
OPERADORES PARA C++OPERADORES PARA C++
OPERADORES PARA C++
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Lenguajec 1
Lenguajec 1Lenguajec 1
Lenguajec 1
 
Lenguaje C (pdf)
Lenguaje C (pdf)Lenguaje C (pdf)
Lenguaje C (pdf)
 
Manual basico de_lenguje_c
Manual basico de_lenguje_cManual basico de_lenguje_c
Manual basico de_lenguje_c
 
Clase 3introduccion a_lenguace_c
Clase 3introduccion a_lenguace_cClase 3introduccion a_lenguace_c
Clase 3introduccion a_lenguace_c
 
Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacion
 
Tarea3
Tarea3Tarea3
Tarea3
 
Asignación # 4
Asignación # 4Asignación # 4
Asignación # 4
 
Tutorial C
Tutorial CTutorial C
Tutorial C
 
Elementos basicos c
Elementos basicos cElementos basicos c
Elementos basicos c
 
Tema 1.1
Tema 1.1Tema 1.1
Tema 1.1
 
Estructura de un rograma
Estructura de un rogramaEstructura de un rograma
Estructura de un rograma
 
PROGRAMACION EN C
PROGRAMACION EN CPROGRAMACION EN C
PROGRAMACION EN C
 
Santaella u5 Lenguaje C++
Santaella u5 Lenguaje C++Santaella u5 Lenguaje C++
Santaella u5 Lenguaje C++
 
Estructura de Programa en C++
Estructura de Programa en C++Estructura de Programa en C++
Estructura de Programa en C++
 
Programacion c
Programacion cProgramacion c
Programacion c
 
Programación en c (iii parte)
Programación en c (iii parte)Programación en c (iii parte)
Programación en c (iii parte)
 
Lenguaje C para Administradores de Red - Script II Punteros
Lenguaje C para Administradores de Red - Script II PunterosLenguaje C para Administradores de Red - Script II Punteros
Lenguaje C para Administradores de Red - Script II Punteros
 

Destacado

104825866 3-sintonia-de-lazo-cerrado
104825866 3-sintonia-de-lazo-cerrado104825866 3-sintonia-de-lazo-cerrado
104825866 3-sintonia-de-lazo-cerradoMACLAB
 
Bootloader USB Multiplataforma para pic18f4550
Bootloader USB Multiplataforma para pic18f4550Bootloader USB Multiplataforma para pic18f4550
Bootloader USB Multiplataforma para pic18f4550Biblioman Aquihayapuntes
 
Curso AVRs 2008 - ADCs
Curso AVRs 2008 - ADCsCurso AVRs 2008 - ADCs
Curso AVRs 2008 - ADCscepaul.jordan
 
Programación multitarea en microcontroladores avr de 8 bits.
Programación multitarea en microcontroladores avr de 8 bits.Programación multitarea en microcontroladores avr de 8 bits.
Programación multitarea en microcontroladores avr de 8 bits.Hazur Sahib
 
Empezando con las librerías gráficas de microchip
Empezando  con las librerías gráficas de  microchipEmpezando  con las librerías gráficas de  microchip
Empezando con las librerías gráficas de microchipBiblioman Aquihayapuntes
 
Proyectos de control de lazo cerrado
Proyectos de control de lazo cerradoProyectos de control de lazo cerrado
Proyectos de control de lazo cerradoibcalu
 
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Franz Amaya
 
MICROCONTROLADORES II EN C. TEMA 1
MICROCONTROLADORES II EN C. TEMA 1MICROCONTROLADORES II EN C. TEMA 1
MICROCONTROLADORES II EN C. TEMA 1Luis Zurita
 
Microcontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicacionesMicrocontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicacionesCarlos Tovar
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxfreddymadriz
 
Sistema de Control de Lazo Cerrado
Sistema de Control de Lazo CerradoSistema de Control de Lazo Cerrado
Sistema de Control de Lazo CerradoBiancavick
 
Sistemas de control de lazo abierto y lazo cerrado
Sistemas de control de lazo abierto y lazo cerrado Sistemas de control de lazo abierto y lazo cerrado
Sistemas de control de lazo abierto y lazo cerrado sistemasdinamicos2014
 
Libro simulacion mikroc
Libro simulacion mikrocLibro simulacion mikroc
Libro simulacion mikrocpabs_devil
 

Destacado (19)

104825866 3-sintonia-de-lazo-cerrado
104825866 3-sintonia-de-lazo-cerrado104825866 3-sintonia-de-lazo-cerrado
104825866 3-sintonia-de-lazo-cerrado
 
Bootloader USB Multiplataforma para pic18f4550
Bootloader USB Multiplataforma para pic18f4550Bootloader USB Multiplataforma para pic18f4550
Bootloader USB Multiplataforma para pic18f4550
 
Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550
 
Curso AVRs 2008 - ADCs
Curso AVRs 2008 - ADCsCurso AVRs 2008 - ADCs
Curso AVRs 2008 - ADCs
 
Programación multitarea en microcontroladores avr de 8 bits.
Programación multitarea en microcontroladores avr de 8 bits.Programación multitarea en microcontroladores avr de 8 bits.
Programación multitarea en microcontroladores avr de 8 bits.
 
Comandar un pic a través de internet
Comandar un pic a través de internetComandar un pic a través de internet
Comandar un pic a través de internet
 
Empezando con las librerías gráficas de microchip
Empezando  con las librerías gráficas de  microchipEmpezando  con las librerías gráficas de  microchip
Empezando con las librerías gráficas de microchip
 
Proyectos de control de lazo cerrado
Proyectos de control de lazo cerradoProyectos de control de lazo cerrado
Proyectos de control de lazo cerrado
 
Sistemas automaticos
Sistemas automaticosSistemas automaticos
Sistemas automaticos
 
Libro mikro c
Libro mikro cLibro mikro c
Libro mikro c
 
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
 
Curso de-mcu-proteus
Curso de-mcu-proteusCurso de-mcu-proteus
Curso de-mcu-proteus
 
MICROCONTROLADORES II EN C. TEMA 1
MICROCONTROLADORES II EN C. TEMA 1MICROCONTROLADORES II EN C. TEMA 1
MICROCONTROLADORES II EN C. TEMA 1
 
Microcontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicacionesMicrocontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicaciones
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Sistema de Control de Lazo Cerrado
Sistema de Control de Lazo CerradoSistema de Control de Lazo Cerrado
Sistema de Control de Lazo Cerrado
 
Sistemas de control de lazo abierto y lazo cerrado
Sistemas de control de lazo abierto y lazo cerrado Sistemas de control de lazo abierto y lazo cerrado
Sistemas de control de lazo abierto y lazo cerrado
 
Libro simulacion mikroc
Libro simulacion mikrocLibro simulacion mikroc
Libro simulacion mikroc
 
50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol
 

Similar a Introduccion a la programacion en c 18

Similar a Introduccion a la programacion en c 18 (20)

Introduccion a la programacion en c 1
Introduccion a la programacion en c 1Introduccion a la programacion en c 1
Introduccion a la programacion en c 1
 
Curso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xxCurso de programacion en c++ para microcontroladores pic 16 f87xx
Curso de programacion en c++ para microcontroladores pic 16 f87xx
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacion
 
Transparencias4
Transparencias4Transparencias4
Transparencias4
 
Turbo c
Turbo cTurbo c
Turbo c
 
Clase 02 gestion de puertos - directivas
Clase 02   gestion de puertos - directivasClase 02   gestion de puertos - directivas
Clase 02 gestion de puertos - directivas
 
PROGRAMACIÓN EN C
PROGRAMACIÓN EN CPROGRAMACIÓN EN C
PROGRAMACIÓN EN C
 
Elementos basicos de_programacion
Elementos basicos de_programacionElementos basicos de_programacion
Elementos basicos de_programacion
 
P03.Programación en c para pics
P03.Programación en c para picsP03.Programación en c para pics
P03.Programación en c para pics
 
Micro2 tema 1
Micro2 tema 1Micro2 tema 1
Micro2 tema 1
 
ELEMENTOS DE PROGRA 30-05.pdf
ELEMENTOS DE PROGRA 30-05.pdfELEMENTOS DE PROGRA 30-05.pdf
ELEMENTOS DE PROGRA 30-05.pdf
 
Que es una directiva de preprocesador
Que es una directiva de preprocesadorQue es una directiva de preprocesador
Que es una directiva de preprocesador
 
Curso c ii
Curso c iiCurso c ii
Curso c ii
 
Curso C Ii
Curso C IiCurso C Ii
Curso C Ii
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivas
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Dialnet programando microcontroladorespicenlenguajec-4587553
Dialnet programando microcontroladorespicenlenguajec-4587553Dialnet programando microcontroladorespicenlenguajec-4587553
Dialnet programando microcontroladorespicenlenguajec-4587553
 
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++
 
Curso c ii
Curso c iiCurso c ii
Curso c ii
 
Introducción
IntroducciónIntroducción
Introducción
 

Último

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 

Último (19)

POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 

Introduccion a la programacion en c 18

  • 1. Hi-Tech Compiler for PIC18 Introducción a la programación en C 1.-Introduccion Esto asume que el usuario fabricara las librerías de manejo de los periféricos del El Hi-Tech para PIC es un compilador microcontrolador. profesional estándar que fue por una compañía muy bien establecida como un proveedor de desarrollo de sistemas de herramientas. Hi tech suministra compiladores en C para un gran rango de microcontroladores en el Mercado: PIC16,18,24,32 y dsPIC(Procesadores de señal digital) como también los microcontroladores de Motorola (freescale) 68000,ARM,derivados del 8051, Textas Instruments, Dispositivos MSP430, y otros productos. Las características notables son las siguientes: 1.-ANSI C – Completa característica y portable. 2.-Fiable 3.-Multiple niveles de optimizaciones en C 4.-Un optimización por ensamblador Diagrama de secuencia de inicialización de compilación 5.-Relocaliza las variables locales para disminuir el uso de la RAM. 1.1.- Estructura de un Programa 6.-Una buena librería en C. Los procesadores PIC18 tienen algunas La optimización lleva a la reducción del tamaño localidades que contienen la configuración de del código final para remover códigos los bits llamados fuses estos bits pueden ser redundantes y modifica la versión del establecidos usando el macro de configuración. ensamblador para reducir el número de instrucciones para la mínima. El macro tiene el formato: La más obvia desventaja de este compilador es __CONFIG(n,X); que solo las funciones de la librería estándar para conversión de datos, manejo de la Donde n es el número de registro de memoria, operaciones matemáticas y básicas configuración y X es el valor que es para E/S están proporcionadas. establecer la configuración de palabra. El macro
  • 2. Introduccion a la programacion en HI-TECH 2011 es definido en <htc.h> hay que asegurar incluir esta librería cada vez que iniciemos un proyecto con un micro. Ejemplo #include <htc.h> __CONFIG(1, RC); Formato radix para Constantes __CONFIG(2, BW8 & PWRTDIS & WDTPS1 & WDTEN); __CONFIG(4, STVRDIS); 1.4 Tipos de Variables Las variables pueden ser localizadas como uso interno en cada función o si se desea ser una Después podemos definir la velocidad de reloj: variable visible en todas las funciones. #define _XTAL_FREQ 4000000 Por ejemplo: //Oscilador Interno de 4MHZ int value; Void función(void){ Value=100; 1.2 Tipo de Datos } El compilador Hi tech C PRO para la familia PIC18 soporta tipo de datos básicos con 1, 2,3 y 4 byte. La función puede usar la variable value ya que es una variable global, mientras: Void función(void){ Int value; Value=100; } 1.3 Constantes La función puede usar la variable value ya que es una variable interna y solo ella puede usarla, El formato de constantes especifica su radix. Hi mientras si existiera otra función no puede tech C PRO para la familia PIC18 soporta el tomar el valor de la variable porque no existiría Radiz estándar ANSI especifica cual establece en ella. constantes binarios en código C. En la tabla siguiente se observa como son definidas las constantes. 2 Introducción a la programación en C en Hi tech Compiler for PIC18
  • 3. Introduccion a la programacion en HI-TECH 2011 1.5 Operadores Las asignaciones son de gran ayuda para reducir memoria de programa del microcontrolador ya que simplifica la manera de ser una operación. Por ejemplo: var=var+3000; var+=3000; 07DB 0870 MOVF 0x70, W 07DD 30B8 MOVLW 0xb8 07DC 3EB8 ADDLW 0xb8 07DE 07F0 ADDWF 0x70, F 07DD 00F0 MOVWF 0x70 07DF 1803 BTFSC 0x3, 0 07DE 0871 MOVF 0x71, W 07E0 0AF1 INCF 0x71, F 07DF 1803 BTFSC 0x3, 0 07E1 300B MOVLW 0xb 07E0 3E01 ADDLW 0x1 07E2 07F1 ADDWF 0x71, F 07E1 3E0B ADDLW 0xb 07E2 00F1 MOVWF 0x71 3 Introducción a la programación en C en Hi tech Compiler for PIC18
  • 4. Introduccion a la programacion en HI-TECH 2011 Las operaciones aritméticas son las que están en la tabla siguiente: + Suma - Resta * Multiplicación / División % Modulo, Resto de una división entera -- Decremento ++ Incremento sizeof Determina el tamaño en bytes de un operando Ejemplo: Var=var2+var3; //suma Unsigned char var[8]; Var2=sizeof(var); //var2=8 ya que es el tamaño del arreglo Las relaciones sirven para hacer la comparación de una variable con otro donde al cumplir cierta relación conlleve a una acción. < Menor que > Mayor que >= Mayor o igual que <= Menor o igual que == Igual ¡= Distinto ?: Expresión Condicional Por ejemplo: Var=100; Var2=2200; Var!=var2?var++:var2--; //Entra a var++ si es cierta la condición sino entra a var2— 4 Introducción a la programación en C en Hi tech Compiler for PIC18
  • 5. Introduccion a la programacion en HI-TECH 2011 Las operaciones lógicas son usadas para realizar operaciones de comparación entre varios elementos: ! NOT && AND || OR Ejemplo: If(var==100 && var2==2000); Las operaciones de bits sirven para separar ciertos bits donde se desean solo tener como comparación. ~ Complemento en 1 & AND ^ OR exclusiva | OR >> Desplaza a Derecha << Desplaza a Izquierda Ejemplo: Var=~0xFF; Var=0x00; Var=0xFF&0Xf0; Var=0Xf0; 1.6 Funciones Las funciones son bloques de sentencias, todas las sentencias se deben de enmarcar dentro de las funciones. Al igual que las variables, las funciones deben definirse antes de utilizarse. Una función puede ser invocada desde una sentencia de otra función. Una función puede devolver un valor a la sentencia que la ha llamado. El tipo de dato se indica en la definición de la función; en el caso de no indicarse nada se entiende que es unsigned char y en el caso de no devolver un valor se debe de especificar el valor VOID. La función, además de devolver un valor, puede recibir parámetros o argumentos. La estructura de una función : Tipo_dato nombre_funcion(tipo parámetro,parametro2…){ (sentencia); } 5 Introducción a la programación en C en Hi tech Compiler for PIC18
  • 6. Introduccion a la programacion en HI-TECH 2011 Ejemplo: void main(void){ Var=suma(10,20); } int suma(int x,int y){ int z; z=x+y; return z; } 2.- Declaraciones de Control Las declaraciones son usadas para controlar el proceso de ejecución del programa. Hi tech admite las siguientes: • If-else • While • do-while • for • switch-case • return • break,continue y goto 2.1 if-else if (expr){ sent_1; }[else sent_2;] Primero entra a la comparación de la expr si es cierta entra a ejecutar la sentencia sent_1 sino entra a la sentencia sent_2. Nota Los elementos que estén encerrados en corchetes [] son opcionales 6 Introducción a la programación en C en Hi tech Compiler for PIC18
  • 7. Introduccion a la programacion en HI-TECH 2011 if (expr){ sent_1; }[else if(expr2){ sent_2; } else sent_3; ] Si al evaluar la expresión expr resulta falsa entonces entrara a la comparación expr2 pero si ninguno de los dos son ciertas entonce entrara a ejecutar a sent_3. If(A==10) B=0; Else b=1; If(A==0){ If(B==3) A=0; }else B=0; 2.2.- switch-case Una manera rápida de acceder a una decisión múltiple es usar la sentencia switch-case: Var=1; Switch(Var){ case 0:// 7 Introducción a la programación en C en Hi tech Compiler for PIC18
  • 8. Introduccion a la programacion en HI-TECH 2011 case 1: B=0; break; default: // } Cuando entra a la sentencia switch realiza la búsqueda de valor deseado, en este caso cuando la variable Var es igual a 1, entra en el case 1 ya que este caso contiene el valor correspondiente a la variable Var pero si no existe ninguna igualdad en los case simplemente entrara a default. Nota No puede haber dos CASE con la misma constante switch(A){ case 0: B=10; break; case 1: B=20; break; case 2: B=40; break; default: break; } 2.3.- for En las expresiones del for la inicialización es una variable a la cual se le asigna un valor inicial con el controlar el bucle. La condición de finalización sirve para evaluar ANTES de ejecutar las sentencias si es cierta o no, en el caso de ser cierta se ejecutan las sentencias y en caso contrario se sale del for. Por último, la expresión de incremento o decremento modifica la variable de control DESPUÉS de ejecutar el bucle. 8 Introducción a la programación en C en Hi tech Compiler for PIC18
  • 9. Introduccion a la programacion en HI-TECH 2011 for(n=0;n<10;n++){ Printf(n); } 2.4 while/do-while While se usa para repetir sentencias. while(expresión){ Sentencias; } Primero evalua la expresión si es cierta sigue ejecutando la sentencia hasta que la expresión sea totalmente falsa. Do-While es diferente de while y for ya que tiene que entrar por lo menos una vez para ejecutar la sentencia y después evalúa la expresión. do{ Sentencias; }while(expresión); 9 Introducción a la programación en C en Hi tech Compiler for PIC18
  • 10. Introduccion a la programacion en HI-TECH 2011 while(n<5 || x>10){ b=100; a=10; } do{ b++; printf(b); }while(b<100); return: sirve para devolver datos. break: Sirve para salir de bucles como son for,while,do-while goto: Provoca un salto incondicional 10 Introducción a la programación en C en Hi tech Compiler for PIC18
  • 11. Introduccion a la programacion en HI-TECH 2011 3. Comentarios Los comentarios sirven para facilitar la comprensión del programa, y permite que otros usuarios puedan entender el programa fácilmente. • Utilizamos // para poner comentarios a una línea especifica • Usamos /* y*/ para envolver a dentro de ellos un texto que puede ser por default la explicación del programa en general. Ejemplo: PORTB=0x00; //Apagamos puerto b */ Inicializamos el puerto b para que no exista El efecto rebote o picos cuando incie el micro*/ PORTB=0x00; En HI TECH compiler for PIC18 Para iniciar en la programación de microcontroladores de PIC18 se debe de tener el software que nos proporciona gratis la compañía Microchip en su web, www.microchip.com, el programa es MPLAB IDE, al descargarlo e instalarlo, debemos ahora de descargar el software HI TECH for PIC18 en su página www.htsoft.com y lo instalamos. Al tener todo bien instalado, procedemos abrir el software MPLAB IDE. 11 Introducción a la programación en C en Hi tech Compiler for PIC18
  • 12. Introduccion a la programacion en HI-TECH 2011 Software MPLAB Como ya tenemos abierto el software vallamos a crear un proyecto en C, daremos click en <proyect Wizard> nos abrirá una venta donde nos saluda, daremos click en <next> aparecerá en seguida el paso uno a realizar que es seleccionar el microcontrolador a programar, en este caso vallamos a elegir el PIC18F2550, y damos click en <next> el paso dos es elegir el compilador a usar, buscaremos el compilador HI TECH en <Active toolsuite>, y después <next> el paso tres es buscar lugar donde se debe de guardar nuestro proyecto, entonces buscamos donde queramos archivar nuestro proyecto, y damos click en <next>, después nos mencionara que si queremos adherir proyectos existentes al nuestro, y finalizaremos. Ahora como nuestro lugar del proyecto no contiene ningún archivo, solo vallamos a agregar una hoja en blanco en <file><new>, después grabamos la hoja en blanco en el lugar del proyecto y lo agregamos al espacio de trabajo solo dar click derecho en <Source File> y agregamos la hoja en blanco que fue antes guardada, y listo hemos hecho una hoja de trabajo, estamos listo para empezar a programar. Lo primero que vamos a realizar es el parpadeo de un led, como se va utilizar un oscilador interno se debe de configurar correctamente los fuses del micro, para que este pueda ser calibrado con el Oscilador Interno. El PIC18F2550 contiene un modulo de USB que utiliza algunos bits de configuración para usarlo, en este caso se deben de configurar de una forma donde no se utilice estos bits o desactivarlos. 12 Introducción a la programación en C en Hi tech Compiler for PIC18
  • 13. Introduccion a la programacion en HI-TECH 2011 ///////////////////////////////////////////////////////////// //Configuracion para trabajar Con oscilador interno de 8Mhz __CONFIG(1,INTIO & FCMDIS & IESODIS & PLLDIV5 & PLLPOSTDIV2 & CPUDIV1 & USBOSC); ///////////////////////////////////////////////////////////// __CONFIG(2,VREGDIS & PWRTEN & BORDIS & WDTDIS & BORV45 & WDTPS32K); __CONFIG(3,PBDIGITAL & LPT1DIS & MCLREN); __CONFIG(4,STVRDIS & LVPDIS & ICPORTDIS & DEBUGDIS); __CONFIG(5,UNPROTECT); __CONFIG(6,UNPROTECT); __CONFIG(7,UNPROTECT); Para la utilización de los fueses y de los registros del Micro, se debe de agregar la librería estándar para uso de todos los módulos PIC18. #include<htc.c> Después definiremos la frecuencia de trabajo para la utilización de __delay_ms para ellos se usa la línea: ////////////////////////////// //Frecuencia FOSC 8Mhz ////////////////////////////// #define _XTAL_FREQ 8000000 Ahora ya podemos agregar la función principal, void main (void) como vimos en la configuración de bits (fuses) en __CONFIG(1,INTIO…) se utilizado un oscilador interno, para el uso de una frecuencia de 8Mhz se debe de inicializar el registro OSCCON. 13 Introducción a la programación en C en Hi tech Compiler for PIC18
  • 14. Introduccion a la programacion en HI-TECH 2011 Solo basta de cargar el valor de los 3 bits IRCF2:IRCF0. OSCCON=0x70; //Oscilador a 8Mhz NOP();NOP();NOP();NOP(); Se utiliza los parámetros NOP() para que pueda establecerse la frecuencia, para hacer el parpadeo de un led, se debe de configurar correctamente los registros TRIS, como vamos a hacer el parpadeo de un led en un solo pin del puerto B, los bits que representa al registro de puerto o cualquier registro solo, es poner el nombre del bit en este caso RB0. NOTA Siempre tenga a la mano la hoja de datos del microcontrolador que se vaya a trabajar para estar siempre informado de los registros y de los bits de cada uno de ellos. Para un ciclo perpetuo se usa la sentencia while. //////////////////////////////////////////////// //Configuración del Puerto B //// //////////////////////////////////////////////// TRISB=0x00; PORTB=0x00; /*************************************************/ while(1){ RB0=0; DELAY1S(); RB0=1; DELAY1S(); } Como se ve se usa una función de temporización de 1 segundo como el compilador no ofrece librerías de retardos tan altos, nosotros debemos de fabricar los, para ellos haremos la función DELAY1S(). Solo basta usar una variable y una sentencia for para repetir tiempos. ////////////////////////////// //FUNCION DE 1 SEGUNDO ////////////////////////////// void DELAY1S(void){ unsigned char time; for(time=0;time<100;time++){ __delay_ms(10); } } 14 Introducción a la programación en C en Hi tech Compiler for PIC18
  • 15. Introduccion a la programacion en HI-TECH 2011 El programa completo se muestra a continuación: //////////////////////////////////////////////////////// // BLINK EN PIN PB0 //Autor: george.manson.69 //Lugar: Mexico //Compilador: HI TECH PIC18 (LITE MODE) //////////////////////////////////////////////////////// #include<htc.h> ///////////////////////////////////////////////////////////// //Configuracion para trabajar Con oscilador interno de 8Mhz __CONFIG(1,INTIO & FCMDIS & IESODIS & PLLDIV5 & PLLPOSTDIV2 & CPUDIV1 & USBOSC); ///////////////////////////////////////////////////////////// __CONFIG(2,VREGDIS & PWRTEN & BORDIS & WDTDIS & BORV45 & WDTPS32K); __CONFIG(3,PBDIGITAL & LPT1DIS & MCLREN); __CONFIG(4,STVRDIS & LVPDIS & ICPORTDIS & DEBUGDIS); __CONFIG(5,UNPROTECT); __CONFIG(6,UNPROTECT); __CONFIG(7,UNPROTECT); ////////////////////////////// //Frecuencia FOSC 8Mhz ////////////////////////////// #define _XTAL_FREQ 8000000 float value; ////////////////////////////// //FUNCION DE 1 SEGUNDO ////////////////////////////// void DELAY1S(void){ unsigned char time; for(time=0;time<100;time++){ __delay_ms(10); } } ///////////////////////////////////////////////// //Funcion de interrupcion //Si no se usa simplemente no hacemos nada... //Esto sirve para direccionar lo los datos //en un lugar muy cercano al Inicio de la memoria //de datos //////////////////////////////////////////////// static void interrupt isr(void){} ////////////////////////////// //FUNCION PRINCIPAL ////////////////////////////// void main(void){ ///////////////////////////////////////////////// //Registro para Configurar el Oscilador Interno// ///////////////////////////////////////////////// OSCCON=0x70; NOP();NOP();NOP();NOP();//4Ciclos para estabilizar Frecuencia 15 Introducción a la programación en C en Hi tech Compiler for PIC18
  • 16. Introduccion a la programacion en HI-TECH 2011 ///////////////////////////////////////////////// /*************************************************/ //////////////////////////////////////////////// //Configuracion del Puerto B //// //////////////////////////////////////////////// TRISB=0x00; PORTB=0x00; /*************************************************/ while(1){ RB0=0; DELAY1S(); RB0=1; DELAY1S(); } } 16 Introducción a la programación en C en Hi tech Compiler for PIC18