Está en la página 1de 30

MICROPROCESADORES

MICROPROCESADORES
Compilador CCS en lenguaje C

Prof. M.Sc. Rubén Darío Hernández B.

2018

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

INTRODUCCIÓN

- El compilador CCS fue creado para microcontroladores PIC MCU,


para buscar la máxima optimización del compilador con este tipo de
dispositivos.

- C como lenguaje de programación se caracteriza por tener una


estructura definida y una serie de expresiones propias (instrucciones),
esta sintaxis de denominan las palabras reservadas del lenguaje.

- La estructura de programación en C se puede delimitar por el uso de


Librerías, uso de funciones, uso de variables globales y locales,
operadores relacionales del tipo lógico o aritmético, expresiones de
tipo condicional y ciclos condicionales entre otros.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ESTRUCTURA DE UN PROGRAMA EN PICC

Para escribir un programa en C bajo PICC se debe considerar una serie de


estructuras básicas como:

- Directivas de preprocesado: Controlan la conversión del programa a


código máquina por parte del compilador
- Programas o Funciones: Conjunto de instrucciones. Puede haber uno o
varios; en cualquier caso siempre debe haber uno definido como
principal mediante la inclusión de la llamada main().
- Instrucciones: indican como se debe comportar el PIC en todo
momento.
- Comentarios: permiten describir lo que significa cada línea del
programa.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

#include <18f4550.h>
#use delay(clock=4000000)
#fuses XT, NOWDT
#use standard_io B

int var0 =0; //inicial la varible

#int_TIMER0 //declara la función


void TIMER0_isr (void)
{
var0++; //incrementa la variable en 1
if(var0==1)output_bit(PIN_B0,1); //coloca el bit B0 en alto
else output_bit(PIN_B0,0); //coloca el bit Bo en bajo
set_timero (0x110);
}

void main() { //declara la function prinicpal


setup_timer_0 RTCC_INTERNAL TECC_DIV_”;
set_timer0 (0x10);
enable_interrupts (INT_TIMER0);
enable_interrupts (global);
while (1);
}

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

CONFIGURACIONES BÁSICAS EN PICC

#DEVICE chip, permite definir el PIC que se utilizará para la compilación

#device PIC12f675

#FUSES options, la cual permita definir la palabra de configuración para


programar un PIC. Por ejemplo, en el PIC12f675 las opciones posibles son:
LP,XT,HS,RC,NOWDT,WDT,NOPUT,PUT,PROJECT,NOPROJECT.

#device PIC12f675
#fuses XT, NOWDT, PU, NOPROJECT

#INCLUDE “filename”, permite incluir el fichero en el programa

#include <12f675.h>
#fuses XT, NOWDT, PUT, NOPROJECT

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

#USE DELAY (CLOCK=SPEED), permite definir las frecuencias del


oscilador del PIC, el compilador lo utiliza para realizar cálculos de tiempo.
Se puede utilizar M, MHZ, K y KHZ para definir la frecuencia.

#INCLUDE <12f675.h>
#use delay(clock=4000000)

#ASM y #ENDASM, permite utilizar código ensamblador en el programa


en C. Se utiliza al inicio y al final del bloque ensamblador.

#asm
bsf TATUS,RP0
Movlw 0x8
Movwf PORTB
Bcf STATUS,RP0
#endasm

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ENTORNO DE TRABAJO
COMANDO DE
MANEJO DE BARRA DE
FICHEROS COMANDOS

BARRA DE
SUBCOMANDOS

PESTAÑA DEL
PROGRAMA

ZONA DE
CÓDIGO

BARRA DE
VENTANAS
AUXILIARES

BARRA DE INFORMACIÓN

MACROS

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

DESCRIPCIÓN DEL MICROCONTROLADOR 12F675

- Principales características del pic 12f675


