Pic16f877 PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 74

Microcontroladores

PIC 16F877A

Vanessa Vargas
Pablo Ramos

Área de Sistemas Digitales


Departamento de Eléctrica, Electrónica y Telecomunicaciones
{vcvargas} {pframos} @espe.edu.ec
AGENDA
Características Generales

Configuración

Arquitectura Interna

Instrucciones

Plataforma de Desarrollo
2
AGENDA
Características Generales

Configuración

Arquitectura Interna

Instrucciones

Plataforma de Desarrollo
3
PIC16F877A COMPONENTES

DIAGRAMA GENERAL DE MICROCONTROLADOR PIC

Fuente: (Valdés, 2007)


4
PIC16F877A COMPONENTES

CARACTERÍSTICAS GENERALES

Juego de 35 instrucciones (RISC)

Memoria de Programa FLASH de 8 K de 14 bits


• Direcciones desde 0000H a la 1FFFH.

Memoria de Datos RAM de 368 bytes.


• Direcciones lógicas de 000H a 1FFH
• Cada registro 1 byte(8 bits)
Memoria de Datos EEPROM de 256 bytes.
• Direcciones de 00H a FFH
• Cada posición de memoria 1 byte(8bits)
Tiene 14 tipos diferentes de interrupciones.

5
PIC16F877A

CARACTERÍSTICAS GENERALES

Permite un rango de frecuencias de trabajo de hasta 20 MHz.

Soporta osciladores de tipo externo: LP, RC, HS, XT. No tiene oscilador interno.

Perro guardián Watch Dog Timer (WDT) con el reloj RC interno para mejor
seguridad.

Tres temporizadores :
• TMR0 y TMR2 de 8 bits y TMR1 de 16 bits.

Comparadores Analógicos.

Modo de bajo consumo de potencia.

6
PIC16F877A

CARACTERÍSTICAS GENERALES
2 Canales de Modulación de Ancho de Pulso(PWM )
• Resolución máxima: 10-bit

Puerto Serial:
• Synchronous Serial Port (SSP) con dos modos de funcionamiento
• SPI (Master mode) e I2C (Master/Slave)
• Universal Synchronous Asynchronous Receiver Transmitter(USART )
Puerto paralelo esclavo de 8 Bits (PSP)

Un conversor análogo digital (ADC) de 10 bits


• 8 canales de conversion que multiplexados comparten el modulo ADC

Tiene 33 líneas de E/S digitales divididas en cinco puertos:


• Puerto A (6 líneas)
• PuertoS B, C y D (8 líneas cada uno)
• Puerto E (3 líneas).
7
PIC16F877A

ENCAPSULADOS

Fuente: Datasheet

Un tipo de encapsulado es de plástico DIP con 40 pines.

8
PIC16F877A

ENCAPSULADOS

Fuente: Datasheet
9
PIC16F877A

CARACTERÍSTICAS ELÉCTRICAS
Voltaje de alimentación • debe estar entre 2 y 5.5 V.
(VDD)

Voltaje de grabación de • debe estar entre 12 y 14 V DC.


programa (Vpp)

Corriente máxima absorbida • A, B y E o C y D combinados: 200


por los puertos mA.

Corriente máxima • A, B y E o C y D combinados: 200


suministrada por los puertos mA .

Corriente máxima absorbida • 25 mA.


por línea

Corriente máxima • 25 mA.


suministrada por línea

10
PIC 16F877A ARQUITECTURA

ARQUITECTURA
4 MODOS DE OSCILACIÓN
8 k PALABRAS 368 REG 256 REG
"HS" • 4MHz - 20 MHz
RAM EEPROM
DE 14 BITS DE 1 BYTE DE 1 BYTE
"XT" • 455KHz a 4 MHz

"LP" • 32 y 200 KHz 5 PUERTOS DE


MEMORIA DE MEMORIA DE
ENT/SAL (33 I/O)
"RC" • < 5.5 MHz
PROGRAMA DATOS
A(6 I/O)
uC
BROWN OUT RESET
RELOJ ENTRADAS B(8 I/O)
POWER ON RESET CPU
RESET
SALIDAS C(8 I/O)
POWER UP TIMER
WATCH DOG CONTADORES / MÓDULOS BAJO CONSUMO D(8 I/O)
TEMPORIZADORES ESPECIALES (sleep)
TIMER (8 BITS)
TIMER 0 (8 BITS) SSP(SPI e I2C) E(3 I/O)
IN CIRCUIT ADC
TIMER 1 (16 BITS) COMPARADOR
DEBUGGER
PSP CCP(PWM,
LOW VOLTAGE 11
TIMER 2 (8 BITS) PROGRAMMING USART Medición Tiempos)
AGENDA
Características Generales

Configuración

Arquitectura Interna

Instrucciones

