You are on page 1of 22

INSTITUTO TECNOLOGICO SUPERIOR DE ESCARCEGA

INGENIERIA EN SISTEMAS COMPUTACIONALES


VII SEMESTRE
Ing. Arturo Amndola Suarez
SISTEMAS PROGRAMABLES
UNIDAD : 3
INVESTIGACION

BR. YOLANDA TORRES HUICAB

INTRODUCCION

A continuacin hablaremos acerca de los controladores, que son y cmo se implementan.


Sabemos que estamos rodeados de microchips; o al menos eso omos continuamente en los
medios: que si el mvil que llevamos con nosotros lleva uno, que si los coches los usarn para
conducir solos y que incluso la lavadora hace uso de uno para saber cunto detergente es
necesario para lavar la ropa. Mucha gente emplea estos trminos, pero no tanta sabe realmente
qu un microchip y en qu se diferencia de otros trminos similares. En la carrera de ingeniera
en sistemas podemos conocer un poco de ello ya que en la placa de nuestra laptop est
conformada por este componente y se encarga de diversos objetivos como controlar el teclado,
el touchpad, etc. Es el componente fsico que controla los drivers de nuestro computador.

MICROCONTROLADOR BUENO Y BARATO:


PIC16F84A
El microcontrolador PICI6F84A de la marca Microchip es del tipo de 8 bits con EEPROM tipo
flash reforzado. El elevado rendimiento de este microprocesador de diseo avanzado permite
realizar una gran cantidad de funciones y prestaciones como veremos a continuacin.
3.1 El exterior del procesador
El microcontrolador PIC16F84A es un chip que como puede apreciarse en la Figura 3.1,
dispone de 18 patas.

Figura 3.1. Diagrama del PIC16F84A

Patas del PIC


La funcin que cumple cada una de ellas es la siguiente:
Patas 1, 2, 3 17 y 18 RA0-RA4/TOCKI : Es el PORT A. Corresponden a 5 Ineas
bidireccionales de E/S. Es capaz de entregar niveles TTL cuando la tensin de alimentacin
aplicada en VDD es de 5V + 5%. El pin RA4 como entrada puede programarse en
funcionamiento normal o como entrada del contador/temporizador TMR0.

Pata 4 - MLCR / Vpp: Es una pata de mltiples aplicaciones, es la entrada de Reset si est a
nivel bajo y tambin es la habilitacin de la tensin de programacin cuando se est
programando el dispositivo. Cuando su tensin es la de VDD el PIC funciona normalmente.
Patas 5 y 14 - VSS y VDD: Son respectivamente las patas de masa y alimentacin. La tensin
de alimentacin de un PIC est comprendida entre 2V y 6V aunque se recomienda no
sobrepasar los 5.5V.
Patas 6, 7, 8, 9, 10, 11, 12, 13 RB0-RB7: Es el PORT B. Corresponden a ocho lneas
bidireccionales de E/S. Pueden manejar niveles TTL cuando la tensin de alimentacin
aplicada en VDD es de 5V 5%. RB0 puede programarse adems como entrada de
interrupciones externas INT. Los pines RB4 a RB7 pueden programarse para responder a
interrupciones por cambio de estado. Las patas RB6 y RB7 se corresponden con las lneas de
entrada de reloj y entrada de datos respectivamente, cuando est en modo programaci6n del
integrado.
Patas 15 y 16 OSC1/CLKIN y OSC2/CLKOUT. Corresponden a los pines de la entrada
externa de reloi y salida de oscilador a cristal respectivamente.

3.2 El interior del procesador


3.2.1 TARJETA DE PRESENTACIN DEL PIC16F84A
9

MEMORIA FLASH DEL PROGRAMA: 1 K

MEMORIA DE DATOS RAM: 68 bytes

MEMORIA DE DATOS EEPROM: 64 bytes

PILA (STACK): 8 niveles

INTERRUPCIONES: 4 tipos diferentes (Pata externa RB0/INT, exceso del temporizador TMR0,
Interrupcin al cambio PORTB<7:4> y al completar la escritura del EEPROM de datos)

JUEGO DE INSTRUCCIONES: 35

FRECUENCIA DE TRABAJO: 20Mhz mxima

TEMPORIZADORES: Slo uno, el TMR0 de 8 bits con preescaler (divisor de frecuencia)


programable de 8 bits.. Tambin tienen Perro Guardin (WDT)

LNEAS DE E/S DIGITALES: 13 (5 Puerta A y 8 Puerta B) con control individual de direccin.

VOLTAJE DE ALIMENTACIN: 2 a 6V DC

REGISTROS DE HARDWARE DE FUNCIONES ESPECIALES: 15

EXTENSIN DE INSTRUCCIONES:14 bits

EXTENSIN DE DATOS: 8 bits

MODOS DE ACCESO: directo, indirecto y relativo

CICLO DE INSTRUCCIN: 2 para saltos y 1 para el resto


3.2.2 CARACTERSTICAS ESPECIALES DEL MICROCONTROLADOR

9
9
9
9
9
9
9
9
9
9
9
9
9

Memoria de programa de 1000 ciclos de escritura/borrado de flash reforzado.


