Vous êtes sur la page 1sur 15

Repblica Bolivariana de Venezuela

Ministerio del Poder Popular para la Educacin Universitaria


Universidad Politcnica Territorial Alonso Gamero
Programa Nacional de Formacin en Electricidad

Programacin de
Microcontroladores PIC con
Lenguaje C
Autor(es):
T.S.U. Pablo Perozo, C.I.: 19.252.914
T.S.U. Sandy Martnez, C.I.:16.829.434
T.S.U. Samir Medina, C.I.: 23.588.090
T.S.U. Erick Toyo, C.I.: 25.096.098
Santa Ana de Coro, julio de 2016
1

COMO PROGRAMAR EL PIC16F877 EN LENGUAJE

El PIC16F877 es un microcontrolador con


memoria de programa tipo FLASH.
Nro.
de
bit

tecnologa

registro

TTL excepto RA4. ST para


RA4 (como salida es
drenaje abierto

TTL

PORTA
TRISA A
DCON1
PORTB
TRISA B

Puert
o

ST

PORTC
TRISA C

ST

PORTD
TRISA D

ST

PORTE
TRISE
ADCON1

Estado
inicial de
POR
Entradas
analgicas
Entradas
digitales.
Entradas
digitales.
Entradas
digitales.
Entradas
digitales.

Los pines del puerto A y del


puerto E pueden trabajar como
entradas
para
el
convertidor
Anlogo a Digital interno, es decir,
all se podra conectar una seal
proveniente de un sensor o de un
circuito analgico para que el
microcontrolador la convierta en su
equivalente digital y pueda realizar
algn proceso de control o de
instrumentacin digital.
El
pin
RB0/INT
se
puede
configurar por software para que
funcione como interrupcin externa,
para configurarlo se utilizan unos
bits de los
registros
que
controlan
las
interrupciones.
El pin RA4/TOCKI del puerto A
puede ser configurado como un pin
de entrada/salida o como
entrada del temporizador/contador.
Cuando este pin se programa como
entrada digital, funciona como un
disparador de Schmitt.

El
puerto
E
puede
controlar la conexin en
modo microprocesador con
otros
dispositivos
utilizando las lneas RD
(read), WR (write) y CS
(chip select). En este modo
el puerto D funciona como
un bus de datos de 8 bits
(pines PSP).
3

Programacin en Lenguaje C
Se inicia
mikroC

Se selecciona el
PIC

Se agrega la
frecuencia que va
trabajar el PIC

Programacin en
bajo voltaje
deshabilitada
(LVP=0).
Temporizador de
encendido
habilitado
(#PWRTEN=0).
Temporizador de
vigilancia5

La configuracin de los puertos A y E se realiza de forma similar,


programando el registro ADCON1 con un valor de 0x06 para que
los pines RA<5:0> y RE<2:0> operen como E/S digital, debido a
que inicialmente estos pines estn configurados como entradas

Resumen de algunos de los registros de configuracin


BANCO 0:
- TMR0: Registro del temporizador/contador de 8 bits.
- PCL: Byte menos significativo del contador de programa (PC).
- STATUS: Contiene banderas (bits) que indican el estado del
procesador
despus de una operacin aritmtica/lgica.
- FSR: Registro de direccionamiento indirecto.
- PORTA, PORTB, PORTC, PORTD, PORTE: Registro de puertos de E/S
de
datos. Conectan con los pines fsicos del micro.
- PCLATH: Byte alto (ms significativo) del contador de programa (PC).
- INTCON: Registro de control de las interrupciones.
- ADRESH: Parte alta del resultado de la conversin A/D.
- ADCON0: Controla la operacin del mdulo de conversin A/D
BANCO 1:
- OPTION: Registro de control de frecuencia del TMR0.
- TRISA, TRISB, TRISC, TRISD. TRISE: Registros de configuracin de
la
operacin de los pines de los puertos.
- ADRESL: Parte baja del resultado de la conversin A/D.
- ADCON1: Controla la configuracin de los pines de entrada anloga.

BANCO 2:
- TMR0: Registro del temporizador/contador de 8 bits.
- PCL: Byte menos significativo del contador de programa (PC).
- FSR: Registro de direccionamiento indirecto.
- EEDATA: Registro de datos de la memoria EEPROM.
- EEADR: Registro de direccin de la memoria EEPROM.
- PCLATH: Byte alto (ms significativo) del contador de programa
(PC).
- INTCON: Registro de control de las interrupciones.
BANCO 3:
- OPTION: Registro de control de frecuencia del TMR0.
- EECON1: Control de lectura/escritura de la memoria EEPROM de
datos.
- EECON2: No es un registro fsico.

FORMA DE REALIZAR LA CONVERSIN A/D :


Configurar el mdulo A/D:
- Configurar los pines anlogos, referencia de voltaje y E/S
digitales (ADCON1).
- Seleccionar canal de entrada A/D.
- Seleccionar reloj de conversin A/D.
- Activar el mdulo A/D.
Configurar la interrupcin A/D(si se requiere): ADIF =0 (PIR1<6>);
ADIE = 1
(PIE1<6>) y GIE = 1 (INTCON<7>).
Asegurar el tiempo de muestreo requerido [Tad].
Empezar la conversin.
Esperar que se realice la conversin, as :
- Haciendo un muestreo al bit GO/DONE hasta que ste es cero.
- Esperar la interrupcin del convertidor.
Leer los registros ADRESH y ADRESL. ADIF se debe resetear si
se usa interrupcin.

Aplicaciones de los Puerto paralelo y Puerto serie

10

Comunicacin con el puerto paralelo en Lenguaje C.


El lenguaje C permite tanto la lectura como la escritura de los puertos
paralelo. Para leer el puerto existen las instrucciones inport e inportb,
mientras que para escribir estn las instrucciones outport y outportb. La
sintaxis de estas instrucciones es la siguiente:

unsigned
inport (unsigned portid);
unsigned char inportb (unsigned portid);
void
outport (unsigned portid, unsigned
value);
void
outportb (unsigned portid, unsigned char value);
Ejemplo:
Palabra = inport(puerto);
outport (puerto,Palabra);
Byte = inportb (puerto);
outportb (puerto,Byte);
Las instrucciones que terminan en b ese refieren a la lectura o escritura
de un byte, mientras que las que no terminan en esta letra se refieren a una
palabra(dos byte). La variable puerto debe contener la direccin de memoria
del puerto paralelo, este valor puede ser 378h, 3BCh 278h. Por ultimo no
hay que olvidar colocar la siguiente directiva del preprocesador que le indica
al C que se usarn las funciones inport, outport, inportb u outportb,
declaradas en el archivo dos.h.
#include <dos.h>
11

PUERTO SERIAL
Recepcin de Datos R&B
Trasmisin de Datos T&D
Tierra: GND

PUERTO SERIAL
Conector DB9

Interrupciones
Las interrupciones como el nombre lo sugiere, son eventos que hacen
que el microcontrolador PIC deje de realizar lo que est haciendo y pase
a ejecutar otra tarea. Al finalizar retorna a su actividad anterior.
Por ejemplo:
El microcontrolador PIC16F877 tiene 15, el microcontrolador PIC16F88
tiene hasta 12 fuentes de interrupciones, el microcontrolador
PIC16F628A tiene 10.

Interrupciones INT del microcontrolador PIC


La interrupcin externa en el pin RB0/INT se activa por flanco
ascendente o descendente, dependiendo del bit INTEDG del registro
OPTION_REG. Cuando aparece una transicin vlida en el pin RB0/INT, la
bandera INT0IF del registro INTCON toma un valor de 1. Esta interrupcin
puede ser habilitada/deshabilitada con el bit INT0IE del registro INTCON.
La bandera INT0IF tiene que ser borrada por software dentro de la
ISR antes de rehabilitar esta interrupcin. La interrupcin INT puede
despertar al PIC, si el bit INT0IE se program en 1 antes de ingresar al
modo Sleep.
14

Manejo de interrupciones en mikroC


Se pueden manipularse fcilmente por medio de la palabra
reservada interrupt. En mikroC se ha declarado de manera implcita la
funcin interrupt, la cual no puede ser redeclarada. Su prototipo es:

void interrupt(void);

Lo nico que el usuario tiene que hacer es escribir la definicin de


esta funcin (rutina de servicio a la interrupcin ISR) para manejar
interrupciones en la aplicacin que est desarrollando. mikroC
se
encarga de salvar y recuperar de la pila (stack) los registros W, STATUS,
FSR y PCLATH.

Se pueden realizar llamadas a funciones desde la funcin interrupt.


El compilador mikroC
toma en cuenta los registros que se estn
empleando tanto en la funcin interrupt como en la funcin main, y salva
nicamente los registros que se emplean en ambas funciones.
En caso de que haya mltiples interrupciones habilitadas, se debe
detectar la fuente de la interrupcin por medio de las banderas de
interrupcin (flags) y proceder a la ejecucin del cdigo apropiado.
15

Vous aimerez peut-être aussi