SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
1.-Introduccion
El Hi-Tech para PIC es un compilador
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
5.-Relocaliza las variables locales para disminuir
el uso de la RAM.
6.-Una buena librería en C.
La optimización lleva a la reducción del tamaño
del código final para remover códigos
redundantes y modifica la versión del
ensamblador para reducir el número de
instrucciones para la mínima.
La más obvia desventaja de este compilador es
que solo las funciones de la librería estándar
para conversión de datos, manejo de la
memoria, operaciones matemáticas y básicas
E/S están proporcionadas.
Esto asume que el usuario fabricara las librerías
de manejo de los periféricos del
microcontrolador.
Diagrama de secuencia de inicialización de compilación
1.1.- Estructura de un Programa
Los procesadores PIC18 tienen algunas
localidades que contienen la configuración de
los bits llamados fuses estos bits pueden ser
establecidos usando el macro de configuración.
El macro tiene el formato:
__CONFIG(n,X);
Donde n es el número de registro de
configuración y X es el valor que es para
establecer la configuración de palabra. El macro
Hi-Tech Compiler for
Introducción a la
programación en C
PIC18
Introduccion a la programacion en HI-TECH 2011
2 Introducción a la programación en C en Hi tech Compiler for PIC18
es definido en <htc.h> hay que asegurar incluir
esta librería cada vez que iniciemos un proyecto
con un micro.
Ejemplo
Después podemos definir la velocidad de reloj:
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.
1.3 Constantes
El formato de constantes especifica su radix. Hi
tech C PRO para la familia PIC18 soporta el
Radiz estándar ANSI especifica cual establece
constantes binarios en código C.
En la tabla siguiente se observa como son
definidas las constantes.
Formato radix para Constantes
1.4 Tipos de Variables
Las variables pueden ser localizadas como uso
interno en cada función o si se desea ser una
variable visible en todas las funciones.
Por ejemplo:
La función puede usar la variable value ya que
es una variable global, mientras:
La función puede usar la variable value ya que
es una variable interna y solo ella puede usarla,
mientras si existiera otra función no puede
tomar el valor de la variable porque no existiría
en ella.
#include <htc.h>
__CONFIG(1, RC);
__CONFIG(2, BW8 & PWRTDIS & WDTPS1 & WDTEN);
__CONFIG(4, STVRDIS);
#define _XTAL_FREQ 4000000
//Oscilador Interno de 4MHZ
int value;
Void función(void){
Value=100;
}
Void función(void){
Int value;
Value=100;
}
Introduccion a la programacion en HI-TECH 2011
3 Introducción a la programación en C en Hi tech Compiler for PIC18
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;
07DB 0870 MOVF 0x70, W
07DC 3EB8 ADDLW 0xb8
07DD 00F0 MOVWF 0x70
07DE 0871 MOVF 0x71, W
07DF 1803 BTFSC 0x3, 0
07E0 3E01 ADDLW 0x1
07E1 3E0B ADDLW 0xb
07E2 00F1 MOVWF 0x71
var+=3000;
07DD 30B8 MOVLW 0xb8
07DE 07F0 ADDWF 0x70, F
07DF 1803 BTFSC 0x3, 0
07E0 0AF1 INCF 0x71, F
07E1 300B MOVLW 0xb
07E2 07F1 ADDWF 0x71, F
Introduccion a la programacion en HI-TECH 2011
4 Introducción a la programación en C en Hi tech Compiler for PIC18
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—
Introduccion a la programacion en HI-TECH 2011
5 Introducción a la programación en C en Hi tech Compiler for PIC18
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);
}
Introduccion a la programacion en HI-TECH 2011
6 Introducción a la programación en C en Hi tech Compiler for PIC18
Ejemplo:
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
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
void main(void){
Var=suma(10,20);
}
int suma(int x,int y){
int z;
z=x+y;
return z;
}
if (expr){
sent_1;
}[else
sent_2;]
Introduccion a la programacion en HI-TECH 2011
7 Introducción a la programación en C en Hi tech Compiler for PIC18
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.
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://
if (expr){
sent_1;
}[else if(expr2){
sent_2;
} else
sent_3;
]
If(A==10) B=0;
Else b=1;
If(A==0){
If(B==3) A=0;
}else
B=0;
Introduccion a la programacion en HI-TECH 2011
8 Introducción a la programación en C en Hi tech Compiler for PIC18
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
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.
switch(A){
case 0: B=10; break;
case 1: B=20; break;
case 2: B=40; break;
default: break;
}
Introduccion a la programacion en HI-TECH 2011
9 Introducción a la programación en C en Hi tech Compiler for PIC18
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);
for(n=0;n<10;n++){
Printf(n);
}
Introduccion a la programacion en HI-TECH 2011
10 Introducción a la programación en C en Hi tech Compiler for PIC18
return: sirve para devolver datos.
break: Sirve para salir de bucles como son for,while,do-while
goto: Provoca un salto incondicional
while(n<5 || x>10){
b=100;
a=10;
}
do{
b++;
printf(b);
}while(b<100);
Introduccion a la programacion en HI-TECH 2011
11 Introducción a la programación en C en Hi tech Compiler for PIC18
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;
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.
En HI TECH compiler for PIC18
Introduccion a la programacion en HI-TECH 2011
12 Introducción a la programación en C en Hi tech Compiler for PIC18
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.
Introduccion a la programacion en HI-TECH 2011
13 Introducción a la programación en C en Hi tech Compiler for PIC18
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.
/////////////////////////////////////////////////////////////
//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);
Introduccion a la programacion en HI-TECH 2011
14 Introducción a la programación en C en Hi tech Compiler for PIC18
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);
}
}
Introduccion a la programacion en HI-TECH 2011
15 Introducción a la programación en C en Hi tech Compiler for PIC18
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
Introduccion a la programacion en HI-TECH 2011
16 Introducción a la programación en C en Hi tech Compiler for PIC18
/////////////////////////////////////////////////
/*************************************************/
////////////////////////////////////////////////
//Configuracion del Puerto B ////
////////////////////////////////////////////////
TRISB=0x00;
PORTB=0x00;
/*************************************************/
while(1){
RB0=0;
DELAY1S();
RB0=1;
DELAY1S();
}
}