Memoria de datos EEPROM de 10,000,000 de ciclos de borrado/escritura tpica.
Retencin de datos de EEPROM de >40 aos.
Programacin en serie dentro del circuito (ICSP = In Circuit Serial Programming) mediante dos
patas.
Power-on Reset (POR), Power-up Timer (PWRT), Oscillator Start-up Timer (OST).
Watchdog Timer (WDT) con su propio oscilador RC incorporado en el chip para un
funcionamiento confiable.
Proteccin de cdigos.
Modo SLEEP para economizar consumo.
Opciones seleccionables de oscilador.
Tecnologa CMOS con Flash reforzado y EEPROM.
Tecnologa de baja potencia y alta velocidad.
Diseo esttico completo.
Rango amplio de tensiones de funcionamiento:
Comercial: 2,0 Volt a 5,5 Volt
Industrial: 2,0 Volt a 5,5 Volt Consumo muy bajo:
< 2mA tpico a 5 Volt, 4MHz
< 0,5A tpico de corriente en reposo a 2 Volt
3.2.3 Arquitectura moderna y revolucionaria
Para lograr una compactacin de cdigo ptima y una velocidad superior a la de sus
competidores los microcontroladores PIC incorporan en su procesador tres de las
caractersticas ms avanzadas en los grandes computadores:

9
9
9

Procesador tipo RISC


Procesador segmentado
Arquitectura HARVARD
La arquitectura interna del PIC16F84A se presenta en la Figura 3.2 y consta de 7 bloques
fundamentales.

Figura 3.2. Arquitectura interna del


PIC16F84A
Los bloques son:
1. Memoria de programa EEPROM de 1 K x 14 bits
2. Memoria de datos formada por dos reas. Una RAM donde se alojan 22 registros de
propsito especfico y 36 de propsito general y la otra del tipo EEPROM de 64 bytes.
3. Camino de datos con una ALU de 8 bits y un registro de trabajo W del que normalmente
recibe un operando y enva el resultado. El otro operando puede provenir del bus de datos o
del propio cdigo de la instruccin (literal).
4. Diversos recursos conectados al bus de datos, tales como Puertas de E/S, Temporizador
TMR0, etc.
5. Base de tiempos y circuitos auxiliares
6. Direccionamiento de la memoria de programa en base al Contador de Programa ligado a
una Pila de 8 niveles de profundidad.
7. Direccionado directo e indirecto de la memoria RAM
3.2.2.1 Memoria de programa
Los PIC de la gama media admite un mapa de memoria de programa capaz de contener 8,192
instrucciones de 14 bits cada una. Este mapa se divide en pginas de 2,048 posiciones El
PIC16F84A slo tiene implementadas 1 K posiciones, como se ve en la Figua 3.3, por lo que
ignora los 3 bits de ms peso del Contador de Programa.

MEMORIADE PROGRAMA

1K
EEPROM

0000H

Vector Reset

0004H

Vector Interrupcin

12

0
PC
Nivel 1

03FF H
0400H

Figura
3.3.
Memoria de
Programa

No implementado

Pila
Nivel 8

1FFF H

13

12

PILA
Las caractersticas esenciales de la pila son:
9
9
9
9

Zona aislada de las memorias de instrucciones y datos.


Estructura LIFO
8 niveles de profundidad cada uno con 13 bits
Buffer circular
La instruccin CALL y las interrupciones originan la carga del contenido del PC en el nivel
superior de la pila y con las instrucciones RETURN, RETLW y RETFIE se saca el contenido del
nivel superior de la misma.
3.2.2.2 Memoria de datos RAM
Tiene dos zonas diferentes:
1. RAM esttica SRAM, donde residen los Registros Especficos (SFR) con 24 posiciones de
tamao byte, aunque dos de ellas no son operativas y los Registros de Propsito General
(GPR) con 68. La RAM del PIC16F84A se halla dividida en dos bancos (banco 0 y banco 1)
de 128 bytes cada uno, Figura 3.5.
2. EEPROM, de 64 bytes donde, opcionalmente, se pueden almacenar datos que no se pierden
al desconectar la alimentacin.

DIRECCIONAMIENTO DE LA MEMORIA DE DATOS


