Vous êtes sur la page 1sur 36

Microcontroladores 2012-I

1



INTRODUCCIN A LOS MICROCONTROLADORES

INTRODUCCIN A LOS
MICROCONTROLADORES
TERCERA PARTE
PIC16F87X





Universidad Nacional de Colombia
Sede Bogot
Departamento de Ingeniera Mecnica y Mecatrnica
Microcontroladores 2016753
Microcontroladores 2012-I
2



INTRODUCCIN A LOS MICROCONTROLADORES
Organizacin del microcontrolador PIC16F87X
ALU
Registro de trabajo W
Registro de instrucciones
Decodificador de instrucciones
Un registro contador de instrucciones
Un registro selector de archivos, FSR
Memoria FLASH de 14 Bits
Memoria de datos SRAM de 8 bits
Pila de 8 niveles
Puertos de entrada salida
Temporizadores (timers)
Mdulo de conversin A/D de 10 bits de resolucin
Comparadores



Microcontroladores 2012-I
3



INTRODUCCIN A LOS MICROCONTROLADORES
Organizacin del microcontrolador PIC16F87X

Mdulo USART, para la comunicacin serial asincrnica y
sincronica
Memoria de datos EEPROM
Recursos especficos :
- Temporizador de encendido, Power up Timer
- Temporizador del oscilador, Oscilator Start Up Timer
- Reset de encendido, Power on reset
- Perro guardin Watchdog Timer
- Proteccin por fallo de alimentacin, Brown out




Microcontroladores 2012-I
4



INTRODUCCIN A LOS MICROCONTROLADORES
Encapsulado
Microcontroladores 2012-I
5



Caractersticas del PIC 16F87X
Caractersticas
Descripcin
PIC16F873/876
Descripcin
PIC16F874/877
Conjunto de instrucciones 35 instrucciones 35 instrucciones
Frecuencia de operacin Hasta 20 Mhz Hasta 20 Mhz
Memoria flash del programa 4K palabras/ 8K palabras 4K palabras/8K palabras
Tamao de la palabra 14 bits 14 bits
Memoria de datos SRAM 192 bytes/368 bytes 192 bytes/368 bytes
Memoria de datos EEPROM 128 bytes/25 bytes 128 bytes/256 bytes
Pila o stack 8 Niveles 8 Niveles
Puertos de E/S Puerto A,B,C Puertos A,B,C,D y E
Interrupciones 13 fuentes de interrupcin 13 fuentes de interrupcin
Temporizadores Timer0, Timer1,Timer2 Timer0, Timer1, Timer2
Mdulo de captura /comp/PWM 2 2
Mdulo anlogo/digital (10 bits) 5 canales de entrada 8 canales de entrada
Comunicacin serial SSP y USART SSP y USART
Cdigo de proteccin Programable Programable
Microcontroladores 2012-I
6



INTRODUCCIN A LOS MICROCONTROLADORES
Circuito de reloj (Pines OSC1/CLKIN y OSC2/CLKOUT)
La frecuencia del reloj principal determina el ciclo de instruccin.
En los PIC un ciclos de instruccin (CLKOUT) emplea cuatro
perodos de oscilacin del reloj principal (OSC1).
Segn los componentes que se coloquen se puede configurar
cuatro tipos de osciladores:
Tipo RC- Bajo costo y poca estabilidad
Tipo HS- Alta velocidad y estabilidad, funciona en frecuencias
comprendidas entre 4 MHz y 20 MHz. Se emplea un cristal de
cuarzo o un resonador cermico.
Tipo XT - Trabaja en frecuencias medias, comprendidas entre
200 KHz y 4 MHz.
Tipo LP - Trabaja en frecuencias comprendidas entre 32 KHz y
200 kHZ


Microcontroladores 2012-I
7



INTRODUCCIN A LOS MICROCONTROLADORES
Diagrama de tiempos del ciclo de instruccin
1 TOSC Periodo del oscilador externo
2 Tcy Tiempo del ciclo de la instruccin
3 Toscl y ToscH Tiempo de estado bajo y alto del oscilador externo
4 TosR y TosF Tiempo del flanco de subida