Contenu connexe

Tendances

Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03Hamiltonn Casallas
 
Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Hamiltonn Casallas
 
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Hamiltonn Casallas
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84guestf09168b
 
Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04Hamiltonn Casallas
 
Presentacion proyecto final micro2
Presentacion proyecto final micro2Presentacion proyecto final micro2
Presentacion proyecto final micro2Luis Zurita
 
Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07Hamiltonn Casallas
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1Luis Zurita
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Hamiltonn Casallas
 
Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01Hamiltonn Casallas
 

Tendances (20)

Ejemplos pic c
Ejemplos pic cEjemplos pic c
Ejemplos pic c
 
Proyecto4
Proyecto4Proyecto4
Proyecto4
 
PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84PROYECTOS CON PIC 16F84
PROYECTOS CON PIC 16F84
 
Micro2 tema 5
Micro2 tema 5Micro2 tema 5
Micro2 tema 5
 
Adc y usart pic16 f887
Adc y usart pic16 f887Adc y usart pic16 f887
Adc y usart pic16 f887
 
Taxímetro con Pic16F887
Taxímetro con Pic16F887Taxímetro con Pic16F887
Taxímetro con Pic16F887
 
Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84Aplicaciones con el pic 16f84
Aplicaciones con el pic 16f84
 
Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03Curso de microcontroladores capitulo 03
Curso de microcontroladores capitulo 03
 
Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08Curso de microcontroladores capitulo 08
Curso de microcontroladores capitulo 08
 
Micro2 tema 1
Micro2 tema 1Micro2 tema 1
Micro2 tema 1
 
Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02Curso de microcontroladores capitulo 02
Curso de microcontroladores capitulo 02
 
Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
 
Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04Curso de microcontroladores capitulo 04
Curso de microcontroladores capitulo 04
 