En los PIC de la gama media la memoria de datos est organizada para alojar un mximo de 4
bancos de 128 bytes cada uno. El PIC16F84A slo tiene implementados los 80 primeros bytes
de los bancos 0 y 1. Se toman 9 bits para seleccionar una localidad en la memoria de bits como
se ve en la Figura 3.6.
3.2.2.1 Registros de funcin especial
BANCO 0
DIR Nombre Bit 7 Bit 6 Bit 5 Bit 4
Bit 3 Bit 2 Bit 1 Bit 0
00 H INDF
Conte nido del puntero FSR que direcciona a la Memoria de Datos
(no es t implementa do fsicamente)
01H TMR0
Conta dor / Reloj en ti empo real de 8 bits
02 H PCL
8 bits menos significativos del Contador de Programa (PC)
03 H STATUS IRP
RP1 RP0 TO
PD
Z
DC
C
04 H FSR
Punte ro para direccionar indirectam ente a la Memoria de Datos
05 H PORTA RA4/T0CKI
RA3
RA2 RA1 RA0
06 H PORTB RB7 R6
RB5 RB4
RB3
RB2 RB1 RB0
07 H Locali dad no implementada, se lee como 0
08 H EEDATA Regist ro de datos EEPROM
09 H EEADR Regist ro de direccin EEPROM
0A H PCLATH 5 bits ms sig nificativos del PC
0B H INTCON GIE
EEIE T0IE INTE
RBIE T0IF INTF RBIF
BANCO 1
DIR Nombre Bit 7
Bit 6
Bit 5 Bit 4 Bit 3
Bit 2
Bit 1 Bit 0
80 H INDF
Contenido del puntero FSR que direcciona a la Memoria de Datos
(no est implementado fsicamente)
81 H OPTION RBPU INTEDG T0CS T0SE PSA
PS2
PS1 PS0
82 H PCL
8 bits menos significativo s del Contador de Programa
83 H STATUS IRP
RP1
RP0
TO
PD
Z
DC
C
84 H FSR
Punter o para direccionar indirectamente a la Memoria de Datos
85 H TRIS A
Regist ro de direccin de datos P ORTA
86 H TRIS B
Registr o de direccin de datos PORTB
87 H Localid ad no implementada, se lee como 0
88 H EECON1 EEIF WRERR WREN WR RD
89 H EECON2 Registr o 2 de control para la EEPROM (no
est implementado fsicamente)
8A H PCLATH 5 bits ms significativos del PC
8B H INTCON GIE
EEIE
T0IE INTE RBIE
T0IF
INTF RBIF
Registro STATUS
Contiene el estado aritmtico de la ALU, el estado del reset y los bits para seleccin del banco.
L=bit de lectura E=bit de escritura 0/1/x=Valor despus de un RESET
L/E - 0 L/E - 0 L/E - 0 L - 1 L - 1 L/E - x L/E - x L/E - x
IRP
RP1
RP0
TO PD Z
DC
C
Bit 7

Bit 0

En el PIC16F84A:

Bit 7-6 IRPRP1

No implementado: 0

Bit 5: RP0
Bank Select

1= Banco 1 (80H - FFH)


0= Banco 0 (00H - 7FH)

Bit 4: TO
Time-out

1= Despus de un reset, de una instruccin CLRWDT o SLEEP


0= Ocurri un time-out en el WDT

Bit 3: PD
1= Despus de un reset o de una instruccin CLRWDT
Power Down 0= Por la ejecucin de la instruccin SEP
Bit 2: Z Zero 1= El resultado de una operacin lgica o aritmtica es 0
0= El resultado de una operacin lgica o aritmtica no es 0
Bit 1: DC 1= Un acarreo ocurri del resultado en el bit 4to.de orden bajo
0= No ocurri acarreo en el bit cuarto de orden bajo
Digit carry
Bit 0: C Carry 1= Un acarreo ocurri del resultado en el bit MSB
0= No ocurri acarreo en el bit MSB
Registro OPTION
Contiene varios bits de control para configurar el divisor de frecuencia o prescaler del
TMR0/WDT, la interrupcin externa INT, TMR0 y los pull-ups en el PORTB
L=bit de lectura E=bit de escritura 0/1/x=Valor despus de un RESET
L/E - 1 L/E - 1
L/E - 1 L/E - 1 L/E - 1 L/E - 1 L/E - 1 L/E - 1
RBPU INTEDG T0CS T0SE PSA
PS2
PS1
PS0
Bit 7
Bit 0
En el PIC16F84A:
Bit 7: RBPU
Habilita pull-ups PORTB
Bit 6: INTEDG
Selector de filo de int
Bit 5: T0CS
Selector de fuente de reloj
Bit 4: T0SE
Selector de filo en RA4
Bit 3: PSA
Asignacin de prescaler

1= Deshabilita pull-ups del PORTB


0= Habilita pull-ups del PORTB
1= Interrupcin en filo de subida del pin RB0/INT
0= Interrupcin en filo de bajada del pin RB0/INT
1= Transicin en el pin RA4/T0CKI
0= Reloj interno de ciclo de instruccin
1= Incrementa TMR0 en el filo de bajada
0= Incrementa TMR0 en el filo de subida
1= Prescaler es asignado a el WDT
0= Prescaler es asignado a el mdulo Timer0

Bit 2-0: PS2-PS0


Rango del prescaler

Seleccionan el rango del prescaler

Valor en bits Rango TMR0 Rango WDT


000
001
010
011
100
101
110
111

1:2
1:4
1:8
1 : 16
1 : 32
1 : 64
1 : 128
1 : 256

1:1
1:2
1:4
1:8
1 : 16
1 : 32
1 : 64
1 : 128

Registro INTCON
Contiene los bits para habilitar cada una de las fuentes de interrupcin.
L=bit de lectura E=bit de escritura 0/1/x=Valor despus de un RESET
L/E - 0 L/E - 0 L/E - 0 L/E - 0 L/E - 0 L/E - 0 L/E - 0 L/E - x
GIE
EEIE T0IE INTE RBIE T0IF
INTF RBIF
Bit 7
Bit 0
En el PIC16F84A:
Int.= interrupciones
Bit 7: GIE
Habilita Interrupcin Global

1=Habilita int. no enmascaradas


0=Deshabilita todas las int.

Bit 6: EEIE
1=Habilita
Int. al completar escritura en EEPROM 0=Deshabilita
Bit 5: T0IE
Int. por desbordamiento del TMR0

1=Habilita
0=Deshabilita