Plataforma de Desarrollo
12
PIC16F877A ARQUITECTURA

CONFIGURACIÓN DEL MICROCONTROLADOR


IN CIRCUIT CONFIGURACIÓN ESTÁTICA
"HS" • 4MHz - 20 MHz DEBUGGER RAM
• Se realiza al momento de grabar
"XT" • 455KHz a 4 MHz LOW VOLTAGE EEPROM el microcontrolador
PROGRAMMING • Almacenada en Registro de tipo
"LP" • 32 y 200 KHz EEPROM
MEMORIA DE MEMORIA DE • CONFIGURATION WORD - 2007H
"RC" • < 5.5 MHz
PROGRAMA DATOS
PORT A(6 I/O)
BROWN OUT RESET uC
RELOJ ENTRADAS PORT B(8 I/O)
POWER ON RESET CPU
RESET
PORT C(8 I/O)
SALIDAS
POWER UP TIMER PORT D(8 I/O)
WATCH DOG TIMER CONTADORES / MÓDULOS PORT E(3 I/O)
(8 BITS) TEMPORIZADORES ESPECIALES

TIMER 0 (8 BITS) CONFIGURACIÓN DINÁMICA


ADC SSP(SPI e I2C) CCP(PWM, Med. • Durante la ejecución del
TIMER 1 (16 BITS)
Tiempos) programa
PSP BAJO
TIMER 2 (8 BITS) CONSUMO COMPARADOR • Almacenada en varios
13
USART ANÁLOGO Registros de la RAM
(sleep)
PIC16F877A CONFIGURACIÓN

CONFIGURACIÓN ESTÁTICA
Se realiza al momento de grabar el
IN CIRCUIT microcontrolador
"HS" • 4MHz - 20 MHz DEBUGGER RAM
LOW VOLTAGE Se realiza una única vez
"XT" • 455KHz a 4 MHz EEPROM
PROGRAMMING
Almacenada en Registro de tipo
"LP" • 32 y 200 KHz EEPROM - 2007H
"RC" • < 5.5 MHz MEMORIA DE MEMORIA DE No se borra al retirar suministro de
PROGRAMA DATOS energía

BROWN OUT RESET uC


RELOJ ENTRADAS
POWER ON RESET CPU
PORT B(8 I/O)
RESET
POWER UP TIMER SALIDAS A,C,D,E
WATCH DOG TIMER
CONTADORES / MÓDULOS CONFIGURACIÓN DINÁMICA
(8 BITS) TEMPORIZADORES ESPECIALES
OTROS TIMERS CONFIGURACIÓN HARDWARE

CONFIGURATION WORD - 2007H

14
PIC16F877A CONFIGURACIÓN

OSCILADORES

Fuente: (Valdés, 2007)


15
PIC16F877A CONFIGURACIÓN

OSCILADORES – CRISTAL EXTERNO

Fuente: (Valdés, 2007)

16
PIC16F877A CONFIGURACIÓN

OSCILADORES – CIRCUITO RC EXTERNO

Fuente: (Valdés, 2007)

Este modo sólo se recomienda cuando la aplicación no


requiera una gran precisión en la medición de tiempos.

Rangos. La frecuencia de oscilación depende no sólo de los valores


de Rext y Cext, sino también del voltaje de la fuente Vdd.

Los rangos admisibles para resistencia y capacitor son:

• Rext: de 3 a 100 Kohms 17


PIC16F877A CONFIGURACIÓN

CONFIGURACIÓN DEL RESET


Produce una reiniciación del PIC al recibir un pulso
Posee un MCLR (Master Clear) externo bajo en el pin correspondiente durante Operación
Normal
FUENTES DE RESET

Por un POR (Power-On Reset) Se genera siempre que la tensión desciende entre
2.1V y 1.5V.

Por un BOR(Brown Out Reset)


Por un fallo en la alimentación y debe estar
habilitado el bit BODEN del CONFIG WORD.

Por desbordamiento del WATCH DOG Si se encuentra habilitado el bit WDTE del CONFIG
TIMER(WDT) WORD

Por despertar de un comando SLEEP Ya sea por WDT o por pulso bajo en MCLR
TIMERS

TEMPORIZADOR DE ARRANQUE DE Debe estar habilitado el bit PWRTE del


ENCENDIDO(PWRT) CONFIG WORD

TEMPORIZADOR DE ESTABILIDAD DEL


OSCILADOR 18
PIC16F877A CONFIGURACIÓN

FUENTES DE RESET

19
Fuente: (Valdés, 2007)
PIC16F877A CONFIGURACIÓN

FUENTES DE RESET

20
Fuente: (Valdés, 2007)
PIC16F877A CONFIGURACIÓN

CIRCUITO RESET POR ENCENDIDO

Fuente: (Valdés, 2007)


21
PIC16F877A CONFIGURACIÓN