Tosc = T oscilador del reloj principal=1/F del reloj principal= 1/ 4 MHz = 250 ns
Tcy = Tiempo ciclo de instruccin = T oscilacin x 4 = 250 ns x 4 = 1s
Microcontroladores 2012-I
8
Puerto A
Direccin 05H, Banco 0
Puerto de 6 bits, configurado mediante el registro TRISA. Si se
quiere que el puerto funcione como entrada, se debe colocar el bit
correspondiente en 1, de lo contrario en 0.

Los terminales RA0:RA3 y RA5 estn multiplexados, se pueden
utilizar como E/S digitales o para entradas de seales analgicas.

El terminal RA4/TOCKI es una entrada Schmitt Trigger y como
salida de colector abierto, es utilizada como entrada para conteo
de eventos externos TMBO.

INTRODUCCIN A LOS MICROCONTROLADORES
Descripcin de los puertos de entrada-salida
Microcontroladores 2012-I
9


INTRODUCCIN A LOS MICROCONTROLADORES
Puerto B
Direccin 06H, Banco 0
Puerto de 8 bits, configurado mediante el registro TRISB.

Por software se pueden activar las resistencias de Pull-Up internas
para evitar el uso de resistencias externas en caso de que los pines
se utilicen como entradas.

El pin RB0/ INT es un pin multiplexado que se puede utilizar como
entrada de seales para la interrupcin externa (INT). Los pines
RB4:RB7 se utilizan para generar una interrupcin (si es habilitada)
por cambio de estado en cualquiera de estas pines.

Los pines RB3/PGM, RB6/PGC, RB7/PGD son multiplexados para
las funciones de programacin y la depuracin del circuito.


Microcontroladores 2012-I
10



INTRODUCCIN A LOS MICROCONTROLADORES
Puerto C
Direccin 07H, banco 0

Puerto de 8 bits, configurado mediante el registro TRISC.
Los pines RC3/SCL y RC4/SDA son multiplexados para la
comunicacin en modo I
2
C, y los pines RC6/TX y RC7/RX para ser
utilizados por el mdulo USART para la comunicacin serial.

Puerto D
Direccin 08H, banco 0

No esta implementado en los microcontroladores de 28 pines.
Puerto de 8 bits configurado mediante el registro TRISD.
Este puertos puede ser utilizado como un puerto paralelo esclavo

Microcontroladores 2012-I
11



INTRODUCCIN A LOS MICROCONTROLADORES
Puerto E
Direccin 09H, banco 0
No esta implementado en los microcontroladores de 28 pines.
Es un puerto de tres bits, sus tres pines son multiplexados para las
entradas de seales anlogas al mdulo de conversin
Anlogo/Digital: RE0/AN5, RE1/AN6, RE2/AN7.

Otras terminales
VDD:Positivo de alimentacin 2-6 V
VSS: Negativo de alimentacin 0 Vcc
MCLR:Mientras en este terminal exista un nivel bajo, el
microcontrolador permanecer inactivo.
OSC1/CLKIN: Entrada del oscilador externo (Cristal)
OSC2/CLKOUT: Salida del oscilador RC

Microcontroladores 2012-I
12



INTRODUCCIN A LOS MICROCONTROLADORES
Organizacin de la memoria

Memoria FLASH de programa
El PIC 16F873/874 posee una memoria de 4K palabras es decir,
permite almacenar hasta 4096 instrucciones de 14 bits desde la
direccin 0000H hasta 0FFFH dividida en dos pginas.

El PIC 16F876/877 posee una memoria de 8K palabras, permite
almacenar hasta 8192 instrucciones de 14 bits, desde la direccin
0000H hasta 1FFFH, dividida en cuatro pginas.

Para el direccionamiento se dispone de un registro contador de
programa con un ancho de bus de 13 bits.
La pgina se debe seleccionar por software, utilizando el registro
PCLATH, modificando los bits 4 y 3



