Está en la página 1de 15

Microcontroladores PIC

Lic. Yohoni Cuenca S.

ORIENTACIN EN CUANTO A LA ARQUITECTURA Y FUNCIONALIDAD DE LOS


PROCESADORES
Existen tres orientaciones en cuanto a la arquitectura y funcionalidad de los procesadores actuales
[2].
CISC: Un gran nmero de procesadores usados en los microcontroladores estn basados en la
filosofa CISC (Computadores de Juego de Instrucciones Complejo). Disponen de ms de 80
instrucciones mquina en su repertorio, algunas de las cuales son muy sofisticadas y potentes,
requiriendo muchos ciclos para su ejecucin. Una ventaja de los procesadores CISC es que
ofrecen al programador instrucciones complejas que actan como macros.
RISC: Tanto la industria de los computadores comerciales como la de los microcontroladores
estn decantndose hacia la filosofa RISC (Computadores de Juego de Instrucciones Reducido).
En estos procesadores el repertorio de instrucciones mquina es muy reducido y las
instrucciones son simples y, generalmente, se ejecutan en un ciclo. La sencillez y rapidez de las
instrucciones permiten optimizar el hardware y el software del procesador.
SISC: En los microcontroladores destinados a aplicaciones muy concretas, el juego de
instrucciones, adems de ser reducido, es "especfico", o sea, las instrucciones se adaptan a las
necesidades de la aplicacin prevista. Esta filosofa se ha bautizado con el nombre de SISC
(Computadores de Juego de Instrucciones Especfico).

ARQUITECTURA HARVARD:
Tradicionalmente los microprocesadores se basan en la estructura de Von Neumann, como la de la
figura siguiente, que se caracteriza por disponer de una nica memoria principal en la que se
almacenan los datos y las instrucciones. A esta memoria se accede a travs de un sistema de buses
nico:
Bus de datos
Bus de direcciones
Bus de control

Arquitectura segn el modelo de Von Neumann

Microcontroladores PIC

Lic. Yohoni Cuenca S.

El modelo Harvard , representado en la figura siguiente, dispone de dos memorias:


Memoria de datos
Memoria de Programa
Adems cada memoria dispone de su respectivo bus, lo que permite, que la CPU pueda acceder de
forma independiente y simultnea a la memoria de datos y a la de instrucciones. Como los buses son
independientes stos pueden tener distintos contenidos en la misma direccin .

Arquitectura segn el modelo HARVARD

Arquitectura Ortogonal Arquitectura Ortogonal: Cualquier instruccin puede utilizar cualquier


elemento de la arquitectura como fuente o destino.
Arquitectura basada en banco de registros Arquitectura basada en banco de registros: Implica
que todos los elementos del sistema, es decir, temporizadores, puertos de entrada/salida, posiciones
de memoria, etc, estn implementados fsicamente como registros.
En los PIC el manejo del banco de registros, que participan activamente en la ejecucin de las
instrucciones, es muy interesante al ser ortogonales. En la figura siguiente se muestra como la ALU
(Unidad Aritmtico-Lgica) efecta sus operaciones con dos operandos, uno que proviene del
registro W (Work), que en otras CPUs recibe el nombre de Acumulador, y el otro que se encuentra
en cualquier otro registro o del propio cdigo de instruccin.

Registros que pueden enviar datos a la ALU. El resultado puede ir a cualquier registro o al registro W

Microcontroladores PIC

Lic. Yohoni Cuenca S.

CARACTERSTICAS GENERALES
RISC de 35 instrucciones. Cdigos de instruccin de 14 bits. Todas las instrucciones ocupan
una palabra
Todas las instrucciones duran un ciclo de reloj excepto las de salto que duran dos.
Velocidad de funcionamiento 20MHz mximo (instrucciones de 200 ns)
Tpicamente a 4 MHz (instruccin de 1us)
1024 palabras (14bits) de memoria de programa FLASH
68 bytes de RAM de datos
64 bytes de EEPROM de datos.
15 registros de funcin especifica
pila hardware de 8 niveles
modos de direccionamiento directo, indirecto y relativo
cuatro fuentes de interrupcin
13 pines de entrada/salida con control individual de sentido
pines de alta corriente (25mA mximo por pin)
Temporizador/contador TMRO de 8 bits con pre-escala programable
Memoria de programa FLASH borrable/escribible 1000 veces
Memoria de datos EEPROM borrable/escribible 1.000.000 veces
Retencin de datos en EEPROM >40
Programacin serie In Circuit va 2 pines
Power on Reset (POR), Power up Timer (PWRT), oscilador Start-up Timer (OST)
Watch dog Timer(WDT) con su propio oscilador RC integrado
Proteccin de cdigo
Modo de ahorro de energa (SLEEP)
Opcion de oscilacin seleccionables
Consumo tpico < 2mA @5V, 4 MHz
Tensin de alimentacin de 2.0 V a 5.5 V
Diagrama De Pines