CIRCUITO RESET POR ENCENDIDO

Fuente: (Valdés, 2007)


22
PIC16F877A CONFIGURACIÓN

CIRCUITO RESET POR ENCENDIDO O MANUAL

Fuente: (Valdés, 2007)


23
PIC16F877A CONFIGURACIÓN

RESET POR WATCH DOG TIMER

Fuente: (Valdés, 2007)


24
PIC16F877A CONFIGURACIÓN

PALABRA DE CONFIGURACIÓN
bit 13-12 y bit 5-4: CP1:CP0: Bits de protección del código de la memoria Flash de programa
11 = Sin protección de código
10 = se protege solo las últimas 256 celdas 1F00h a 1FFFh
01 = se protege la mitad más significativa 1000h a 1FFFh
00 = se protege toda la memoria 0000h a lFFFh

25
PIC16F877A ARQUITECTURA

CONFIGURACIÓN DINÁMICA
Se realiza durante la ejecución del programa BANCO0 BANCO1 BANCO2 BANCO3
La configuración de cada módulo está almacenada en RAM
uno o varios Registros de la RAM
La configuración se pierde al retirar suministro de energía EEPROM

MEMORIA DE MEMORIA DE
CONFIGURACIÓN ESTÁTICA PROGRAMA DATOS

CONFIGURACIÓN HARDWARE uC
RELOJ
CPU
RESET
POWER UP TIMER ENTRADAS PORT A(6 I/O)
WATCH DOG TIMER PORT B(8 I/O)
CONTADORES / MÓDULOS
(8 BITS) TEMPORIZADORES ESPECIALES SALIDAS
PORT C(8 I/O)
TIMER 0 (8 BITS)
CCP(PWM, PORT D(8 I/O)
TIMER 1 (16 BITS) ADC SSP(SPI e I2C)
Medición Tiempos) PORT E(3 I/O)
PSP BAJO
TIMER 2 (8 BITS) CONSUMO COMPARADOR
26
USART (sleep) ANÁLOGO
AGENDA
Características Generales

Configuración

Arquitectura Interna

Instrucciones

Plataforma de Desarrollo
27
PIC 16F877A ARQUITECTURA

ARQUITECTURA
4 MODOS DE OSCILACIÓN
8 k PALABRAS 368 REG 256 REG
"HS" • 4MHz - 20 MHz
RAM EEPROM
DE 14 BITS DE 1 BYTE DE 1 BYTE
"XT" • 455KHz a 4 MHz

"LP" • 32 y 200 KHz 5 PUERTOS DE


MEMORIA DE MEMORIA DE
ENT/SAL (33 I/O)
"RC" • < 5.5 MHz
PROGRAMA DATOS
A(6 I/O)
uC
BROWN OUT RESET
RELOJ ENTRADAS B(8 I/O)
POWER ON RESET CPU
RESET
SALIDAS C(8 I/O)
POWER UP TIMER
WATCH DOG CONTADORES / MÓDULOS BAJO D(8 I/O)
TIMER (8 BITS) TEMPORIZADORES ESPECIALES CONSUMO(sleep)

TIMER 0 (8 BITS) SSP(SPI e I2C) E(3 I/O)


IN CIRCUIT ADC
TIMER 1 (16 BITS) COMPARADOR
DEBUGGER
PSP CCP(PWM,
LOW VOLTAGE 28
TIMER 2 (8 BITS) PROGRAMMING USART Medición Tiempos)
ARQUITECTURA INTERNA

MEMORIA PIC 16F877A


TAMAÑO DE MEMORIA= A x B EXPLICACION
A= Número de registros = 2𝑛 ; 𝑛 = 𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑙í𝑛𝑒𝑎𝑠 𝑑𝑒 𝑑𝑖𝑟𝑒𝑐𝑐𝑖𝑜𝑛𝑒𝑠 DETALLADA
B= Tamaño de palabra o registro en bits ; 𝐵 = 𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑙í𝑛𝑒𝑎𝑠 𝑑𝑒 𝑑𝑎𝑡𝑜𝑠
14 bits
0000H A= 8k
A=23 x210 13 líneas de
MEMORIA DE Direcciones direcciones
PROGRAMA- FLASH 8k A=213
EEPROM

1FFFH 14 líneas de
Tamaño= 8k x 14 bits
Datos B=14
datos
= 14 kBytes

1 BYTE REGISTROS DE PROPÓSITO ESPECIAL(SPR)


1 BYTE

MEMORIA • Almacenan configuración e información del


hardware del sistema MEMORIA
368 REG FÍSICOS = RAM- 256 REG EEPROM DE
512 REG LÓGICOS CONTIENE DATOS
SPRs Y GPRs REGISTROS DE PROPÓSITO GENERAL (GPR)

• Usados por el usuario para variables del 29


programa
PIC16F877A ARQUITECTURA