Presentacion proyecto final micro2
Presentacion proyecto final micro2Presentacion proyecto final micro2
Presentacion proyecto final micro2
 
Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07Curso de microcontroladores capitulo 07
Curso de microcontroladores capitulo 07
 
Curso Micro Tema 1
Curso Micro Tema 1Curso Micro Tema 1
Curso Micro Tema 1
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06
 
Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01Curso de microcontroladores capitulo 01
Curso de microcontroladores capitulo 01
 
Programación PIC16F84A
Programación PIC16F84AProgramación PIC16F84A
Programación PIC16F84A
 

Similaire à Introduccion a la programacion en c 1

Introduccion a la programacion en c 18
Introduccion a la programacion en c 18Introduccion a la programacion en c 18
Introduccion a la programacion en c 18fitomaster
 
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 f87xxJose Manuel Mansilla Carrasco
 
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 f87xxJose Manuel Mansilla Carrasco
 
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
 
Dialnet programando microcontroladorespicenlenguajec-4587553
Dialnet programando microcontroladorespicenlenguajec-4587553Dialnet programando microcontroladorespicenlenguajec-4587553
Dialnet programando microcontroladorespicenlenguajec-4587553RoxanneLamas2
 
PROGRAMACION EN LENGUAJE EMSAMBLADOR
PROGRAMACION EN LENGUAJE EMSAMBLADORPROGRAMACION EN LENGUAJE EMSAMBLADOR
PROGRAMACION EN LENGUAJE EMSAMBLADORSistemadeEstudiosMed
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacionrotflol
 
Clase 1- Programacion Lineal
Clase 1- Programacion LinealClase 1- Programacion Lineal
Clase 1- Programacion Linealkarlalopezbello
 
Estructura de un programa básico en c++
Estructura de un programa básico en c++Estructura de un programa básico en c++
Estructura de un programa básico en c++UVM
 
Dudas printf()
Dudas printf()Dudas printf()
Dudas printf()bad_666
 
Elementos básicos de un lenguaje de alto nivel
Elementos básicos de un lenguaje de alto nivelElementos básicos de un lenguaje de alto nivel
Elementos básicos de un lenguaje de alto nivelRicardo Axel
 

Similaire à Introduccion a la programacion en c 1 (20)

Introduccion a la programacion en c 18
Introduccion a la programacion en c 18Introduccion a la programacion en c 18
Introduccion a la programacion en c 18
 
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
 
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
 
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
 
Dialnet programando microcontroladorespicenlenguajec-4587553
Dialnet programando microcontroladorespicenlenguajec-4587553Dialnet programando microcontroladorespicenlenguajec-4587553
Dialnet programando microcontroladorespicenlenguajec-4587553
 
Turbo c
Turbo cTurbo c
Turbo c
 
PROGRAMACION EN LENGUAJE EMSAMBLADOR
PROGRAMACION EN LENGUAJE EMSAMBLADORPROGRAMACION EN LENGUAJE EMSAMBLADOR
PROGRAMACION EN LENGUAJE EMSAMBLADOR
 
Unidad II
Unidad IIUnidad II
Unidad II
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacion
 
Clase 1- Programacion Lineal
Clase 1- Programacion LinealClase 1- Programacion Lineal
Clase 1- Programacion Lineal
 
Estructura de un programa básico en c++
Estructura de un programa básico en c++Estructura de un programa básico en c++
Estructura de un programa básico en c++
 
PROGRAMACIÓN EN C
PROGRAMACIÓN EN CPROGRAMACIÓN EN C
PROGRAMACIÓN EN C
 
PROGRAMACION EN C
PROGRAMACION EN CPROGRAMACION EN C
PROGRAMACION EN C
 
Dudas printf()
Dudas printf()Dudas printf()
Dudas printf()
 
Transparencias4
Transparencias4Transparencias4
Transparencias4
 
Funciones
FuncionesFunciones
Funciones
 
Programacion c
Programacion cProgramacion c
Programacion c
 
Introduccion a C++.pdf
Introduccion a C++.pdfIntroduccion a C++.pdf
Introduccion a C++.pdf
 