Microcontroladores PIC

Lic. Yohoni Cuenca S.

DESCRIPCIN DE LOS PINES DE SALIDA

legend: I=imput O=Output


I/O=Input/Output P=Power
_=Not used
TTL=TTL input ST=Schmitt Trigger Input
Note 1: This buffer is a Schmitt Trigger input when configured as the external interrupt
2: This buffer is a Schmitt Trigger input when used in Serial Programming mode
3: This buffer is a Schmitt Trigger input when configured in RC oscillator mode and CMOS
imput other wise.

DIAGRAMA DE BLOQUES
1024 palabras de memoria de programa (14 bits)
memoria de datos RAM de 68 bytes.
Memoria de datos no voltil E2PROM de 64 bytes
13 pines E/S configurables individualmente. Algunos tiene funcionalidades mltiples.

Microcontroladores PIC

Lic. Yohoni Cuenca S.

ORGANIZACIN DE LA MEMORIA
Memoria de programa
El contador de programa (PC) es de 13 bits.
Puede direccionar 213 = 8k palabras de de 14 bits desde 0000h 1FFFh
En el PIC 16F84A solo esta implementada 1k (0000h-03FFh)
El vector reset esta en 0000h
El vector de interrupcin esta en 0004h
Dispone de una pila hardware de 8 niveles
Memoria RAM de datos
Dividida en:
o Registro de propsito general (GPR)
o Registro de funcin especifica (SFR)
La memoria de datos RAM esta repartida en dos bancos. Se selecciona a travs de unos bits
de control situados en el registro STATUS.
La instruccin MOVWF y MOVFW copian datos desde el registro W(Working Register) a
RAM (Refister File (F)) o viceversa.
5

Microcontroladores PIC

Lic. Yohoni Cuenca S.

Mapa de la memoria de programa

Mapa de la memoria de datos

PUERTAS DE ENTRADA Y SALIDA: REGISTROS PORTA Y TRISA


PORTA es un puerto bidireccional de 5 bits RA4 RA0
RA3 RA0 actan como lneas de E/S digitales configurables de forma independiente.
RA4 / TOCKI, adems de lnea de E/S, puede funcionar como entrada de impulsos de reloj
para TMR0.
TRISA es quien controla la direccin de cada bit:
o entrada =1
o salida = 0
al arrancar (POR) todos los bits de TRISA se ponen a 1 las lneas del PORTA quedan
configuradas como entradas (Z)
las lneas de salida estn latcheadas y en ellas se mantiene el ultimo valor que han sacado.
Al leer una entrada se lee el estado actual del pin.

Microcontroladores PIC

Lic. Yohoni Cuenca S.

Todas las operaciones de escritura son operaciones de lee-modifica-escribe. Esto es, una
escritura en un puerto implica que los pines del puerto se leen, estos valores se modifican y
entonces se escriben en el latch de datos del puerto.
Cada pin del PORTA suministra una corriente mxima de 20 mA y puede absorver hasta 25
mA.
La corriente mxima total que puede absorber el PORTA es de 80 mA y la que puede
suministrar de 50 mA.

CONFIGURACIN DEL OSCILADOR


Posee cuatro modos de funcionamiento:
LP, Low Power Cristal. Con un cristal de bajo consumo frecuencia (hasta 200KHz)
XT, Cristal/resonator. Con un cristal o resonador de frecuencia media (hasta 4MHz)
HS, High Speed cristal/resonator. Con un cristal resonador de alta velocidad (hasta 20 MHz)
RC, Resistor/Capacitor. Con una red RC. Es una opcin barata cuando la aplicacin no
depende del tiempo. La frecuencia de oscilacin depender de Rext, Cext y de la tensin de
alimentacin y de la temperatura de funcionamiento.

PROGRAMACIN EN PIC16F84A

1. SUMA LOS NMEROS 05 Y 02, EL


RESULTADO LO ALMACENA EN W

3. SUMA W Y UNA LITERAL

list p=16F84
var1 equ 0x0c
org 0
movlw 0x05
movwf var1
movlw 0x02
addwf var1, 0
end

list p=16f84
org 0
movlw b0111
addlw b1001
end
Sistema de numeracin aceptado por el
compilador:
Tipo
Decimal

2. SUMA DOS NMEROS BINARIOS, EL


RESULTADO EN LA VARIABLE NUM