o Integrado pequño de 8 pines (6 pines configurables de I/O)
o Oscilador interno de 4 Mhz
o Conversor A/D de cuatro canales a 10 bits
o Comparador análogico
o Dos temporizadores (Timmers)
o Opera a 2v como mínimo hasta 5 V máximo

- Memoria
o 1024 palabras de memoria programable y reprogramable
o 64 bytes de RAM
o 128 bytes de datos de almacenamiento en la EEPROM.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Data Sheet

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

CARACTERISTICAS DEL MICROCONTROLADOR 12F675

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

CARACTERISTICAS DEL MICROCONTROLADOR 12F675

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

CARACTERISTICAS DEL MICROCONTROLADOR 12F675

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

ENTRADA Y SALIDA DE DATOS

- La arquitectura de los puertos que manejan los pic son basadas en un


registro y un tri-state de configuración.
- Inicialmente se define la dirección de flujo de información por medio
de tri-state de adentro hacia el exterior del pic (salida) o del exterior
hacia su interior (entrada), solo basta indicar bit a bit o en conjunto su
funcionamiento, por ejemplo:
o Un uno (1) indica que el bit o bits seleccionados actúan como
entradas.
o Un cero (0) indica que el bit o bits seleccionados actúan como
salidas.
- El nombre asignado a cada tri-state de cada puerto es con la palabra
TRIS unida con la letra que define el puerto que se desea usar (A, B,
C, etc.) por ejemplo:

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

TRISB = 0; //Todo el puerto B (RBO a RB7) es configurado como salida

TRISC = 0xf0; // el puerto C es configurado en su parte alta (RC4 a RC7)


como entrada y la parte baja (RC0 a RC3) como salida (hexadecimal
0x0f=11110000 en binario).

TRISD = 0xff; //Puerto D configurado completamente como entrada.

TRISB = 0xAA; //Puerto B con pines pares como salida e impares como
entrada;

TRISB = 0x55; // Puerto B con pines pares como entrada e impares como
salida.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

GESTIÓN DE PUERTOS EN C

En lenguaje C se pueden gestionar los puertos de dos formas:

- Se declaran los registros TRISX y PORTX definiendo su posición en la


memoria RAM como variables de C.