Microcontroladores 2012-I
13



INTRODUCCIN A LOS MICROCONTROLADORES
Memoria FLASH de programa

El vector de reset o posicin inicial es la direccin 0000H y el
vector de interrupcin est localizado en la direccin 0004H.

Cuando las interrupciones se encuentran habilitadas y se produce
un evento, el contador de programa se carga automticamente con
esta direccin en la cual se debe encontrar la subrutina de servicio
a la interrupcin o contener almacenado una instruccin de salto
a la subrutina de servicio de la respectiva interrupcin.

La pila o STACK es de 8 niveles de 13 bits en los que el
microcontrolador va almacenando las direcciones de retorno de
las diferentes subrutinas.


Microcontroladores 2012-I
14



INTRODUCCIN A LOS MICROCONTROLADORES
Memoria de programa de los PIC 16F87x
PIC 16F876A/877A PIC16F873A/874A
Fuente Microchip Technology Inc
Microcontroladores 2012-I
15



INTRODUCCIN A LOS MICROCONTROLADORES
Mapa de memoria de datos SRAM

La memoria de datos est particionada en cuatro bancos
seleccionados por software los cuales contienen los registros de
funciones especiales o especficos y los registros de propsito
general.
Los bits 6 (RP1) y 5 (RP0) del registro STATUS seleccionan uno de
los bancos de la siguiente manera

RP1:RPO Banco Direccin
00 0 000H-07FH
01 1 080H-0FFH
10 2 100H-17FH
11 3 180H-1FFH
Microcontroladores 2012-I
16



INTRODUCCIN A LOS MICROCONTROLADORES
Registros de propsito especfico
Registro STATUS (Direccin 03H,83H)
Contiene informacin del estado interno de la CPU.
IRP RP1 RP0 TO PD Z DC C

bit 7 bit 0

R/W-0 R/W-0 R/W-0 R-1 R-1 R/W-x R/W-x R/W-x
IRP: Se utiliza para el direccionamiento indirecto (permite seleccionar el
banco)
IRP=0 Banco 0 y 1 seleccionado
IRP=1 Banco 2 y 3 seleccionado
RP1:RP0 : Bits de seleccin del banco de memoria de datos
RP0= 0 y RP1=0 Banco 0 seleccionado
RP0= 0 y RP1=1 Banco 1 seleccionado
RP0= 1 y RP1=0 Banco 2 seleccionado
RP0= 1 y RP1=1 Banco 3 seleccionado
Microcontroladores 2012-I
17



INTRODUCCIN A LOS MICROCONTROLADORES
Registro STATUS (Direccin 03H,83H)
TO: Bit de Timer-out: Este bit se coloca automticamente en 1
luego de ejecutarse la instruccin CLRWDT, SLEEP o de finalizado
el ciclo de Power-up (inicializacin). El bit vuelve a 0
automticamente cuando acurre un evento de time-out de WDT.

PD: Bit de Power-down: Este bit se coloca automticamente en 1
luego de ejecutarse la instruccin CLRWDT o de finalizado el ciclo
de Power-up. El bit vuelve a 0 automticamente cuando se
ejecuta la instruccin SLEEP.

Z: Bit cero
Z=1 Si el resultado de una operacin aritmtica o lgica es cero.
Z=0 Si el resultado de una operacin aritmtica o lgica no es cero


Microcontroladores 2012-I
18



INTRODUCCIN A LOS MICROCONTROLADORES
Registro STATUS (Direccin 03H,83H)
DC: Bit de acarreo del 4to bit
DC=1: En una operacin de suma, el resultado de la operacin entre
los 4 bits menos significativos de los sumandos es mayor a 15, en la
el resultado es igual o mayor a 0.
DC=0:En una operacin de suma, el resultado de la operacin entre
los 4 bits menos significativos de los sumandos es menor o igual a 15,
en la resta el resultado es menor a 0.