Cesar ivan lenguaje_c
Cesar ivan lenguaje_cCesar ivan lenguaje_c
Cesar ivan lenguaje_c
 
Elementos básicos de un lenguaje de alto nivel
Elementos básicos de un lenguaje de alto nivelElementos básicos de un lenguaje de alto nivel
Elementos básicos de un lenguaje de alto nivel
 

Dernier

Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
Mapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMONICADELROCIOMUNZON1
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAJOSLUISCALLATAENRIQU
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Dr. Edwin Hernandez
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023RonaldoPaucarMontes
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingKevinCabrera96
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZgustavoiashalom
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesMIGUELANGEL2658
 
introducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesintroducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesgovovo2388
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdfvictoralejandroayala2
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónXimenaFallaLecca1
 
clases de porcinos generales de porcinos
clases de porcinos generales de porcinosclases de porcinos generales de porcinos
clases de porcinos generales de porcinosDayanaCarolinaAP
 
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfMODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfvladimirpaucarmontes
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptxBRAYANJOSEPTSANJINEZ
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILProblemSolved
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCarlosGabriel96
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 

Dernier (20)

Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
Mapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptxMapas y cartas topográficas y de suelos.pptx
Mapas y cartas topográficas y de suelos.pptx
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards Deming
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias locales
 
introducción a las comunicaciones satelitales
introducción a las comunicaciones satelitalesintroducción a las comunicaciones satelitales
introducción a las comunicaciones satelitales
 
tema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdftema05 estabilidad en barras mecanicas.pdf
tema05 estabilidad en barras mecanicas.pdf
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcción
 
clases de porcinos generales de porcinos
clases de porcinos generales de porcinosclases de porcinos generales de porcinos
clases de porcinos generales de porcinos
 
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfMODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 