- Utilizando las directivas especificas del compilador (#USE FAST_IO,


#USE FIXED_IO, #USE ESTÁNDAR_IO)

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

GESTIÓN DE PUERTOS EN C A TRAVÉS DE LA RAM

Se definen los registros PORTx y TRISx como bytes y se sitúan en la


posición correspondiente de la memoria RAM. La directiva utilizada en C
es # BYTE:

#BYTE variable = constante;

#BYTE TRISA = 0x85 //variables TRISA en 85h


#BYTE PORTA = 0x05 //variables PORTA en 05h
#BYTE TRISB = 0x86 //variables TRISB en 86h
#BYTE PORTB = 0x06 //variables PORTB en 06h
#BYTE TRISC = 0x87 //variables TRISC en 87h
#BYTE PORTC = 0x07 //variables PORTB en 07h

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Una vez definidas estas variables se pueden configurar y controlar los


puertos a través de los comandos de asignación.

TRISA = 0xFF; //8 bits de entrada


TRISB = 0x00; //8 bits de salida
TRISC = 0x0F; //4 bits mas significativos de salida y
// los 4 menos significativos de entrada

Escritura de puertos:

PORTB = 0x0A; //salida de datos 00001010 por el puerto B

Lectura de puertos:

Valor = PORTB; //asigna el dato del puerto B a la variable valor

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Manejo de sentencias:

TRISD = 0x0F;
If (PORTD & 0xOF) PORTD |= 0xA0; //comprueba los 4 bits de
//de menor peso del puerto D
//si son 1111 saca por los 4 bits
//más significativos el dato
//1010

Existen unas funciones de C que permiten trabajar bit a bit con los
registros o variables definidas previamente. Estas funciones son las
siguientes:

bit_clear(var,bit); //pone a 0 el bit especifico (0 a 7) de la variable


bit_set(var, bit); //pone a 1 el bit especifico (0 a 7) de la variable
bit_test(var,bit); //Muestra el bit especifico (0 a 7) de la variable
swap(var); //Intercambia los bits de (5 a 7) por los bits (0 a 4)

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Se puede declarar un bit de un registro con una variable mediante la


directiva #BIT, permitiendo trabajar directamente con el terminal:

#BIT nombre = posición.bit

#bit RB4 = 0x06.4 //PORTA=0x86


RB4 = 0;

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

GESTIÓN DE PUERTOS EN C A TRAVÉS DE DIRECTIVAS

El compilar ofrece funciones predefinidas para trabajar con punteros.


Estas funciones son:

output_X(valor); //Por el Puerto correspondiente saca el valor (0-255)


input_X(); //Se obtiene el valor en el puerto correspondiente
set_tris_X(valor); //Carga el registro TRISx con el valor (0-255)
port_b_pullups(valor); //Mediante valor = TRUE o valor = FALSE
//habilita o deshabilita las resistencias de
//pull-up en PORTB
get_trisX() //Devuelve el valor del registro TRISx

Donde Z es la inicial correspondiente al puerto (A, B, C, …)


output_A(0Xff); //saca por el Puerto A el valor 1111
valor = input_B(); //Lee el valor del Puerto B
set_tris_C(0xFF); //Configura el Puerto C: Co-C3 input, C4-C7 output

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Existen una seria de funciones asociadas a un terminal o pin. El parámetro


pin se define en un fichero include (por ejemplo, 18f4550.h) con un
formato del tipo PIN_Xn, donde X es el puerto y n el número del pin.

#define PIN_A0 40
#define PIN_A1 41

Las funciones son:

output_low(pin); //pin a 0
output_high(pin); //pin a 1
output_bit(pin,valor); //pin al valor especificado
output_toogle(pin); //complementa el valor del pin
output_float(pin); //pin de entrada, quedando a tensión flotante
input_state(pin); //lee el valor del pin sin cambiar el sentido
input(pin); //lee el valor del pin

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Ejemplo 1: Configure el pin GP2 como salida para que produzca un


parpadeo de un segundo, considerando un oscilador interno de 4Mhz. El
montaje se presenta a continuación.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Ejemplo 2: Configure el pin GP3 como entrada y GP5 como salida. La


salida debe tener el mismo valor que la entrada, utilice un interruptor de
entrada y un led como salida. El montaje se presenta a continuación.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Ejemplo 3: Configure el pin GP2, GP4 y GP5 como salida para que
produzca una secuencia de un semáforo con un tiempo de encendido y
apagado de 500 ms, considerando un oscilador interno de 4Mhz. El
montaje se presenta a continuación.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Laboratorio práctico

1- Desarrollar un programa con el pic12f675 en el cual a partir de un


interruptor (entrada) se genere un contador de 16 bits los cuales se
deben visualizar con cinco leds (salida).
2- Realizar un semáforo de dos vías con el pic 12f675, implementa la
función delay para manejar los tiempos de encendido y apagado.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

PARA PROGRAMAR CON PICKIT2 O PICKIT3 (MICROCHIP)

Por favor tener el orden de los pines para evitar problemas. Ver figura 1.

Favor fijarse que es necesario una resistencia (4.7K a 10K) entre los
pines ̅̅̅̅̅̅̅̅
𝑀𝐶𝐿𝑅 y VDD como se presenta en la siguiente figura. De los 6 pines
solo se usan 5, como se presenta a continuación.

Prof. M.Sc. Rubén Darío Hernández B.


MICROPROCESADORES

Recuerde que los pines que se utilizan para su programación son:

Vpp/MCLR
VDD
VSS
PGD/DAT
PGC/CLK

Prof. M.Sc. Rubén Darío Hernández B.

También podría gustarte