Bit 4: INTE
Int. externa RB0/INT

1=Habilita
0=Deshabilita

Bit 3: RBIE
1=Habilita
Int. por cambio de estado en RB7:RB4 0=Deshabilita
Bit 2: T0IF
Bandera de int. T0IE TMR0

1=Ocurri un desbordamiento
0=No ha ocurrido desbordamiento

Bit 1: INTF
Bandera de int. INTE RB0/INT

1=Ocurri una int. externa


0=No ha ocurrido int. externa

Bit 0: RBIF
Bandera de int. RBIE RB7:RB4

1=Al menos un pin cambio de edo.


0=Ningn pin ha cambiado de edo.

3.2.2.4 SET DE 35 INSTRUCCIONES


Las instrucciones son de 14 bits
Se pueden clasificar en cinco grupos, estos son:
1.
2.
3.
4.
5.

Operaciones orientadas a manejar registros de tamao byte


Operaciones orientadas a manejar bits
Operaciones que manejan valores inmediatos
Operaciones especiales y de control del flujo del programa
Operaciones de salto condicional
1. Operaciones orientadas a manejar registros de tamao byte
Formato
13
8 7 6
0
Cdigo OP d f (7 bits Dir. registro)
d=0
El registro destino es W
d=1
El registro destino es f
SINTAXIS
ADDWF
ANDWF
CLRF
CLRW
COMF
DECF
INCF
IORWF
MOVF
MOVWF
NOP RLF
RRF
SUBWF
SWAPF
XORWF

f,d
f,d
ff,d
f,d
f,d
f,d
f,d
ff,d
f,d
f,d
f,d
f,d

DESCRIPCIN

CICLOS SEALIZADORES

Suma W y f
AND W con f
Borra f
Borra W
Complementa f
Decrementa f
Incrementa f
OR entre W y f
Mueve f
Mueve W y f
No opera
Rota f a la izq
Rota f a la der
Resta W a f
Intercambia nibbles
XOR de W con f

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

C,DC,Z
Z
Z
Z
Z
Z
Z
Z
Z
C
C
C,DC,Z
Z

2. Operaciones orientadas a manejar bits


Formato
13

10 9

7 6

Cdigo OP

b (posicin) f (7
bits Dir. registro)

b=3 bits para la direccin del bit


SINTAXIS
BCF f,b
BSF f,b

DESCRIPCIN

CICLOS SEALIZADORES

Borra bit de f
1
Pone a 1 del bit de f 1

3. Operaciones que manejan valores inmediatos


Formato
13
8 7
Cdigo OP K (Literal)
K=valor inmediato de 8 bits
SINTAXIS
ADDLW
ANDLW
IORLW
MOVLW
SUBLW
XORLW

DESCRIPCIN
K Suma inmediata con W
K AND inmediato con W
K OR inmediato con W
K Mueve a W un valor inmediato
K Resta W de un inmediato
K OR exclusiva con W

CICLOS SEALIZADORES
1
1
1
1
1
1

C,DC,Z
Z
Z
C,DC,Z
Z

4. Operaciones especiales y de control de flujo del programa


Formato
En general el formato es el siguiente:
13
8 7
Cdigo OP K (Literal)
K=valor inmediato de 8 bits

Solamente para las instrucciones CALL y GOTO el formato es:


13
11 10
Cdigo OP
K (Literal)
K=valor inmediato de 11 bits
SINTAXIS

DESCRIPCIN

CICLOS SEALIZADORES

CALL
K Llamada a subrutina
CLRWDT
Borra o refresca el Perro Guardin
GOTO
K Salto incondicional
RETFIE
Retorno de interrupcin con GIE=1
RETLW
K Retorno subrutina y carga W=k
RETURN
Retorno de subrutina
SLEEP
Pasa al modo de reposo

2
1
2
2
2
2
1

TO#, PD#

TO#, PD#

5. Operaciones de salto condicional


Formato
13
8 7 6
0
Cdigo OP d f (7 bits Dir. registro)
d=0
El registro destino es W
d=1
El registro destino es f
SINTAXIS

DESCRIPCIN

BTFSC f,d
Explora in bit de f y brinca si vale 0
BTFSS
f,d Explora in bit de f y brinca si vale 1
Decrementa f y si es 0 brinca
DECFSZ f,d
INCFSZ f,d
Incrementa f y si es 0 brinca

CICLOS SEALIZADORES
1(2)
1(2)
1(2)
1(2)

3.2.2.5 Memoria EEPROM de datos


El PIC16F84A tiene una memoria EEPROM de datos de 64 bytes, esta se puede leer y escribir
durante la operacin normal del microcontrolador. La memoria EEPROM no es mapeada
directamente, es direccionada indirectamente por 4 SFR (Registros de Funcin Especial), estos
son:
EEDATA (registro de lectura/escritura de 8 bits de datos)
EEADR (registro que usa slo los 6 bits menos significativos para direccionar 64 localidades)
EECON1 (registro de control)
EECON2 (registro no implementado fsicamente)
Registro EECON1
Contiene varios bits de control para configurar el divisor de frecuencia o prescaler del
TMR0/WDT, la interrupcin externa INT, TMR0 y los pull-ups en el PORTB.
L= bit de lectura E= bit de escritura - 0/1/x= Valor despus de un RESET
U= Bit no implementado, se lee como 0
S= En software slo puede ser puesto a 1, por hardware es puesto a 0