C: Bit de acarreo
C=1 El resultado de una suma es mayor a 255. El resultado de una
resta es igual o mayor a 0.
C=0 El resultado de una suma es menor o igual a 255, el resultado de
la resta es menor a 0.
Microcontroladores 2012-I
19



INTRODUCCIN A LOS MICROCONTROLADORES
Registros OPTION_REG
Direccin 81 H
El registro contiene una serie de bits de control relacionados con
la configuracin del TMR0,la interrupcin externa y la habilitacin
de las resistencias de pull-up del PORTB.




RBPU: Bit de habilitacin de las resistencias de pull-up
1= Resistencias de pull-up inhabilitadas
0= Resistencias de pull-up habilitadas
INTEDG: Bit de seleccin de flanco de interrupcin externa RB0
1= Flanco ascendente
0= Flanco descendente

RBPU INTEDG T0CS T0SE PSA PS2 PS1 PS0

bit 7 bit 0
R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1 R/W-1
Microcontroladores 2012-I
20



INTRODUCCIN A LOS MICROCONTROLADORES
Registros OPTION_REG
Direccin 81 H
TOCS: Bit de seleccin de la seal fuente del TMR0
1= Pulsos introducidos a travs del pin TOCKI (contador)
2= Pulsos de reloj interno (instrucciones), (Temporizador)

TOSE: Bit de seleccin de flanco en el pin T0CKI o (RA4)
1= Flanco de bajada
0= Flanco de subida

PSA: Bit de asignacin del preescaler
1= Preescaler asignado al WDT
0= Preescaler asignado al TMR0

PS2:PS0: Bits de seleccin de la rata del preescaler

Microcontroladores 2012-I
21



INTRODUCCIN A LOS MICROCONTROLADORES
Registro INTCON
Direccin 0Bh,8Bh,10Bh,18Bh

GIE PEIE TMR0IE INTE RBIE TMR0IF INTF RBIF

bit 7 bit 0
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
Todos los bits del registro se pueden leer o escribir por software

GIE: Bit para habilitar todas las instrucciones
1= Habilita todas las instrucciones enmascarables
0= Deshabilita todas las interrupciones

PEIE: Bit de habilitacin de las interrupciones por los perifricos
1= Habilita todas las instrucciones enmascarables de los perifricos
0=Deshabilita todas las interrupciones


Microcontroladores 2012-I
22



INTRODUCCIN A LOS MICROCONTROLADORES
Registro INTCON (Direccin 0Bh,8Bh,10Bh,18Bh)
T0IE: Bit de habilitacin de interrupcin por desbordamiento del TIMER0.
1= Habilita la interrupcin por TIMER0
0= Deshabilita interrupcin por TIMER0

INTE: Bit de habilitacin de interrupcin externa.
1= Habilita la interrupcin externa
0= Deshabilita la interrupcin externa

RBIE: Bit de habilitacin de interrupcin por cambio de estado en el puerto
RB7:RB4.
1= Habilita interrupcin por cambio de estado en el puerto RB7:RB4.
0= Deshabilita interrupcin del puerto RB7:RB4
TOIF: Bit de indicacin de interrupcin, ocasionada por el desbordamiento del
TIMER0
1= El TIMER0 se desbord (Debe ser puesto a 0 por software)
0= El TIMER0 no se ha desbordado

Microcontroladores 2012-I
23


INTF: Bit de indicacin de interrupcin, ocasionada por la interrupcin externa
INT/RB0.
1= Ha ocurrido una interrupcin externa (Debe ser puesto a 0 por
software)
0= No ha ocurrido interrupcin externa

RBIF: Bit de indicacin de interrupcin, ocasionada por cambio de estado en el
puerto RB7:RB4

1= Al menos uno de los pines RB7:RB4 ha cambiado de estado (Debe
ser puesto a 0 por software)
0= Ningn bit RB7:RB4 ha cambiado de estado
INTRODUCCIN A LOS MICROCONTROLADORES
Registro INTCON (Direccin 0Bh,8Bh,10Bh,18Bh)
Microcontroladores 2012-I
24



