3. DESARROLLO
LENGUAJE
Lenguaje C PIC C Compiler.
MICROCONTROLADORES
PIC 18F2550
PIC 18F4550
LENGUAJE
Lenguaje C PIC C Compiler.
MICROCONTROLADORES
PIC 18F2550
PIC 18F4550
Luis David Narváez
7. FAMILIAS DE
MICROCONTROLADORES
LAS GAMAS DE LOS PIC
Microchip dispone de cinco gamas de Microcontroladores
de 8 bits para adaptarse a las necesidades de la mayoría de
los clientes potenciales:
GAMA ENANA: PIC12FXXX
GAMA BAJA O BASICA: PIC16C5X
GAMA MEDIA: PIC 16FXXX
GAMA ALTA: PIC17CXXX
GAMA SUPERIOR: PIC18FXXX
LAS GAMAS DE LOS PIC
Microchip dispone de cinco gamas de Microcontroladores
de 8 bits para adaptarse a las necesidades de la mayoría de
los clientes potenciales:
GAMA ENANA: PIC12FXXX
GAMA BAJA O BASICA: PIC16C5X
GAMA MEDIA: PIC 16FXXX
GAMA ALTA: PIC17CXXX
GAMA SUPERIOR: PIC18FXXX
Luis David Narváez
8. GAMAS DE LOS PIC
GAMA SUPERIOR: PIC18FXXX
Tecnología CMOS.
MCU estática con convertidor A/D.
Pila de 32 niveles, una palabra de instrucción de 16
bits, múltiples interrupciones internas y externas, un
set de 77 instrucciones.
Alto rendimiento de 10 MIPS (Millones de
Instrucciones por Segundo) para una MCU.
GAMA SUPERIOR: PIC18FXXX
Tecnología CMOS.
MCU estática con convertidor A/D.
Pila de 32 niveles, una palabra de instrucción de 16
bits, múltiples interrupciones internas y externas, un
set de 77 instrucciones.
Alto rendimiento de 10 MIPS (Millones de
Instrucciones por Segundo) para una MCU.
Luis David Narváez
10. EL OSCILADOR
• INTOSC Oscilador interno de precisión (dos modos)
• RC Oscilador con resistencia y condensador (dos modos)
• XT Cristal / Resonador
• HS Cristal de alta velocidad / Resonador.
• LP Cristal para baja frecuencia y bajo consumo de potencia.
• EC Reloj externo
Nota: En el momento de programar o “quemar” el
microcontrolador se debe especificar el tipo de oscilador que
se usa. Esto se hace a través de unos bits llamados: “fusibles
de configuración”.
• INTOSC Oscilador interno de precisión (dos modos)
• RC Oscilador con resistencia y condensador (dos modos)
• XT Cristal / Resonador
• HS Cristal de alta velocidad / Resonador.
• LP Cristal para baja frecuencia y bajo consumo de potencia.
• EC Reloj externo
Nota: En el momento de programar o “quemar” el
microcontrolador se debe especificar el tipo de oscilador que
se usa. Esto se hace a través de unos bits llamados: “fusibles
de configuración”.
Luis David Narváez
21. C ESPECÍFICO PARA LOS PIC
Las principales diferencias entre compiladores residen en las directivas
(preprocessor commands) y en las funciones integradas (built-in
functions).
Directivas de Preprocesado más habituales:
#ASM Las líneas entre estas dos directivas deben ser
instrucciones
#ENDASM Ensamblador que se insertan tal y como aparecen.
#BIT id = x.y Se crea una variable tipo bit correspondiente al bit y del
byte x en memoria.
#BYTE id = x Se crea una variable y se sitúa en el byte x en memoria.
Si ya existía esa variable, se coloca físicamente en la
posición especificada.
Las principales diferencias entre compiladores residen en las directivas
(preprocessor commands) y en las funciones integradas (built-in
functions).
Directivas de Preprocesado más habituales:
#ASM Las líneas entre estas dos directivas deben ser
instrucciones
#ENDASM Ensamblador que se insertan tal y como aparecen.
#BIT id = x.y Se crea una variable tipo bit correspondiente al bit y del
byte x en memoria.
#BYTE id = x Se crea una variable y se sitúa en el byte x en memoria.
Si ya existía esa variable, se coloca físicamente en la
posición especificada.
Luis David Narváez
22. C ESPECÍFICO PARA LOS PIC
#DEFINE id texto El identificador se sustituye por el texto adjunto.
#DEVICE chip Define el micro para el que se escribe el código.
#FUSES options Define la palabra de configuración para la grabación
del microcontrolador.
#INCLUDE <fichero> Se incluye el texto del fichero especificado en el
#INCLUDE “fichero” directorio o fuera de él.
#INLINE La función que sigue a esta directiva se copia en
memoria de programa cada vez que se le llame.
Puede servir para mejorar la velocidad.
#SEPARATE La función que sigue a esta directiva se implementa
de manera separada (no INLINE). De esta manera
se ahorra ROM
#DEFINE id texto El identificador se sustituye por el texto adjunto.
#DEVICE chip Define el micro para el que se escribe el código.
#FUSES options Define la palabra de configuración para la grabación
del microcontrolador.
#INCLUDE <fichero> Se incluye el texto del fichero especificado en el
#INCLUDE “fichero” directorio o fuera de él.
#INLINE La función que sigue a esta directiva se copia en
memoria de programa cada vez que se le llame.
Puede servir para mejorar la velocidad.
#SEPARATE La función que sigue a esta directiva se implementa
de manera separada (no INLINE). De esta manera
se ahorra ROM
Luis David Narváez
23. C ESPECÍFICO PARA LOS PIC
#ORG start Sitúa el código a partir de una determinada posición de
la memoria de programa
#INT_xxxx Indica que la función que sigue es un programa de
tratamiento de la interrupción xxxx.
#INT_GLOBAL Indica que la función que sigue es un programa
genérico de tratamiento de interrupción. No se incluye
código de salvaguarda de registros ni de recuperación
como cuando se usa #INT_xxxx.
#PRIORITY ints Establece un orden de prioridad en las interrupciones.
#USE DELAY (clock = frecuencia en Hz) Define la frecuencia del oscilador
que se va a utilizar, que se emplea para realizar los
cálculos para funciones integradas de retardo.
#ORG start Sitúa el código a partir de una determinada posición de
la memoria de programa
#INT_xxxx Indica que la función que sigue es un programa de
tratamiento de la interrupción xxxx.
#INT_GLOBAL Indica que la función que sigue es un programa
genérico de tratamiento de interrupción. No se incluye
código de salvaguarda de registros ni de recuperación
como cuando se usa #INT_xxxx.
#PRIORITY ints Establece un orden de prioridad en las interrupciones.
#USE DELAY (clock = frecuencia en Hz) Define la frecuencia del oscilador
que se va a utilizar, que se emplea para realizar los
cálculos para funciones integradas de retardo.
Luis David Narváez
24. GESTION DE PUERTOS I/O
REGISTROS –VARIABLES EN LA MEMORIA RAM:
Se definen los puertos como variables que se colocan en las
posiciones reales en la memoria RAM de datos. (Memory
Organization)
FUNCIONES ESPECÍFICAS DEL COMPILADOR
Se definen la dirección de los datos si es necesario. Uso de
funciones propias del compilador.
#USE FAST_IO #USED FIXED_IO #USE STANDARD_IO
Luis David Narváez
REGISTROS –VARIABLES EN LA MEMORIA RAM:
Se definen los puertos como variables que se colocan en las
posiciones reales en la memoria RAM de datos. (Memory
Organization)
FUNCIONES ESPECÍFICAS DEL COMPILADOR
Se definen la dirección de los datos si es necesario. Uso de
funciones propias del compilador.
#USE FAST_IO #USED FIXED_IO #USE STANDARD_IO
25. NOTA IMPORTANTE
El Registro TRIS controla la dirección de las líneas del
puerto a configurar.
Un “cero” en el bit correspondiente al pin lo
configura como salida y pone el contenido de la
memoria (latch) en el pin seleccionado.
Mientras que un “uno” lo configura como entrada y
pone el correspondiente circuito de salida en alta
impedancia.
El Registro TRIS controla la dirección de las líneas del
puerto a configurar.
Un “cero” en el bit correspondiente al pin lo
configura como salida y pone el contenido de la
memoria (latch) en el pin seleccionado.
Mientras que un “uno” lo configura como entrada y
pone el correspondiente circuito de salida en alta
impedancia.
Luis David Narváez
26. DEFINIENDO REGISTROS RAM
PORTX TRISX:
Directiva #BYTE
#BYTE TRISB = 0x93 // Define la variableTRISB
#BYTE PORTB = 0x81 // Define la variable PORTB
Estas variables permiten controlar los puertos y se pueden
utilizar en asignaciones:
Luis David Narváez
PORTX TRISX:
Directiva #BYTE
#BYTE TRISB = 0x93 // Define la variableTRISB
#BYTE PORTB = 0x81 // Define la variable PORTB
Estas variables permiten controlar los puertos y se pueden
utilizar en asignaciones:
27. DEFINIENDO REGISTROS RAM
El compilador de CCS incorpora una serie de funciones
integradas que permite manejar los bits de una variable.
Luis David Narváez
El compilador de CCS incorpora una serie de funciones
integradas que permite manejar los bits de una variable.
28. DEFINIENDO REGISTROS RAM
Se puede trabajar directamente con una variable de un (1) bit.
Luis David Narváez
Se puede trabajar directamente con una variable de un (1) bit.
34. PARPADEO DE LED’s
Enunciado: Encender y apagar 4 LEDs conectados a los
pines RB0, RB1, RB2 y RB3 con una temporización de
500ms, empleando las diferentes formas de configurar los
pines en Lenguaje C.
Enunciado: Encender y apagar 4 LEDs conectados a los
pines RB0, RB1, RB2 y RB3 con una temporización de
500ms, empleando las diferentes formas de configurar los
pines en Lenguaje C.
Luis David Narváez
36. PARPADEO DE LED’s
Reto: Encender uno a la vez los pines del PORTD del
Microcontrolador 18f4550
Reto: Encender uno a la vez los pines del PORTD del
Microcontrolador 18f4550
Luis David Narváez