U - 0 U - 0 U - 0 L/E - 0 L/E - x L/E - 0 L/S - 0 L/S - 0


EEIF WRERR WREN WR
RD
Bit 7
Bit 0

En el PIC16F84A:
Bit 7 - 5: 0

Bits no implementados

Bit 4: EEIF
1= Escritura completada
Bandera de int. de escritura en EEPROM 0= No completada
Bit 3: WRERR
Bandera de error en la EEPROM

1= Termino prematuro de escritura


0= Escritura completada

Bit 2: WREN
Habilita escritura en la EEPROM

1= Permite ciclos de escritura


0= Inhibe escritura

Bit 1: WR
Control de escritura

1= Inicia ciclo de escritura


0= Ciclo de escritura completado

Bit 0: RD
Control de lectura

1= Inicia ciclo de lectura


0= No ha iniciado lectura

Un ciclo de escritura de una posicin de la EEPROM de datos tiene una duracin tpica de 10ms,
que resulta muy larga para la velocidad del procesador. Por este motivo existen varios bits en el
registro EECON1 para supervisar la completa y correcta terminacin del mismo.
El registro EECON2 en realidad no est implementado fsicamente. Al leerlo todos sus bits son 0.
Slo se emplea como un dispositivo de seguridad durante el proceso de escritura de la
EEPROM, para evitar las interferencias en el largo intervalo de tiempo que precisa su desarrollo.
Proceso de lectura
BCF
MOVLW
MOVWF
BSF
BSF
BCF
MOVF

STATUS, RP0
DIRECCION
EEADR
STATUS, RP0
EECON1, RD
STATUS, RP0
EEDATA, W

Proceso de escritura

;Banco 0
;Direccin que se va a leer se carga en W
;Banco 1
;Inicia ciclo de lectura
;Banco 0
;W=EEDATA

BCF
MOVLW
MOVWF
MOVLW
MOVWF
BCF
BSF
BSF
MOVLW
MOVWF
MOVLW
MOVWF
BSF
BSF

STATUS, RP0
DIRECCION
EEADR
DATO
EEDATA
INTCON, GIE
STATUS, RP0
EECON1, WREN
55 H
EECON2
AA H
EECON2
EECON1, WR
INTCON, GIE

;Banco 0
;Direccin donde se va a escribir se carga en W
;Registro que almacena una direccin
;Dato que se va a escribir se carga en W
;Registro que almacena un dato
;Deshabilita todas las interrupciones
;Banco 1
;Habilita permiso de escritura
;Carga 55h en W
;Mueve el contenido de W a EECON2
;Carga AAh en W
;Mueve el contenido de W a EECON2
;Inicia ciclo de escritura
;Habilita interrupciones

Proceso para verificar la escritura


BCF
MOVF
BSF
BSF
BCF
SUBWF
BTFSS
GOTO

STATUS, RP0
EEDATA, W
STATUS, RP0
EECON1, RD
STATUS, RP0
EEDATA, W
STATUS, Z
WRITE_ERR

;Banco 0
;W=EEDATA
;Banco 1
;Inicia ciclo de lectura
;Banco 0
;Salta si el bit Z del registro STATUS es 1
;Ha ocurrido un error

3.2.2.6 Temporizadores
Los PIC16X8X y los de la gama baja disponen de dos temporizadores, el TMR0 y el Perro
Guardin (Watchdog). El primero acta como principal y sobre l recae el control de tiempo y el
contaje de impulsos. El otro vigila que el programa no se <<cuelgue>> y para ello cada cierto
tiempo comprueba si el programa se est ejecutando normalmente. Si el control est detenido
en un bucle infinito a la espera de algn acontecimiento que no se produce, el Perro Guardin
<<ladra>> lo que se traduce en un Reset que reinicializa todo el sistema.
-Temporizador/Contador TMR0
Es un contador de 8 bits ascendente
Al estar conectado al bus de datos puede ser ledo y escrito en cualquier momento
Es posible seleccionar reloj interno externo
Se puede seleccionar filo de subida de bajada para el reloj externo
Tiene un pre-divisor de frecuencia programable
Habilita una interrupcin en el desbordamiento de FF H a 00 H
Puede actuar de dos maneras diferentes, como temporizador y como contador, esto se puede
seleccionar con el bit 5: T0CS del registro OPTION.

1.a Como temporizador (T0CS=0), cuando se carga en el registro que implementa al recurso un
valor inicial se incrementa con cada ciclo de instruccin hasta que se desborda, o sea, pasa de
FF H a 00 H y avisa poniendo a 1 un bit sealizador y/o provocando una interrupcin. Si el
registro TMR0 es escrito, el incremento es inhibido por los siguientes dos ciclos de instruccin y
se pone a 0 el divisor de frecuencia.
2.a Como contador de sucesos (T0CS=1), que estn representados por los impulsos que se
aplican a la patita RA4/T0CKI. TMR0 incrementar cada filo de subida de bajada segn se
configure con el bit 4: T0SE del registro OPTION. Al llegar al valor FF H se desborda el contador
y, con el siguiente impulso, pasa a 00H, advirtiendo esta circunstancia activando un sealizador
y/o provocando una interrupcin.
*Registros asociados con el TIMER0
DIR
01 H
0B H
81 H
85 H