INTRODUCCIN A LOS MICROCONTROLADORES
Registro PIE1
Direccin 8CH




PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE

bit 7 bit 0
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
PSPIE: Bit de habilitacin de la interrupcin de puerto paralelo esclavo
1= Habilita la interrupcin por lectura/escritura del PSP
0= Deshabilita la interrupcin por lectura/escritura del PSP

ADIE: Bit de habilitacin de la interrupcin del mdulo A/D
1= Habilita la interrupcin por el mdulo A/D
0= Deshabilita la interrupcin por el modulo A/D

RCIE: Bit de habilitacin de la interrupcin por la recepcin del USART
1= Habilita la interrupcin por la recepcin de datos
0= Deshabilita la interrupcin por recepcin de datos




Microcontroladores 2012-I
25



INTRODUCCIN A LOS MICROCONTROLADORES
Registro PIE1
Direccin 8CH




TXIE: Bit de habilitacin de la interrupcin por la transmisin del USART.

SSPIE: Bit de habilitacin de la interrupcin por el puerto serial sincrnico.

CCP1IE: Bit de habilitacin de la interrupcin por CCP1

TMR2IE: Bit de habilitacin de la interrupcin TIMER2 con PR2

TMR1IE: Bit de habilitacin de la interrupcin por desbordamiento del TIMER1







PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE

bit 7 bit 0
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
Microcontroladores 2012-I
26



INTRODUCCIN A LOS MICROCONTROLADORES
Registro PRI
Direccin 0CH









PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF

bit 7 bit 0
R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
PSPIF: Bit de indicacin (Bandera) de la interrupcin de puerto paralelo esclavo.
ADIF: Bit de indicacin (Bandera) de la interrupcin del mdulo A/D .
RCIF: Bit de indicacin (Bandera) de la interrupcin por la recepcin del USART.
TXIF: Bit de indicacin de la interrupcin por la transmisin del USART.
SSPIF: Bit de indicacin de la interrupcin por el puerto serial sincrnico.
CCP1IF: Bit de indicacin de la interrupcin por CCP1
Modo de captura
Modo de comparacin
TMR2IF: Bit de indicacin de la interrupcin TIMER2 por coincidencia con PR2
TMR1IF: Bit de indicacin de la interrupcin por desbordamiento del TIMER1


Microcontroladores 2012-I
27



INTRODUCCIN A LOS MICROCONTROLADORES
Registro PCL y PCLATH

El contador de programa (PC) indica en todo momento la prxima
instruccin a ejecutarse. Es un registro de 13 bits. Los 8 bits
menos significativos se encuentran en el registro PCL ( se puede
leer y escribir). Los 5 bits ms significativos (PCH) no pueden ser
modificados o ledos directamente.

Todas las modificaciones sobre PCH se hacen a travs del registro
PCLATH.

Microcontroladores 2012-I
28



INTRODUCCIN A LOS MICROCONTROLADORES
DIRECCIONAMIENTO DE MEMORIA
Solo existen 4 modos de direccionamiento

1. Direccionamiento inmediato
El dato indicado en la instruccin hace parte del cdigo de operacin de la
instruccin.

MOVLW K ; Mueve el literal K, que es una constante al registro de
trabajo W.

2. Direccionamiento directo
La memoria interna se direcciona en forma directa por medio de 8 bits
contenidos en los cdigos de operacin de las instrucciones que operan sobre
los registros. Se puede direccionar cualquier posicin desde la 00H hasta la
posicin FFH.
MOVWF F ; Desplaza el contenido del registro W al registro F
MOVF F,W ; Desplaza el contenido del registro F al registro W

Microcontroladores 2012-I
29



INTRODUCCIN A LOS MICROCONTROLADORES
Direccionamiento bit a bit
Mediante este direccionamiento se manipula un bit individual en cualquier
registro. Este no se utiliza solo sino que siempre viene acompaado con el modo
de direccionamiento directo.
BCF F, B ; Pone a cero el bit B del registro F
BSF F,B ; Pone a uno el bit B del registro F