MEMORIA RAM
CONFIGURACIÓN BANCO0 BANCO1 BANCO2 BANCO3

• Tiene 368 registros físicos distribuídos en 512 RAM


registros lógicos.
• Los 512 registros lógicos están dividos en 4 bancos. EEPROM
• Cada banco tiene 128 registros lógicos.
UTILIDAD
• SPRs: MEMORIA DE MEMORIA DE
PROGRAMA DATOS
• Configuración de
módulos uC
• Información de módulos RELOJ
• GPRS: Almacenan
CPU
variables de programa RESET
ENTRADAS PORT A(6 I/O)
POWER UP TIMER
CONTADORES / MÓDULOS
PORT B(8 I/O)
WATCH DOG TIMER TEMPORIZADORES ESPECIALES SALIDAS
(8 BITS) PORT C(8 I/O)

TIMER 0 (8 BITS) CCP(PWM, PORT D(8 I/O)


ADC SSP(SPI e I2C)
Medición Tiempos) PORT E(3 I/O)
TIMER 1 (16 BITS) PSP BAJO
CONSUMO COMPARADOR
30
TIMER 2 (8 BITS) USART (sleep) ANÁLOGO
Fuente: Datasheet PIC16F877A MEMORIA RAM

4 BANCOS
VARIOS REGISTROS LÓGICOS
ASOCIADOS A UN REG FÍSICO

EJ: PUERTO B

Configuración
DE PROPÓSITO
ESPECIAL SPRs
Información

REGISTROS
Particulares a
cada Banco
DE PROPÓSITO
GENERAL GPRs De acceso
general o
Globales

80

16 Fuente: Datasheet
31
REGISTROS DE PROPÓSITO
PIC16F877A
Fuente: Datasheet ESPECIAL (SPRs)

BANCO 0
DIRECCIONAMIENTO
CONTADOR DE PROGRAMA
REGISTRO DE ESTADO

PUERTOS GPIO

INTERRUPCIONES

TEMPORIZADORES/
CONTADORES

MÓDULO SSP

MÓDULO CCP1

MÓDULO USART

MÓDULO CCP2
32
MÓDULO ADC
Fuente: Datasheet
REGISTROS DE PROPÓSITO
PIC16F877A
Fuente: Datasheet ESPECIAL (SPRs)

BANCO 1
DIRECCIONAMIENTO
REGISTRO CONFIGURACIÓN
CONTADOR DE PROGRAMA
REGISTRO DE ESTADO

CONFIGURACIÓN DE
PUERTOS GPIO

INTERRUPCIONES

CONDICIONES RESET
TEMPORIZADORES

MÓDULO SSP

MÓDULO USART

MÓDULO DE COMPARACIÓN
ANÁLOGA (SOLO VERSION A)
MÓDULO ADC 33
Fuente: Datasheet
REGISTROS DE PROPÓSITO
PIC16F877A
Fuente: Datasheet ESPECIAL (SPRs)

BANCO 2

DIRECCIONAMIENTO
TEMPORIZADOR 0
CONTADOR DE PROGRAMA
REGISTRO DE ESTADO
PUERTO B

INTERRUPCIONES

MEMORIA EEPROM DE
DATOS

Fuente: Datasheet
34
REGISTROS DE PROPÓSITO
PIC16F877A
Fuente: Datasheet ESPECIAL (SPRs)

BANCO 3

DIRECCIONAMIENTO
TEMPORIZADOR 0
CONTADOR DE PROGRAMA
REGISTRO DE ESTADO

PUERTO B

INTERRUPCIONES
MEMORIA EEPROM DE
DATOS

Fuente: Datasheet
35
PIC16F877A

DIRECCIONAMIENTO DE MEMORIA RAM


Cada 128 registros
Divididos Cada banco
512 bytes registro un del 0 al 127
en 4 bancos 128 bytes
byte(8bits) (00h – 7FH)
“000000000” 00h “010000000” 80h “100000000” 100h “110000000” 180h

“001111111” 7Fh “011111111” FFh “101111111” 17Fh “111111111” 1FFh

BANCO 0 BANCO 1 BANCO 2 BANCO 3

Direccionamiento Directo Direccionamiento Indirecto


• La dirección se encuentra en el RP1(𝐴8 ), RP0 (𝐴7 ) y 7 • La dirección se encuentra en el IRP (𝐴8 ) y los 8
bits en la propia instrucción (𝐴6 − 𝐴0 ). bits en el registro FSR (𝐴7 − 𝐴0 ).

Los bits IRP, RP1 y RP0 corresponden a los bits 7, 6 y 5 del registro STATUS 36
PIC16F877A EJEMPLO 1

DIRECCIONAMIENTO DIRECT0
MOVWF 0x30
(𝐴6 − 𝐴0 )
“000000000” 00h “010000000” 80h “100000000” 100h “110000000” 180h