Nombre
TMR0
INTCON
OPTION
TRIS A

Bit 7 Bit 6
Bit 5 Bit 4
Bit 3 Bit 2 Bit 1 Bit 0
Conta dor / Reloj en tiempo real de 8 bits
*GIE EEIE
*T0IE INTE
RBIE *T0IF INTF RBIF
RBPU INTEDG *T0CS *T0SE *PSA *PS2 *PS1 *PS0
Registro de direccin de datos PORTA

Predivisor Prescaler
Su nombre se debe a que los impulsos pasan primero por el Divisor y luego se aplican al TMR0,
una vez aumentada su duracin. Los impulsos, que divide el Divisor de frecuencia por un rango,
pueden provenir de la seal de reloj interna o de los que se aplican a la pata RA4/T0CKI
-Perro Guardin (WDT)
Es un contador interno de 8 bits que origina un Reset cuando se desborda. Su control de
tiempos es independiente del TMR0 y est basado en una simple red R-C que no requiere
ningn componente externo. Debido a que es independiente, el WDT correr an si el reloj
aplicado a los pines OSC1/CLKIN y OSC2/CLKOUT son parados, por ejemplo por la ejecucin
de la instruccin SLEEP. Si el microcontrolador est en modo SLEEP un Reset provocado por el
WDT causa que este vuelva a las condiciones normales de operacin.
Periodo WDT
El WDT tiene un periodo de 18 ms, sin el postdivisor, el periodo del WDT vara con temperatura,
VDD, entre otros factores. Las instrucciones CLRWDT y SEP limpian el WDT y el postdivisor (si
es que fue asignado al WDT) previniendo un desbordamiento en el contador y por ende un
Reset.
El bit TO en el registro STATUS ser puesto a 0 cuando un desbordamiento en el WDT ha
ocurrido.
Postdivisor Postscaler
Su nombre se debe a que los impulsos primero se aplican al Perro Guardin y luego pasan por
el Divisor para aumentar su duracin. Con el Postdivisor en 1:128 se alcanza un periodo de 2.3
segundos.

*Registros asociados con el WDT


DIR
Nombre
Bit 7 Bit 6
Bit 5 Bit 4 Bit 3
Bit 2
Bit 1
Bit 0
2007 H Config. bits CP
CP
CP
CP
PWRTE *WDTE FOSC1 FOSC2
81 H
OPTION
RBPU INTEDG *T0CS *T0SE *PSA
*PS2
*PS1
*PS0

En la figura siguiente (Figura 3.7) se muestra un esquema simplificado de la seccin dedicada al


control de tiempos en la arquitectura de los PIC16X8X
3.2.2.7 Puertas de E/S
9

Son 13 lneas de E/S (5 del PORTA y 8 del PORTB). Cada lnea puede configurarse
independientemente como entrada o como salida con los SFR (Registros de Funcin Especial)
TRISA y TRISB, poniendo en su bit correspondiente 0 para salida de dato y 1 para entrada de
dato.

Despus de encenderse o de reiniciarse estas lneas son configuradas como entradas y se leen
como 0.

Algunas de estas lneas tienen dos o ms funciones.


INICIALIZANDO EL PUERTO B
BCF
CLRF
BSF
MOVLW
MOVWF

STATUS, RP0
PORTB
STATUS, RP0
0xCF
TRISB

;Banco 0
;Borra el registro PORTB
;Banco 1
;Carga CF h en W
;Mueve el contenido de W a TRISB

Con el cdigo anterior el PORTB se configura de la siguiente manera:


RB<3:0> como entradas
RB<5:4> como salidas
RB<7:6> como entradas
3.2.3 La palabra de configuracin
Se trata de una posicin reservada de la memoria de programa situada en la direccin 2007H,
pertenece a el espacio de memoria especial de prueba/configuracin (2000H 3FFFH).
La palabra de configuracin es accesible nicamente durante el proceso de grabacin. Al
escribirse el programa de la aplicacin es necesario grabar el contenido de acuerdo con las
caractersticas del sistema.
L/Pu
CP CP CP CP CP CP CP CP CP CP PWRTE WDTE FOSC1 FOSC2
Bit 13
Bit 0

L= bit de lectura P= bit que escribe durante la programacin u= el


