Está en la página 1de 6

Microprocesadores - UAO

Objetivos
Programación de la Familia
• Codificar aplicaciones en lenguaje C para la Familia
PIC16F87X en Lenguaje C PIC16F87X con base en el compilador HI-TECH®
Universal ToolSuite.
Compilador HI-TECH® Universal ToolSuite • Estudiar la sintaxis básica de la programación en
lenguaje C.

Prof.: Carlos Héctor Cruz Vergara 1 Prof.: Carlos Héctor Cruz Vergara 2

Se necesita un Compilador Cruzado de C (C Cross Compiler) para


generar código ejecutable por el µC desde lenguaje C. Para desarrollar aplicaciones desde lenguaje C, para
Un Compilador Cruzado = Compilador Multiplataforma, corre la Familia PIC16F87X, se usarán tres herramientas.
en una máquina (un PC) pero produce código ejecutable para
otra máquina (un µC).
Entorno de desarrollo:
MPLAB IDE V8.53
Compilador
Cruzado
Código Ejecutable Compilador de C:
HI-TECH® Universal ToolSuite

Simulador:
MPLAB SIM
Normalmente, los compiladores cruzados hacen modificaciones y
extensiones al lenguaje para programar las características del uC target

Prof.: Carlos Héctor Cruz Vergara 3 Prof.: Carlos Héctor Cruz Vergara 4

Java es un lenguaje de programación y una plataforma


Comilador: HI-TECH® informática desarrollada a partir de C++.
Lenguaje C++: Programación Orientada a Objetos
• Este software fue diseñado por HI-TECH® ahora subsidiaria Creado por: Bjarne Stroustrup.
de Microchip®. Es la herramienta de desarrollo que se Fecha :1979
utilizará para codificar y depurar las aplicaciones que se
implementarán con la familia PIC16F87X.
• Es un compilador cruzado de lenguaje C que soporta todos • Plataforma informática
los procesadores de Microchip®. Se instala automáticamente • Clases
¡Si programas en JAVA,
• Máquinas virtuales
con el MPLAB IDE V8.53. programas en C!
• Corre en tres modos de operación: Lite (free), Evaluación y
PRO. El modo Lite está disponible sin licencia para cualquier
usuario, el modo de Evaluación está disponible durante
cuarenta días y la versión PRO requiere licencia de JAVA
operación (requiere un número de serie para habilitarlo).

Prof.: Carlos Héctor Cruz Vergara 5 Prof.: Carlos Héctor Cruz Vergara 6

Prof.: Carlos Héctor Cruz Vergara 1


Microprocesadores - UAO

Algunos elementos de C++ heredados por Java


C es un lenguaje de programación de Propósito
General basado en Funciones.
if for Propósito General:
else • C permite programar Computadores, PLCs, µC…
• Funciona en muchos Sistemas Operativos y plataformas de alto nivel.
define main do

void continue Una Función es un conjunto o agrupación de Comandos,


do-while Sentencias o Instrucciones encerradas entre llaves: { … }

swich while • Las Funciones pueden recibir y/o retornar parámetros.


• Se codifican una vez y pueden ser llamas desde donde
break se necesiten.
include
Prof.: Carlos Héctor Cruz Vergara 7 Prof.: Carlos Héctor Cruz Vergara 8

Todo lenguaje se compone de un conjunto de Todo programa en lenguaje C debe incluir la función main().
elementos que le dan su esencia.
En esta conferencia se abordarán: main() es la función principal, donde inicia la ejecución del programa.

Tipo del parámetros retornado.


main
void main(void){
void significa que NO
Reglas de Variables y
// Conjunto Recibe / Retorna parámetros
sintasis Constantes // de
C }
// Sentencias
Tipo del parámetro recibido

Funciones Comentarios de Línea:


Operadores
de usuario Inician con doble barra ( // )

9 10

Las Variables son elementos del lenguaje que permiten guardar


datos dinámicos. C soporta variables de diferentes Tipos. Las Constantes son representaciones de valores (enteros,
El Compilador HI-TECH soporta variables Enteras de 1, 8, 16, 24 y 32 bits. flotantes...) utilizados para inicializar variables
HI-TECH soporta los siguientes formatos para
especificar constantes enteras

• El signo por defecto se muestra subrayados. • El formato binary es NO estándar en C.


• Los tipo bit y short long son tipos NO estándar de C.

Prof.: Carlos Héctor Cruz Vergara 11 Prof.: Carlos Héctor Cruz Vergara 12

Prof.: Carlos Héctor Cruz Vergara 2


Microprocesadores - UAO

Toda variable de C se debe declarar antes de usarla. En su


declaración se pueden inicializar, excepto las variables tipo bit. El compilador HI-TECH C soporta Variables de Tipo Float
• Variables Locales: Se declaran dentro de una función. (flotantes) de 24 y 32 bits para representar números muy
• Variables Globales: Se declaran fuera de toda función. grandes / pequeños con parte decimal.
Utiliza el formato IEEE 754 de 32 o el modificado de 24.
Ejemplos:
• signed int B = -1250;
• unsigned char A = 0x5A;
• bit Band; //NO se puede inicializar
Ejemplos:
float A = -20.457, a = 20457e-3;
¡C distingue entre mayúsculas y minúsculas!
Las variables A y a son distintas!!! double B = 0.012356, b = -12356e-6;

13 Prof.: Carlos Héctor Cruz Vergara 14

¿Qué se ve en la variable Contador?

/* Ejemplo 1: Mi Primer Programa en Lenguaje C


* CODIFICÓ: Carlos Héctor Cruz Vergara Comentarios de Bloque:
* Compilador: HI-TECH Universal ToolSuite /* … */
**********************************************/
void main(void){
unsigned char Contador = 0x01; //Variable local
while(1){ //Ciclo infinito.
Contador = Contador <<= 1; //Contador = << 1
if(Contador == 0x00){
Compilador HI-TECH Universal ToolSuite Contador = 0x01; //Propósito? Las sentencias deben terminar con
} Punto y coma ( ; )

Programa Fuente en Lenguaje C }


}

Operadores:
• Asignación: =
• Manejo de bits: <<
• Relación: ==
Prof.: Carlos Héctor Cruz Vergara 15 16

Observe que el Diagrama de Flujo o Fujograma del programa


anterior, tiene la estructura básica de una aplicación para µC.
Para incluir características del Procesador Target en un programa
fuente de lenguaje C, se debe incluir su Archivo de Cabecera.

Función main Para el compilador de HI-TECH Universal ToolSuite


Se ejecuta una
sola vez

#include <htc.h>
Ejecuta el proceso
repetidamente

Prof.: Carlos Héctor Cruz Vergara 17 Prof.: Carlos Héctor Cruz Vergara 18

Prof.: Carlos Héctor Cruz Vergara 3


Microprocesadores - UAO

/* Ejemplo 2: Los Retardos (DELAYS)


Codificó: Carlos Héctor Cruz Vergara Los µC modernos se diseñan con varios Modos de Operación que
Fclk: 4 MHz. permiten optimizar el desempeño del dispositivo en cada aplicación.
Compilador: HI-TECH Universal ToolSuite
**************************************************/ Los µCs disponen de Bits de Configuración para seleccionarlos.
#include <htc.h>

#define _XTAL_FREQ 4000000 Requerida para ajustar retardos en seg.

void main(void){
Nota de Catálogo
La Familia PIC16F87X dispone de once Bits de Configuración
NOP(); // 4Tclk = 1CM (Ciclo de Máquina)
_delay(300); //300 CMs La configuración básicas se incluye con la Macro:
__delay_us(150); // 150 us.
__CONFIG(FOSC_XT & WDTE_OFF & PWRTE_ON & LVP_OFF);
__delay_ms(4); // 4 ms.
}

19 Prof.: Carlos Héctor Cruz Vergara 20

/* Ejemplo 3: Las Tablas (Arreglos de Constantes)


Codificó: Carlos Héctor Cruz Vergara
Fclk: 4 MHz.
Plantilla básica para codificar un programa en lenguaje C Compilador: HI-TECH Universal ToolSuite
con el compilador de HI-TECH Universal ToolSuite: **************************************************/
#include <htc.h>
__CONFIG(FOSC_XT & WDTE_OFF & PWRTE_ON & LVP_OFF);
#define _XTAL_FREQ 8000000
void main(void){
#include <htc.h>
TRISC = 0x00; //Puerto de Salida
__CONFIG(FOSC_XT & WDTE_OFF & PWRTE_ON & LVP_OFF); const char ResorticoL4p2[]={0x03, 0x07, 0x0F, 0x1E,
0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0xE0,
void main(void){ 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07};
// Cuerpo del Programa unsigned char i; //Variable local
do{
} for(i = 0; i <= 15; i++){ Qué se ve en el
PORTC = ResorticoL4p2[i]; puerto de salida?
__delay_ms(500); // 0.5 s.
}
} while(1); // ciclo infinito
}

21 22

Ejercicios: Cree un proyecto en MPLAB IDE para:

1. Compile la plantilla básica para comprobar la instalación


del compilador HI-TECH Universal ToolSuite.
2. Editar, compilar y simular el Ejemplo 3.

Prof.: Carlos Héctor Cruz Vergara 23 Prof.: Carlos Héctor Cruz Vergara 24

Prof.: Carlos Héctor Cruz Vergara 4


Microprocesadores - UAO

Ejercicio: Codifique el siguiente diseño en lenguaje C,


si Fclk = 4 MHz.
Convenciones:
• R0, R1, A son variables de usuario.
• LEDS: Puerto de salida (8 bits)

Anexos:

Prof.: Carlos Héctor Cruz Vergara 25 Prof.: Carlos Héctor Cruz Vergara 28

El while es un lazo del tipo Consulte Luego Ejecute,


porque al inicio del lazo se evalúa la condición (Cond):
Un Lazo es una estructura algorítmica que Si Cond es Verdadera / Falsa => El lazo SI / NO repite.
repite un conjunto de sentencias.
while(Cond){
// Sentencias
El lenguaje C tiene tres sentencias // del
para codificar lazos: // while
• while
• do-while };
• for

Prof.: Carlos Héctor Cruz Vergara 29 Prof.: Carlos Héctor Cruz Vergara 30

Una condición (Cond ) en C puede ser cualquier


expresión válida, que C pueda evaluar. Operadores de Relación: Permiten implementar Cond
• Mayor que (>) • Mayor o igual (>=)

Si al evaluar Cond resulta: • Menor que (<) • Menor o igual (<=)


1. Cond ≠ 0 => es Verdadera. • Igual (==) • Diferente (!=)
2. Cond = 0 => es Falsa

Ejemplos: Ejemplos:
1. while( 2-5 ) => Cond = -3 => Falsa 1. while( 2<5 ) => Cond Verdadera (Ciclo Infinito)
2. while( 1 ) => Cond = 1 => Verdadera (Lazo infinito) 2. while( A <= 10 )
3. while( A = B+8 ) 3. while( B+8 != 0 )
• Si B = 8 => Cond = 0 => Falsa
• Si B ≠ 8 => Cond ≠ 0 => Verdadera
31 Prof.: Carlos Héctor Cruz Vergara 32

Prof.: Carlos Héctor Cruz Vergara 5


Microprocesadores - UAO

Operadores Aritméticos
• Son operadores binarios = Tienen dos operandos (uno a la Operadores de Relación
izquierda y otro a la derecha). • Son operadores binarios = Tienen dos operandos (uno a la
• Se evalúan de izquierda a derecha. izquierda y otro a la derecha.
• Se evalúan de izquierda a derecha.

• Suma (+) • Resta (-)


• Multiplicación (∗) • División (/) • Mayor que (>) • Mayor o igual (>=)
• Módulo o residuo (%). • Menor que (<) • Menor o igual (<=)
• Igual (==) • Diferente (!=)
Notas:
• La división entre enteros es entera, trunca la parte fraccionaria.
• % NO aplica a float ni double. Notas:

• La expresión “x % y;” es cero cuando y divide a x. Su signo, para • Por definición, el valor numérico de una expresión de Relación es
operandos con signo, depende de la máquina. 1/0 si la relación es Verdadera/Falsa.

33 34

Operadores de Lógicos
• Son operadores binarios = Tienen dos operandos (uno a la
Operadores Para el Manejo de Bits.
izquierda y otro a la derecha.
• Se evalúan de izquierda a derecha.
• AND (&) • OR (|)
• XOR (^) • Complemento (~)
• And (&&) • Or (||)
• Corrimiento izquierdo (<<)
• Negación (!)
• Corrimiento Derecho (>>)

Notas:
Notas:
• Por definición, el valor numérico de una expresión de lógica es 1/0
si la relación es Verdadera/Falsa. • Sólo aplican sobre tipos char e int con o sin signo.
• “~” es un operando unario = Tiene un operando (está a lsu
derecha). Los otros cinco son operadores binarios.

35 36

Prof.: Carlos Héctor Cruz Vergara 6

También podría gustarte