“000110000” 30h “010110000” B0h “100110000” 130h “110110000” 1B0h

“001111111” 7Fh “011111111” FFh “101111111” 17Fh “111111111” 1FFh

BANCO 0 BANCO 1 BANCO 2 BANCO 3

0x30: es el desplazamiento dentro del banco.


El banco está definido por RP1 y RP0.
37
PIC16F877A EJEMPLO 1

DIRECCIONAMIENTO INDIRECT0

MOVLW 83h IRP FSR


DIRECCION DE
83h
MOVWF FSR 1 REGISTRO INDIRECTO
« 1000 0011» es 183h
BSF 03h,7

MOVWF 0x00 INDIRECTO : Mueve a W la dirección formada por IRP y el


contenido del registro FSR
En este caso mueve al registro 183h lo que contenga W

38
EXPLICACION
CONCEPTOS BÁSICOS DETALLADA

FUNCIONES DE LA CPU- ANALOGÍA


ARQUITECTURA MICROPROCESADA
PC
MEMORIA DE MEMORIA DE
PROGRAMA DATOS

GUARDA EL 1.1 BUSCA LA INSTRUCCIÓN


RESULTADO EN APUNTADA POR EL PC EN LA
UN REGISTRO 1. FETCH: MEMORIA DE PROGRAMA
UNIDAD DE CONTROL BÚSQUEDA
DE LA CPU o
RELOJ PC IR EN MEMORIA 1.2 LA COPIA EN IR
DE DATOS
RESET 2.1 DECODIFICA
CPU ALU INSTRUCCIÓN
4. SAVE: 2. DECODE: QUE ESTÁ EN IR
ALMACENA DECODIFICA
REGISTROS
2.2 PC= PC+1

0001 0010 01000101


TRES BUSES ENTRADAS SALIDAS LA ALU EJECUTA 3. EXECUTE:
LA INSTRUCCIÓN EJECUTA LOAD r2 45h
Datos CPU: Unidad de Procesamiento Central INST CON LOS INST OPER A OPER B
Direcciones ALU: Unidad Aritmética Lógica OPERADORES
Control PC: Contador de Programa
OPER A Y OPER B 39
IR: Registro de Instrucciones
PIC16F877A

UNIDAD ARITMÉTICA LÓGICA

Fuente: (Valdés, 2007)


40
PIC16F877A

REGISTRO ESTATUS (03h)

bit 7: IRP: Selección de bancos para el direccionamiento bit 2: Z: Flag de Cero


indirecto 1 = El resultado de la última operación aritmética o lógica
1 = Bancos 2 y 3 (100h - 1FFh) es Cero
0 = Bancos 0 y 1 (00h - FFh) 0 = El resultado de la última operación aritmética o lógica
es distinto cero
bit 6 -5: RP1:RP0 Selección del banco para el
direccionamiento directo bit 1: DC : Flag de acarreo en el 4º bit de menos peso
11 = Banco 3 (180h - 1FFh) 1 = Acarreo en la suma
10 = Banco 2(100h -17Fh) 0 = No acarreo en la suma
01 = Banco 1 (80h - FFh) En la resta es al contrario
00 = Banco 0 (00h -7Fh)
bit 0: C: Flag de acarreo en el octavo bit
bit 4: #TO : Flag de Timer Out 1 = Se ha producido un acarreo en la suma y no en la resta
1 = Después de conectar VDD o ejecutar CLRWDT o SLEEP 0 = Se ha producido un acarreo en la resta y no en la suma
0 = Al desbordarse el temporizador de WDT Este bit también se utiliza en las instrucciones de rotación

bit 3: #PD: Flag de Power Down


1 = Después de conectar VDD o al ejecutar la instrucción
CLRWDT
0 = Al ejecutar la instrucción SLEEP 41
PIC16F877A

CICLO DE INSTRUCCIÓN

• Decodificación de
la instrucción
Q1:

• Lectura del dato


(si lo hay)
Q2:

• Procesa el dato
Q3:

• Escribe el dato
Q4:

Fuente: (Valdés, 2007)

42
CONCEPTOS BÁSICOS

EJECUCIÓN DE INSTRUCCIONES
INST 0
INST 1
INST 2

INST i LÍNEA DE INTERRUPCIÓN
PROGRAMA INST i+1
PRINCIPAL …
INST m(CALL xx)
VALORES DEL CONTADOR DE PROGRAMA EN EL TIEMPO
INST m+1
… 0 1 2 … i x x+1 … z i+1 … m q q+1 … s m+1 … p 2
INST p (GOTO 2)