valor del bit no cambia despus de un RESET
Bit 13 - 4: CP Proteccin del cdigo
1= No protegida la memoria de cdigo 0= Protegida.
El programa no se puede leer, tampoco se puede sobrescribir, evita que pueda ser accedida la
EEPROM de datos y, finalmente, si se modifica el CP de 0 a 1, se borra completamente la
memoria de programa.
Bit 3: PWRTE Activacin del temporizador POWER-UP
El temporizador POWER-UP retrasa 72ms la puesta en marcha o Reset que se produce al
conectar la alimentacin al PIC, garantizando la estabilidad de la tensin aplicada. 1=
Desactivado
0= Activado
Bit 2: WDTE Activacin del temporizador Perro Guardin
1= Activado
0= Desactivado
Bit 1-0: FOSC1-FOSC0 Seleccin del oscilador utilizado
11: Oscilador RC Resistor / Capacitor
10: Oscilador HS High Speed Crystal / Resonator
01: Oscilador XT Crystal / Resonator
00: Oscilador LP Low Power Crystal
3.2.4 Interrupciones del microcontrolador PIC16F84A
El PIC16F84A tiene 4 fuentes de interrupcin
1. Interrupcin externa por el pin RB0/INT
Atiende acontecimientos externos en tiempo real.
Ocurre cuando un impulso vlido aparece en el pin RB0/INT.
La duracin de la interrupcin ser de 3 o 4 ciclos de instruccin, dependiendo de el momento en
que el evento se efecte.
Esta interrupcin regresa al procesador del modo SLEEP.
La bandera INTF debe ser borrada en software por la rutina de servicio de interrupcin (ISR)
para impedir un ciclo infinito.
Registros asociados con esta interrupcin
DIR Nombre Bit 7 Bit 6
Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
0B H INTCON *GIE EEIE
T0IE *INTE RBIE T0IF *INTF RBIF
81 H OPTION RBPU *INTEDG T0CS T0SE PSA PS2 PS1 PS0
2. Interrupcin por desbordamiento de TMR0
Ocurre cuando hay un cambio en TMR0 de FF H a 00 H, la bandera T0IF se pone a 1.

La bandera T0IF debe ser borrada en software por la rutina de servicio de interrupcin (ISR) para
impedir un ciclo infinito.
Registros asociados con esta interrupcin
DIR Nombre Bit 7 Bit 6
Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
0B H INTCON *GIE EEIE
*T0IE INTE RBIE *T0IF INTF RBIF
81 H OPTION RBPU INTEDG *T0CS *T0SE *PSA *PS2 *PS1 *PS0
3. Interrupcin al cambio en PORTB <7:4>
Ocurre cuando hay un cambio de estado en los pines del 7 al 4 del PORTB.
Esto va a ser vlido nicamente para los pines que estn configurados como entradas. La
bandera RBIF debe ser borrada en software por la rutina de servicio de interrupcin (ISR) para
impedir un ciclo infinito.
Registro asociado con esta interrupcin
DIR Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
0B H INTCON *GIE EEIE T0IE INTE *RBIE T0IF INTF *RBIF
4. Interrupcin al completar la escritura en la EEPROM de datos
Ocurre cuando se completa el ciclo de escritura en la EEPROM de datos.
La bandera EEIF debe ser borrada en software por la rutina de servicio de interrupcin (ISR)
para impedir un ciclo infinito.
Registro asociado con esta interrupcin
DIR Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3
Bit 2
Bit 1 Bit 0
0B H INTCON *GIE *EEIE T0IE INTE RBIE
T0IF
INTF RBIF
88 H EECON1 *EEIF WRERR WREN WR RD

MICROCONTROLADOR:
ATMEGA328
Microcontrolador arquitectura de 8
bits de la familia AVR
Hasta 23 pines I/O disponibles
Memoria de programa flash de 32 kB
SRAM de 2 kB
EEPROM de datos de 1 kB
Velocidad max. de la CPU 20 MIPS
Oscilador externo hasta 20 MHz
Voltaje de operacin 1.8 V a 5.5 V
ADC de 10 bits y 6 canales

2 timers/contadores/comparadores
de 8 bits
1 timer/contador/comparador/Captura
de 16 bits
6 canales PWM
USART Full duplex
SPI
TWI Two-wire Serial Interface (2Wire) (I2C compatible)
Comparador anlogo
Mltiples fuentes de interrupcin

Oscilador de reloj interno


Brown-out
Reset
de
programable
Power-on Reset
Modos de bajo consumo
Soporta
10,000
ciclos
borrado/escritura en memoria flash

valor

de

Soporta
100,000
ciclos
de
borrado/escritura en memoria EEPROM
Proteccin de cdigo programable
Cumple directivas RoHS
Encapsulado PDIP de 28 pines

Los pines de alimentacin son como sigue:

VIN. La tensin de entrada a la placa Arduino cuando se trata de utilizar una fuente de
alimentacin externa (en contraposicin a 5 voltios de la conexin USB o de otra fuente de
alimentacin regulada). Usted puede suministrar tensin a travs de este pin, o, si el
suministro de tensin a travs de la toma de poder, acceder a ella a travs de este pin.
5V. Este pin como salida una 5V regulado por el regulador en el tablero. El tablero
puede ser alimentado ya sea desde el conector de alimentacin de CC (7 12), el conector
USB (5V) o el pasador de VIN del tablero (7-12V). El suministro de tensin a travs de los
5V o 3.3V pins no pasa por el regulador, y puede daar su tablero. No aconsejamos ella.
3V3. Un suministro de 3,3 voltios generados por el regulador a bordo. El drenaje actual
mximo es de 50 mA.
GND. patillas de tierra.
IOREF. Este pin de la placa Arduino proporciona la tensin de referencia con la que
opera el microcontrolador. Un protector configurado lee el voltaje del pin IOREF y
selecciona la fuente de alimentacin adecuada o habilita traductores de tensin en las
salidas para trabajar con los 5V o 3.3V.
Memoria

El ATmega328 tiene 32 KB (con 0,5 KB utilizado por el gestor de arranque). Tambin


dispone de 2 KB de SRAM y 1 KB de EEPROM (que puede ser ledo y escrito con
la librera EEPROM ).

Entrada y salida