Introduccion a la programacion en c 1

  • 1. 1.-Introduccion El Hi-Tech para PIC es un compilador 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 5.-Relocaliza las variables locales para disminuir el uso de la RAM. 6.-Una buena librería en C. La optimización lleva a la reducción del tamaño del código final para remover códigos redundantes y modifica la versión del ensamblador para reducir el número de instrucciones para la mínima. La más obvia desventaja de este compilador es que solo las funciones de la librería estándar para conversión de datos, manejo de la memoria, operaciones matemáticas y básicas E/S están proporcionadas. Esto asume que el usuario fabricara las librerías de manejo de los periféricos del microcontrolador. Diagrama de secuencia de inicialización de compilación 1.1.- Estructura de un Programa Los procesadores PIC18 tienen algunas localidades que contienen la configuración de los bits llamados fuses estos bits pueden ser establecidos usando el macro de configuración. El macro tiene el formato: __CONFIG(n,X); Donde n es el número de registro de configuración y X es el valor que es para establecer la configuración de palabra. El macro Hi-Tech Compiler for Introducción a la programación en C PIC18
  • 2. Introduccion a la programacion en HI-TECH 2011 2 Introducción a la programación en C en Hi tech Compiler for PIC18 es definido en <htc.h> hay que asegurar incluir esta librería cada vez que iniciemos un proyecto con un micro. Ejemplo Después podemos definir la velocidad de reloj: 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. 1.3 Constantes El formato de constantes especifica su radix. Hi tech C PRO para la familia PIC18 soporta el Radiz estándar ANSI especifica cual establece constantes binarios en código C. En la tabla siguiente se observa como son definidas las constantes. Formato radix para Constantes 1.4 Tipos de Variables Las variables pueden ser localizadas como uso interno en cada función o si se desea ser una variable visible en todas las funciones. Por ejemplo: La función puede usar la variable value ya que es una variable global, mientras: La función puede usar la variable value ya que es una variable interna y solo ella puede usarla, mientras si existiera otra función no puede tomar el valor de la variable porque no existiría en ella. #include <htc.h> __CONFIG(1, RC); __CONFIG(2, BW8 & PWRTDIS & WDTPS1 & WDTEN); __CONFIG(4, STVRDIS); #define _XTAL_FREQ 4000000 //Oscilador Interno de 4MHZ int value; Void función(void){ Value=100; } Void función(void){ Int value; Value=100; }
  • 3. Introduccion a la programacion en HI-TECH 2011 3 Introducción a la programación en C en Hi tech Compiler for PIC18 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; 07DB 0870 MOVF 0x70, W 07DC 3EB8 ADDLW 0xb8 07DD 00F0 MOVWF 0x70 07DE 0871 MOVF 0x71, W 07DF 1803 BTFSC 0x3, 0 07E0 3E01 ADDLW 0x1 07E1 3E0B ADDLW 0xb 07E2 00F1 MOVWF 0x71 var+=3000; 07DD 30B8 MOVLW 0xb8 07DE 07F0 ADDWF 0x70, F 07DF 1803 BTFSC 0x3, 0 07E0 0AF1 INCF 0x71, F 07E1 300B MOVLW 0xb 07E2 07F1 ADDWF 0x71, F
  • 4. Introduccion a la programacion en HI-TECH 2011 4 Introducción a la programación en C en Hi tech Compiler for PIC18 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—
  • 5. Introduccion a la programacion en HI-TECH 2011 5 Introducción a la programación en C en Hi tech Compiler for PIC18 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); }
  • 6. Introduccion a la programacion en HI-TECH 2011 6 Introducción a la programación en C en Hi tech Compiler for PIC18 Ejemplo: 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 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 void main(void){ Var=suma(10,20); } int suma(int x,int y){ int z; z=x+y; return z; } if (expr){ sent_1; }[else sent_2;]
  • 7. Introduccion a la programacion en HI-TECH 2011 7 Introducción a la programación en C en Hi tech Compiler for PIC18 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. 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:// if (expr){ sent_1; }[else if(expr2){ sent_2; } else sent_3; ] If(A==10) B=0; Else b=1; If(A==0){ If(B==3) A=0; }else B=0;
  • 8. Introduccion a la programacion en HI-TECH 2011 8 Introducción a la programación en C en Hi tech Compiler for PIC18 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 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. switch(A){ case 0: B=10; break; case 1: B=20; break; case 2: B=40; break; default: break; }
  • 9. Introduccion a la programacion en HI-TECH 2011 9 Introducción a la programación en C en Hi tech Compiler for PIC18 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); for(n=0;n<10;n++){ Printf(n); }
  • 10. Introduccion a la programacion en HI-TECH 2011 10 Introducción a la programación en C en Hi tech Compiler for PIC18 return: sirve para devolver datos. break: Sirve para salir de bucles como son for,while,do-while goto: Provoca un salto incondicional while(n<5 || x>10){ b=100; a=10; } do{ b++; printf(b); }while(b<100);
  • 11. Introduccion a la programacion en HI-TECH 2011 11 Introducción a la programación en C en Hi tech Compiler for PIC18 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; 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. En HI TECH compiler for PIC18
  • 12. Introduccion a la programacion en HI-TECH 2011 12 Introducción a la programación en C en Hi tech Compiler for PIC18 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.
  • 13. Introduccion a la programacion en HI-TECH 2011 13 Introducción a la programación en C en Hi tech Compiler for PIC18 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. ///////////////////////////////////////////////////////////// //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);
  • 14. Introduccion a la programacion en HI-TECH 2011 14 Introducción a la programación en C en Hi tech Compiler for PIC18 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); } }
  • 15. Introduccion a la programacion en HI-TECH 2011 15 Introducción a la programación en C en Hi tech Compiler for PIC18 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
  • 16. Introduccion a la programacion en HI-TECH 2011 16 Introducción a la programación en C en Hi tech Compiler for PIC18 ///////////////////////////////////////////////// /*************************************************/ //////////////////////////////////////////////// //Configuracion del Puerto B //// //////////////////////////////////////////////// TRISB=0x00; PORTB=0x00; /*************************************************/ while(1){ RB0=0; DELAY1S(); RB0=1; DELAY1S(); } }