INST q
SUBRUTINA O INST q+1
FUNCIÓN XX …
INST s(RETURN)
GUARDA GUARDA SALTA PC
INST x
RUTINA DE
INST x+1 EL PC+1 EL PC+1 PC=2
TRATAMIENTO
… Pila=i+1 Pila=m+1
INTERRUPCIÓN INST z(RETURN)
Pila RETORNA Pila RETORNA
A PC A PC
PC= Pila=i+1 PC= Pila=m+1
43
CONCEPTOS BÁSICOS EJERCICIO

EJECUCIÓN DE INSTRUCCIONES
INST 0
INST 1
INST 2


PROGRAMA INST i(CALL xx)
PRINCIPAL INST i+1

INST l (GOTO 2) VALORES DEL CONTADOR DE PROGRAMA EN EL TIEMPO
INST m
INST m+1
SUBRUTINA O …
FUNCIÓN XX INST o(CALL yy)
INT o+1

INST p(RETURN)
INST q LÍNEA DE INTERRUPCIÓN
SUBRUTINA O INST q+1
FUNCIÓN YY …
INST s(RETURN)
RUTINA DE INST x
TRATAMIENTO INST x+1
INTERRUPCIÓN …
44
INST z(RETURN)
PIC16F877A

EJECUCIÓN DE INSTRUCCIONES

Fuente: (Valdés, 2007) 45


PIC16F877A

PILA
INST 0
INST 1
INST 2


INST i(CALL xx) PROGRAMA
INST i+1 PRINCIPAL

INST l (GOTO 2)
INST m
INST m+1
… SUBRUTINA O
INST o(CALL yy) FUNCIÓN XX
INT o+1

INT INST p(RETURN)
INST q
SUBRUTINA O
INST q+1 FUNCIÓN YY

INST s(RETURN)
INST x RUTINA DE
INST x+1 TRATAMIENTO
… INTERRUPCIÓN
Fuente: Datasheet 46
INST z(RETURN)
PIC16F877A

INTERRUPCIONES
EEPROM TIMER0
RB0 BAJO
PSP
CONSUMO
RB7:RB4
(sleep)
ADC

USART

REGISTROS
SSP
PIE1 PIR1 (SPI)
PIE2 PIR2
CCP1

TIMER2
REGISTRO INTCON
TIMER1

CCP2
SSP
(I2C)

COMPARADOR 47
Fuente: Datasheet
ANÁLOGO
PIC16F877A

PUERTO A

CIRCUITO PORT A3: A0


Fuente: Datasheet
48
PIC16F877A

PUERTO A

CIRCUITO PIN A4
CIRCUITO PIN A5

Fuente: Datasheet
49
PIC16F877A

PUERTO B

CIRCUITO PORT B3: B0


Fuente: Datasheet CIRCUITO PORT B7: B4 50
PIC16F877A

PUERTO C

CIRCUITO PORT C7,C6,C5,C2,C1,C0 CIRCUITO PORT C4: C3 51


Fuente: Datasheet
PIC16F877A

PUERTO D

CIRCUITO PORT D7: D0


PORTD AL SER CONFIGURADO COMO
Fuente: Datasheet
PSP(PARALLEL SLAVE PORT), EN DONDE EL
52
PORTE ACTUA COMO SEÑALES DE CONTROL
PIC16F877A

PUERTO E

CONFIGURADO COMO
ENTRADAS/SALIDAS DIGITALES

CIRCUITO PORT E2: E0


Fuente: Datasheet 53
FAMILIA PIC DE MICROCONTROLADORES ARQUITECTURA

ARQUITECTURA

Fuente: Datasheet
54
AGENDA
Características Generales

Configuración

Arquitectura Interna

Instrucciones

Plataforma de Desarrollo
55
PIC16F877A

INSTRUCCIONES

56
PIC16F877A

INSTRUCCIONES

57
AGENDA
Características Generales

Configuración

Arquitectura Interna

Instrucciones

Plataforma de Desarrollo
58
PLATAFORMAS DE DESARROLLO

MPLAB
PROGRAMADOR –COMPILADOR-DEPURADOR

59
PLATAFORMAS DE DESARROLLO

DEPURADOR

La ejecución pausada paso por paso de


programas
Permite
La revisión de registros y localidades de
memoria o puerto y

La modificación de los contenidos de dichos


registros y localidades de memoria o puerto
y

En ocasiones inclusive la modificación del


propio programa.

60
CARACTERÍSTICAS DE MICROCONTROLADORES

SIMULADOR
Permite la ejecución y depuración de
programas de manera simulada.

La simulación se realiza sobre una CPU


diferente
• No se realiza en tiempo real
• No puede simular todas las
capacidades de un microcontrolador

Sin embargo resultan ideales para una


depuración por bajo costo.

Si bien es una ayuda, debe considerarse


que en condiciones reales el sistema
puede requerir cambios o adecuaciones
para su correcto desempeño. 61
CARACTERÍSTICAS DE MICROCONTROLADORES