Cada uno de los 14 pines digitales en el Uno se puede utilizar como una entrada o
salida, utilizando pinMode () ,digitalWrite () , y () digitalRead funciones. Operan a 5
voltios. Cada pin puede proporcionar o recibir un mximo de 40 mA y tiene una
resistencia de pull-up (desconectado por defecto) de 20-50 kOhms. Adems, algunos
pernos han especializado funciones:

De serie: 0 (RX) y 1 (TX). Se utiliza para recibir (RX) y de transmisin (TX) TTL datos en
serie. Estos pines estn conectados a los pines correspondientes del ATmega8U2 USB-toTTL de chips de serie.
Interrupciones externas:. 2 y 3 Estos pines pueden ser configurados para activar una
interrupcin en un valor bajo, un flanco ascendente o descendente, o un cambio en el
valor. Ver el attachInterrupt () funcin para ms detalles.
PWM:. 3, 5, 6, 9, 10, y 11 proporcionan PWM de 8 bits con el () analogWrite funcin.

SPI:. 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Estos pines soportan comunicacin SPI
utilizando la biblioteca de SPI .
LED:. 13 Hay un built-in LED conectado al pin digital 13. Cuando el pin es de alto valor,
el LED est encendido, cuando el pasador es bajo, es apagado.

TWI: A4 o A5 pin SDA y SCL o pin. Apoyar la comunicacin TWI utilizando la librera
Wire .

El Uno tiene 6 entradas analgicas, etiquetados A0 a A5, cada uno de los cuales
proporcionan 10 bits de resolucin (es decir, 1.024 valores diferentes). Por defecto se
miden desde el suelo a 5 voltios, aunque es posible cambiar el extremo superior de su
rango utilizando el pin AREF y la analogReference () funcin. Adems, algunos pernos
han especializado funcionalidad:

Hay otro par de pins en la placa:

AREF. Voltaje
de
referencia
para
las
entradas
analgicas. Se
utiliza
con analogReference ().
Restablecer. Lleve esta lnea BAJO para reiniciar el microcontrolador. Normalmente se
utiliza para agregar un botn de reinicio para escudos que bloquean el uno en el tablero.
Comunicacin

El Arduino Uno tiene una serie de instalaciones para la comunicacin con un ordenador,
otro Arduino, u otros microcontroladores. El ATmega328 ofrece UART TTL (5V) de
comunicacin en serie, que est disponible en los pines digitales 0 (RX) y 1
(TX). Un ATmega16U2 en los canales de mesa esta comunicacin serie a travs de
USB y aparece como un puerto com virtual para el software en el ordenador. El firmware
16U2 utiliza los controladores COM USB estndar, y no se necesita ningn controlador
externo. Sin embargo, en Windows, se requiere un archivo inf. . El software de Arduino
incluye un monitor de serie que permite que los datos simples de texto que se envan
desde y hacia la placa Arduino. Las RX y TX LED en el tablero parpadearn cuando se
estn transmitiendo datos a travs del chip de USB a serie y conexin USB al
ordenador (pero no para la comunicacin en serie en los pines 0 y 1).

Una biblioteca Software Serial permite la comunicacin en serie en cualquiera de los


pines digitales de la ONU.

El ATmega328 tambin es compatible con I2C (TWI) y la comunicacin SPI. El software


de Arduino incluye una librera Wire para simplificar el uso del I2C bus, ver
la documentacin para ms detalles.

Programacin

El Arduino Uno se puede programar con el software de Arduino ( descarga ). Seleccione


Arduino Uno de las Herramientas> Junta de men (de acuerdo con el microcontrolador
en su tablero). Para obtener ms detalles, consulte la referencia y tutoriales .

Los ATmega328 en la Arduino Uno viene precargado con un gestor de arranque que le
permite subir un cdigo nuevo a ella sin el uso de un programador de hardware
externo. Se comunica utilizando el original STK500 protocolo ( de referencia , archivos
de cabecera C ).

Tambin puede pasar por alto el gestor de arranque y programar el microcontrolador a


travs del ICSP (In-Circuit Serial Programming) cabecea; consulte estas
instrucciones para obtener ms informacin.

El ATmega16U2 (o 8U2 en el rev1 y tableros Rev2) cdigo fuente del firmware


disponible. El ATmega16U2 / 8U2 se carga con un cargador de arranque DFU, que
puede ser activado por:

En las placas Rev1: conectar el jumper de soldadura en la parte posterior del tablero
(cerca del mapa de Italia) y luego reiniciar el 8U2.

En las placas Rev2 o posteriores: hay una resistencia que tirando de la lnea 8U2/16U2
HWB a tierra, por lo que es ms fcil de poner en modo DFU.
CONCLUSION
Hemos conocido dos controladores que manejaremos durante la unidad 4, dmonos
cuenta que hay caractersticas mencionadas en esta investigacin que convierten a los
microcontroladores en dispositivos todoterreno con un sin fin de aplicaciones: desde un
reloj despertador como el que todos tenemos en la mesilla de noche hasta el control de
traccin de un coche.

BIBLIOGRAFIA

http://mikroe.es/tag/atmega328p-pu/
https://daviddelaviuda.wordpress.com/tag/atmega328p-pu/
http://es.slideshare.net/pablogindel/microcontroladores-2-gpio-y-pwm

You might also like