Direccionamiento indirecto
Utiliza los registros INDF (registro ficticio empleado en los direccionamientos
indirectos) y FSR (Contiene el ndice que apunta a la direccin que se va a
emplear en los direccionamientos indirectos).
Ejemplo
MOVLW 0X20 ; Inicializacin del puntero
MOVWF FSR
NEXT CLRF INDF ; limpia el registro apuntado
INCF FSR ; Incrementa el puntero
BTFSS FRS,4
GOTO NEXT ; Limpiar siguiente
CONT NOP





Microcontroladores 2012-I
30



INTRODUCCIN A LOS MICROCONTROLADORES
Escritura en los puertos

Ejemplo. Configurar el PORTB as: RB7 a RB4 como pines de salida y RB3:RB0 como
pines de entrada.

Mover un literal al registro

MOVLW 0FH
MOVWF TRISB

MOVLW B00001111
MOVWF TRISB

MOVLW .15
MOVWF TRISB

Activar o desactivar los correspondientes bits del
puerto

BSF TRISB,0
BSF TRISB,1
BSF TRISB,2
BSF TRISB,3
BCF TRISB,4
BCF TRISB,5
BCF TRISB,6
BCF TRISB,7
Microcontroladores 2012-I
31



INTRODUCCIN A LOS MICROCONTROLADORES
Lectura del estado de los bits

Mover el valor del puerto al registro de trabajo W, y de ah a otro registro para
hacer uso de ese valor.

MOVF PORTB,W
MOVWF Etiqueta

A travs de instrucciones BTFSS y BTFSC

PRUEBA BTFSS PORTA,0
GOTO PRUEBA
GOTO OTRO
. .
. .
OTRO


Microcontroladores 2012-I
32



INTRODUCCIN A LOS MICROCONTROLADORES











Cdigo para evitar los rebotes


Bucle BTFSS PORTA,1
GOTO BUCLE
Esperar CALL RETARDO
BTFSC PORTA,1
GOTO ESPERAR
Microcontroladores 2012-I
33



INTRODUCCIN A LOS MICROCONTROLADORES











Retardos
Microcontroladores 2012-I
34



INTRODUCCIN A LOS MICROCONTROLADORES











Encabezado y directivas
----------Encabezado-------------
LIST p=16f84
radix hex ;
------------mapa de memoria---------
estado equ 0x03 ; Haciendo asignaciones
TRISB equ 0x06
ptob equ 0x06
reg1 equ 0x0C ; Estos 3 registros los utilizar
reg2 equ 0x0D ; para hacer el retardo
reg3 equ 0x0E ;
-------Configuracin de puertos-------
reset org 0x00 ;
goto inicio ; salta a "inicio"
inicio bsf estado,5 ; pone rp0 a 1 y pasa al banco1
movlw b'00000000' ; carga W con 00000000
movwf TRISB ; y pasa el valor a trisb
bcf estado,5 ; pone rp0 a 0 y regresa al banco0
Microcontroladores 2012-I
35



INTRODUCCIN A LOS MICROCONTROLADORES











Ejercicios
Elabore una rutina para multiplicar dos bytes
Elabore una rutina para divisin de dos bytes
Elabore una rutina en la cual a partir de dos pulsadores se desea rotar un
nivel lgico 1 a travs de RB3:RB0 as: Si se activa el pulsador 1 se rotara
un 1 a la izquierda y si se activa el pulsador 2, se rotara un 1 hacia la
derecha. La activacin de los pulsadores es en nivel bajo, en caso de que
ningn pulsador se active RB3:RB0 tendrn un valor de 0



Microcontroladores 2012-I
36



INTRODUCCIN A LOS MICROCONTROLADORES











REFERENCIAS


VERGARA Daz Jairo M, VERGARA vila Jairo M.
Microcontroladores PIC. Principios y aplicaciones. Sello
editorial Universidad de Medelln. 2009.
http://www.microchip.com/

Vous aimerez peut-être aussi