PROGRAMADOR
Permite grabar información en la memoria PROM (EPROM, EEPROM o FLASH)
incluida en el chip del microcontrolador.

Normalmente la información guardada en este tipo de memoria corresponde


a código de programa

62
PREGUNTAS

06/06/2020 63
ANEXOS

CONCEPTOS BÁSICOS DE MEMORIA

FUNCIONES DE LA CPU

06/06/2020 64
CONCEPTOS BÁSICOS TAMAÑO DE MEMORIA

MEMORIA
TAMAÑO DE MEMORIA= A x B
A= Número de registros = 2𝑛 ; 𝑛 = 𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑙í𝑛𝑒𝑎𝑠 𝑑𝑒 𝑑𝑖𝑟𝑒𝑐𝑐𝑖𝑜𝑛𝑒𝑠
B= Tamaño de palabra o registro en bits ; 𝐵 = 𝑛ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑙í𝑛𝑒𝑎𝑠 𝑑𝑒 𝑑𝑎𝑡𝑜𝑠
B=4; 4 líneas de datos

𝑨𝟐 𝑨𝟏 𝑨𝟎 𝐷3 𝐷2 𝐷1 𝐷0 TAMAÑO DE MEMORIA= A x B
TAM= 8 x 4 bits
Reg 0 0 0 0 TAM= 32 bits ó 4 bytes( 4B)
Reg 1 0 0 1
A=8 1Byte= 8
Reg 2 0 1 0 A = 𝟐𝟑 ; bits
Reg 3 0 1 1 3 líneas de direcciones
𝑫𝟑 𝑫𝟐 𝑫𝟏 𝑫𝟎
Reg 4 1 0 0
DATOS
𝑨𝟐

DIRECCIONES
Reg 5 1 0 1
𝑨𝟏 MEMORIA
𝑨𝟎 DE 4 B
Reg 6 1 1 0
R W En
Reg 7 1 1 1
65
PIC16F877A RETORNAR

PAGINACIÓN DE MEMORIA
Dirección Lógica o Relativa (𝐷𝐿𝑂𝐺 )
• Utilizada en paginación de memoria.
• Cada página tiene a registros (𝒂𝒓𝒆𝒈 ). Por tanto el tamaño de la página es 𝑎𝑟𝑒𝑔 x B ; B= tamaño de registro
• La dirección lógica está compuesta del número de página( 𝒏𝒑𝒂𝒈 ) y el desplazamiento en la página (desp)
• 𝐷𝐿𝑂𝐺 = 𝑛𝑝𝑎𝑔 ∶ desp
Dirección Lineal o Absoluta (𝐷𝐿𝐼𝑁 )
• 𝐷𝐿𝐼𝑁 = 𝑛𝑝𝑎𝑔 𝑥 𝑎𝑟𝑒𝑔 + desp

66
CONCEPTOS BÁSICOS

COMPONENTES DE UN COMPUTADOR
SOFTWARE
• Realizado por el programador, puede cambiar constantemente y se ejecuta en el hardware

HARDWARE
• Una vez sintetizado(implementado) puede cambiar muy poco, dependiendo de la arquitectura

COMPARACIÓN DE LENGUAJES DE PROGRAMACIÓN

67
FUNCIONES DE LA CPU

SOFTWARE -PROGRAMADOR
FUNCION DE COMPILADOR

LENGUAJES DE
ALTO NIVEL

LENGUAJE
ENSAMBLADOR
EQUIVALENTES
ALMACENADO
LENGUAJES DE EN MEMORIA
MÁQUINA DE PROGRAMA

0001 0010 01000101


h: constante con el valor de 0x45
LOAD r2 45h
68
CONCEPTOS BÁSICOS

FUNCIONES DE LA CPU
ARQUITECTURA MICROPROCESADA
PC
MEMORIA DE MEMORIA DE
PROGRAMA DATOS

GUARDA EL 1.1 BUSCA LA INSTRUCCIÓN


RESULTADO EN APUNTADA POR EL PC EN LA
UN REGISTRO 1. FETCH: MEMORIA DE PROGRAMA
UNIDAD DE CONTROL BÚSQUEDA
DE LA CPU o
RELOJ PC IR EN MEMORIA 1.2 LA COPIA EN IR
DE DATOS
RESET 2.1 DECODIFICA
CPU -uP ALU INSTRUCCIÓN
4. SAVE: 2. DECODE: QUE ESTÁ EN IR
ALMACENA DECODIFICA
REGISTROS
2.2 PC= PC+1

0001 0010 01000101


TRES BUSES ENTRADAS SALIDAS LA ALU EJECUTA 3. EXECUTE:
LA INSTRUCCIÓN EJECUTA LOAD r2 45h
Datos CPU: Unidad de Procesamiento Central INST CON LOS INST OPER A OPER B
Direcciones ALU: Unidad Aritmética Lógica OPERADORES
Control PC: Contador de Programa
OPER A Y OPER B 69
IR: Registro de Instrucciones
FUNCIONES DE LA CPU CONCEPTOS BÁSICOS