Hexadecimal
list p=16f84
num equ 0x0c
org 0
movlw b0001
movwf num
movlw b0010
addwf num, 1
end

Octal
Binario
ASCII

Sintaxis
dcantidad
.cantidad
hcantidad
0xcantidad
cantidad h
ocantidad
bcantidad
acantidad
caracter

Microcontroladores PIC

Lic. Yohoni Cuenca S.

4. CARGA EL 6 EN 0X0E Y LUEGO LO


INCREMENTA

inicio
movlw b01010011
movwf reg1
movlw b00001111
andwf reg1, 0
end

list p=16f84
val equ 0x0e
org 0
inicio
movlw d5
movwf val
incf val, 1
incf val,1
end

7. REALIZA LA OPERACIN OR ENTRE


UN REGISTRO Y UNA LITERAL
list p=16f84
org 0
inicio
movlw b10011001
iorlw b00011101
end

5. CARGA EL 9 EN 0X0f Y LUEGO LO


DECREMENTA
list p=16f84
valor equ 0x0f
org 0
inicio
movlw h9
movwf valor
decf valor,1
end

8. ROTA TRES VECES UN NUMERO A LA


IZQUIERDA
list p=16f84
val equ 0x0c
org 0
inicio
movlw b10110111
movwf val
rlf val,1
rlf val,1
rlf val,1
end

6. REALIZA LA OPERACIN AND


ENTRE DOS REGISTROS
list p=16f84
reg1 equ 0x0c
org 0

9) ENCIENDE LOS CUATRO LEDs DE UN CIRCUITO


Componentes del circuito:
Dos condensador de 22 p
Ocho resistencias de 330 ohmios
Microcontrolador PIC 16F84a
Cristal de 4MHz
Ocho LEDs

Programa
LIST p=16F84
STATUS equ 03
portb equ 06
bsf
STATUS,5
movlw
0
movwf
portb
bcf
STATUS,5
movlw b'00001111'
movwf portb
end
8

Microcontroladores PIC

Lic. Yohoni Cuenca S.

10) INDICA MEDIANTE LEDS EN EL PUERTO B, SI TRES ENTRADAS AL PUERTO A


ESTN PRESIONADAS
Componentes del circuito:
Dos condensador de 22 p
Ocho resistencias de 330 ohmios
Microcontrolador PIC 16F84a
Cristal de 4MHz
Ocho LEDs
Tres burons
Tres resistencias de 10 K ohmios

Programa
list p=16f84
bsf 0x03, 5
movlw b'11111111'
movwf 0x05
movlw 0
movwf 0x06
bcf 0x03, 5
bucle
movf 0x05, 0
movwf 0x06
goto bucle
end

Microcontroladores PIC

Lic. Yohoni Cuenca S.

9) MUESTRA EL COMPLEMENTO DE LAS ENTRADAS DE UN PUERTO


Componentes del circuito:
Dos condensador de 22 p
Ocho resistencias de 330 ohmios
Microcontrolador PIC 16F84a
Cristal de 4MHz
Ocho LEDs

Programa
list p=16f84
status equ 0x03
porta equ 0x05
portb equ 0x06
org 0
bsf status,5
movlw b'11111111'
movwf porta
movlw b'00000000'
movwf portb
bcf status,5
bucle
comf porta,0
movwf portb
goto bucle
end

TEMPORIZACIN
El Timer TMR0 puede configurarse como contador y como temporizador
Para configurar la forma de actuacin se ingresa al registro OPTIONS y se acta sobre el bit TOCS:
Si TOCS = 1 el timer acta como contador
Si TOCS = 0 el timer acta como temporizador
TMR0 como contador.
Se introducen lo impulsos a contar por el pin RA4/TOCK1
10

Microcontroladores PIC

Lic. Yohoni Cuenca S.

Se programa el bit Tosedle registro OPTION_REG de la siguiente forma:


TOSE = 1 Actual por flanco activo descendente
TOSE = 0 Actual por flanco activo ascendente
TMR0 como Temporizador
Se considera los impulsos de frecuencia de oscilacin, considerando que un ciclo maquina ocupa
cuatro ciclos del cristal oscilador.
Frecuencia de conteo = frecuencia de oscilacin / 4
Considerando que el reloj es de 4MHz, se tiene: Frecuencia de oscilacin = 4MHz / 4
seg.

= 1 micro

Bits de configuracin del temporizador


BIT 7
X

BIT 6
X

BIT 5
TOCS

BIT 4
TOSE

BIT 3
PSA

BIT 2
PS2

BIT 1
PS1

BIT 0
PS0

BIT 5 TOCS (TMR0 Clock Source Select Bit)