UNIDAD ARITMÉTICA LÓGICA


OPERANDO A OPERANDO B OPERANDO A OPERANDO B

ALU ARITMÉTICA LÓGICA

SELECTORES
MUX
CONTIENEN EL
NÚMERO DE
RESULTADO INSTRUCCIÓN EN
FORMATO BINARIO
RESULTADO

La parte aritmética y la parte lógica trabajan simultáneamente.


Un multiplexor selecciona cual de los dos resultados sea el lógico o el
aritmético salen fuera de la ALU.
70
FUNCIONES DE LA CPU

SECUENCIA DE ACCIONES DEL CICLO DE INSTRUCCIÓN

Se pone el contador del programa (PC) sobre el bus de direcciones,


de esta manera la CPU pasa la instrucción de la memoria principal a
Buscar la instrucción en través del bus de datos al Registro de Dirección de Memoria (MAR).
la memoria principal A continuación el valor del MAR es colocado en el Registro de
Instrucción (IR), que es un circuito que guarda la instrucción
FETCH

temporalmente de manera que pueda ser decodificada y ejecutada.

El decodificador de instrucción interpreta e implementa la


Decodificar la instrucción. El registro de instrucción (IR) mantiene la instrucción en
instrucción curso mientras el contador de programa (PC) guarda la dirección de
memoria de la siguiente instrucción a ser ejecutada.

Los datos que forman la instrucción son interpretados por la unidad


de control, quien envía la información como una secuencia de
Ejecutar la instrucción
EXECUTE

señales de control a las unidades funcionales relevantes de la CPU


(ALU y otros) para realizar la operación requerida.

Almacenar o guardar El resultado generado por la operación es almacenado en la memoria


principal o enviado a un dispositivo de salida dependiendo de la
resultados instrucción.

06/06/2020 71
FUNCIONES DE LA CPU

SECUENCIA DE ACCIONES

CICLO DE RELOJ
• Es el periodo de la señal de reloj (oscilador) a la entrada del microprocesador.
Muchas veces se define como frecuencia de reloj.
• En una máquina sincrónica define el tiempo que se demora cada una de las
acciones en el ciclo de instrucción

Si por ejemplo cada acción tarda 2


ciclos de reloj. Toda la instrucción se
FETCH DECODE EXECUTE SAVE demorará en ejecutarse 8 ciclos de
reloj , a este tiempo se conoce como
FETCH EXECUTE CICLO DE INSTRUCCIÓN.
06/06/2020 72
FUNCIONES DE LA CPU

CICLO DE MAQUINA Y CICLO DE INSTRUCCIÓN

FETCH EXECUTE FETCH EXECUTE FETCH EXECUTE


….
INST0 INST0 INST1 INTS 1 INSTn INSTn

FETCH Trabajan la Unidad de Control y la Memoria EL 50% DEL TIEMPO LOS


COMPONENTES ESTÁN
DESOCUPADOS
EXECUTE Trabajan la ALU y la Memoria

CON PIPELINE
FETCH EXECUTE
INST0 INST0

FETCH EXECUTE
INST1 INST1
REDUCCIÓN EN EL
TIEMPO DE EJECUCÍÓN
FETCH EXECUTE
INST2 INST2 DEL PROGRAMA

FETCH EXECUTE
INST3 INST3

06/06/2020 73
FUNCIONES DE LA CPU RETORNAR

CICLO DE MAQUINA Y CICLO DE INSTRUCCIÓN


FETCH EXECUTE FETCH EXECUTE FETCH EXECUTE FETCH EXECUTE
INST0 INST0 INST1 INTS1 INST2 INTS 2 INST3 INST3 SIN PIPELINE

CM 0 CM 1 CM 2
CI 0 CI 1
FETCH EXECUTE
INST0 INST0 CON PIPELINE
CI 0 FETCH EXECUTE
INST1 INST1

CI 1 FETCH EXECUTE
INST2 INST2

FETCH EXECUTE
CM 0 CM 1 CM 2 INST3 INST3

CICLO DE MÁQUINA (CM)


• Representa cada cuánto tiempo la unidad central de procesamiento (CPU) va a buscar una nueva instrucción.
Estos ciclos suelen ser múltiplos enteros del ciclo de reloj

CICLO DE INSTRUCCIÓN (CI)


• Es el periodo (tiempo) que tarda la CPU en ejecutar una determinada instrucción en lenguaje máquina.
• También llamado ciclo de fetch-decode-execute o simplemente fetch-execute
• Un ciclo de instrucción puede contener uno o varios ciclos de máquina.(*)
06/06/2020 74

También podría gustarte