TOCS = 0 pulsos de reloj interno F oscilacin/4; el TMRO se programa como temporizador
TOCS = 1 pulsos externos introducidos por el pin RA4/TOCK1, TMRO acta como
contador
BIT 4 TOSE (TMRO SOURCE EDGE SELECT BIT)
TOSE = 0 contador del pin RA4/TOCK1 acta con flanco ascendente
TOSE = 1 el contador actua con flanco descendente
BIT 3 PRESCALER ASIGMENTBIT
PSA = 0 el divisor de frecuencia se asigna a TMR0 (contador o temporizador)
PSA = 1 divisor asignado al Watchdog
BIT 2 BIT 1 BIT 0 (PRESCALER RATE SELECT BITS) BITS DE SELECCION DEL DIVISOR
DE FRECUENCIAS
PS2 PS1
Divisor del
PS0
prescaler TMRO
000
1:2
001
1:4
010
1:8
011
1:16
100
1:32
101
1:64
110
1:128
111
1:256
11

Microcontroladores PIC

Lic. Yohoni Cuenca S.

10) PARPADEO DE UN LED


Componentes del circuito:
Dos condensador de 22 p
Ocho resistencias de 330 ohmios
Microcontrolador PIC 16F84a
Cristal de 4MHz
Ocho LEDs

Programa
list p=16f84
portb equ 0x06
status equ 0x03
timer equ 0x01
org 0
bsf status, 5
movlw b'00000000'
movwf portb
movlw b'11010101'
movwf timer
bcf status, 5
clrf portb
bucle
bsf portb, 0
call tiempo
bcf portb, 0
call tiempo
goto bucle
tiempo
clrf timer
bucle1
btfss timer, 7
goto bucle1
return
end

12

Microcontroladores PIC

Lic. Yohoni Cuenca S.

11) ROTACIN DE LEDS


considerando el anterior circuito.
list p=16f84
portb equ 0x06
status equ 0x03
timer equ 0x01
org 0

call tiempo
call tiempo
btfss portb, 7
goto bucle
bucle2
rrf portb, 1
call tiempo
call tiempo
btfss portb, 0
goto bucle2
goto bucle

bsf status, 5
movlw b'00000000'
movwf portb
movlw b'11010111'
movwf timer
bcf status, 5
clrf portb
bsf portb, 0
call tiempo
call tiempo

tiempo
clrf timer
bucle1
btfss timer, 7
goto bucle1
return
end

bucle
rlf portb, 1

EJEMPLOS CON DISPLAY DE SIETE SEGMENTOS


El siguiente circuito muestra un display mediante un oscilador generado por el 555, cada oscilacin
o pulsacin genera un cdigo de cuatro bits el cual mediante un decodificador genera el cdigo de
activacin para los cuatro segmentos. El circuito genera nmeros de 0 al 9 sin microcontrolador.

13

Microcontroladores PIC

Lic. Yohoni Cuenca S.

12) GENERA NMEROS DE CERO AL NUEVE MEDIANTE UN DISPLAY

componentes del circuito:


Dos condensador de 22 p
Ocho resistencias de 330 ohmios
Microcontrolador PIC 16F84a
Cristal de 4MHz
Diplay de siete segmentos con nodo comn
bucle
movlw b'01000000'
movwf portb
call tiempo
call tiempo
movlw b'01111001'
movwf portb
call tiempo
call tiempo
movlw b'00100100'
movwf portb
call tiempo
call tiempo
movlw b'00110000'
movwf portb
call tiempo

Programa
list p=16f84
portb equ 0x06
status equ 0x03
timer equ 0x01
org 0
bsf status, 5
movlw b'00000000'
movwf portb
movlw b'11010111'
movwf timer
bcf status, 5
clrf portb
14

Microcontroladores PIC

Lic. Yohoni Cuenca S.

call tiempo
movlw b'00011001'
movwf portb
call tiempo
call tiempo
movlw b'00010010'
movwf portb
call tiempo
call tiempo
movlw b'00000011'
movwf portb
call tiempo
call tiempo
movlw b'01111000'
movwf portb
call tiempo
call tiempo

movlw b'00000000'
movwf portb
call tiempo
call tiempo
movlw b'00011000'
movwf portb
call tiempo
call tiempo
goto bucle
tiempo
clrf timer
bucle1
btfss timer, 7
goto bucle1
return
end

Referencias
[1]Microchip, PIC16F84A Data Sheet, 18 pin Enhansed FLASH/EEPROM, 8 bit Microcontroler,
2001.
[2]microcontroladores, http://perso.wanadoo.es/pictob/microcr.htm
[3] eric.serra Introduccin a la programacin, Microcontrolador PIC 16F84

15

También podría gustarte