Você está na página 1de 54

2.2-1 Visión Interna PIC16F873/876.

II
SBM 1
2.2-2 Visión Interna PIC16F874/877.

II
SBM 2
2.2-3 Sistema de memoria.
? Tienen arquitectura Harvard, separa la memoria de datos y la memoria de programa,
y se accede a ellas mediante buses distintos.
? Al acceder mediante buses distintos el ancho de palabra de la memoria de datos y
por tanto del bus de datos, puede ser distinto del ancho de palabra y el bus de
memoria de programa.
? En los PIC16C87X:
1. Ancho del bus y la memoria de datos 8bits.
2. Ancho del bus y la memora de programa 14bits.
? Las instrucciones presentan un formato que ocupa una única palabra de la memoria
de programa. Cada posición de memoria de programa contiene un única instrucción.

II
SBM 3
2.2-4 Mapa de memoria. Programa.

II
SBM 4
2.2-5 Mapa
de memoria para
Datos en
16F877/876

II
SBM 5
Mapa
de memoria para
Datos en
16F874/873

II
SBM 6
2.2-6 Repertorio de instrucciones.
? Hay 35 instrucciones. Estas instr.
son de 14-bits de palabra,
divididas en código de operación
(OPCODE) y uno o más
operandos.
? Las instrucciones pueden operar
sobre bytes(GPR), bits(GPR) o
constantes (literales).
? Todas las instrucciones se
ejecutan en un ciclo de
instrucción. Salvo las que las de
condición y las que modifican el
PC, que necesitan dos ciclos
(NOP).
? El periodo de un ciclo de
instrucción (Tcy) está formado
por 4 periodos de la señal de
reloj. (Si el reloj es de 4MHz->
II Tcy=1microsegundo).
SBM 7
Repertorio de instrucciones.

II
SBM 8
Repertorio de instrucciones.

II
SBM 9
Repertorio de instrucciones.

II
SBM 10
Repertorio de instrucciones.

II
SBM 11
Repertorio de instrucciones.

II
SBM 12
Repertorio de instrucciones.

II
SBM 13
Repertorio de instrucciones.

II
SBM 14
Repertorio de instrucciones.

II
SBM 15
Repertorio de instrucciones.

II
SBM 16
Repertorio de instrucciones.

II
SBM 17
Repertorio de instrucciones.

II
SBM 18
2.2-7 Manejo de PC y pila.
? El PC tiene 13 bits divididos en
[PCH(5bits)|PCL(8bits)].
1. PCL puede leerse y escribirse.
2. PCH no se puede leer, pero se
puede escribir a través de
PCLATH.
3. Hay dos formas de cargar el PC:

? Hay 8 niveles de pila.


1. La zona de pila no es parte de memoria de datos ni programa y no se
puede leer ni escribir por el usuario.
2. El PC se aplia al ejecutar CALL o saltar a una interrupción.
3. Se desapila al ejecutar RETURN, RETLW o RETFILE.
4. El registro PCLATH no se ve afectado por el apliado y desapilado.
II 5. La pila forma un buffer circular y no hay ninguna indicación de
sobreescritura.
SBM 6. No hay instrucciones PUSH y POP. 19
2.2-8 Paginación de la memoria de
programa.
? Todos los PIC 16F87X pueden direccionar 8K de memoria de programa,
correspondientes a los 13 bits del PC.
? Las instrucciones CALL y GOTO sólo suministran los 11 bits más bajos de la
dirección de salto, permitiendo saltos dentro de una página. De 2K.
? Al ejecutar CALL y GOTO los 2 bits más altos del PC se cargan con los dos bits más
latos de PCLATH(4:3).

? Cuando se ejecuta CALL y


GOTO el usuario debe programar
los bits PCLATH(4:3) para que el
salto se realice a la página
deseada.
? Al ejecutar CALL o saltar a una
subrutina los 13bits del PC son
apilados y no es necesario
manipular los bits PCLATH(4:3)
para volver de la subrutina.
Además los valores de
PCLATH(4:3) no se modifican.
II
SBM 20
2.2-9 Direccionamiento directo/indirecto a
memoria de datos.
? El registro INF no existe físicamente.
? Direccionando el registro INF se produce un direccionamiento indirecto.
? En el direccionamiento indirecto la posición de memoria a la que se accede es
la contenida en el registro FSR.
? Como las direcciones son de 9 bits junto con el FSR se concatena el bit IRP del
registro STATUS[7].

II
SBM 21
Direccionamiento directo/indirecto a
memoria de datos.

II
SBM 22
2.2-10 Ejecución de instrucciones.
? La entrada de reloj del OSC1 se divide internamente en 4 para generar 4 relojes sin
solapamiento en cuadratura. Q1, Q2, Q3 y Q4.
? Los cuatro ciclos Q1,Q2,Q3 y Q4 forman un ciclo de instrucción.
? El contador de programa se incrementa en Q1.
? Una vez incrementado PC, la instrucción se carga en el registro de instrucción desde
la memoria de programa en Q4 (1 ciclo de instrucción).
? Una vez almacenada la instrucción se decodifica y se ejecuta durante los siguientes 4
periodos de la señal de reloj hasta el próximo Q4. (1 ciclo de instrucción).

II
SBM 23
Ejecución de instrucciones.
? La unidad de ejecución está segmentada en dos niveles:
1. Pre-busqueda instrucciones.
2. Decodificación/ejecución.
? Todas las instrucciones se ejecutan en un ciclo de instrucción salvo las de salto.

II
SBM 24
2.2-11 Puertos de Entrada/Salida. Puerto A.
? El Puerto A tiene 6 bits y
es bidirecional.
? La función (entrada/salida)
correspondiente del Puerto
A se indica con TRISA:
1. Con un ‘1’ en un bit de
TRISA el pin
correspondiente del
puerto es de entrada.
2. Con un ‘0’ en un bit de
TRISA el pin
correspondiente del
puerto es de salida.

? Al leer de PORTA se lee


el valor presente en el pin.
Y escribiendo en PORTA
se modifica el latch de
datos. Las escrituras son
read-modify-write.
II
SBM 25
Puertos de Entrada/Salida. Puerto A.

II
SBM 26
Puertos de Entrada/Salida. Puerto A.
? Algunos registros están multiplexados entre pin de propósito general y
funciones alternas.
? Cuando se utiliza un periférico el pin correspondiente no debe usarse como pin
de propósito general.

II
SBM 27
Puertos de Entrada/Salida. Puerto A.

II
SBM 28
Puertos de Entrada/Salida. Puerto A.
? La configuración de los pines del puerto A:

II
SBM 29
2.2-12 Puertos de Entrada/Salida. Puerto B.
? El Puerto B tiene 8 bits y es
bidirecional.
? Al igual que en el puerto A exite
el registro TRISB para controlar
la dirección.
? Cada pin del puerto B tiene un
pull-up interno. La habilitación
de todos ellos se realiza mediante
el bit del registro
OPTIO_REG<7> (#RBPU). El
pull-up se deshabilita
automáticamente cuando el
puerto se programa como salida.
? Los bits más altos del puerto B
<RB7:RB4>, cuando están
configurados como entradas,
pueden causar una interrupción
por cambio del valor de
entrada.Esta interrupción puede
despertar al PIC del modo
SLEEP.
? La condición de la interrupción
se cancela leyendo el puerto
II (PORTB) y limpiando el flag
SBM RBIF.
30
Puertos de Entrada/Salida. Puerto B.

II
SBM 31
Puertos de Entrada/Salida. Puerto B.
? Los registros y la función de los pines del puerto B son:

II
SBM 32
2.2-13 Puertos de Entrada/Salida. Puerto C.
? El Puerto C tiene 8 bits y es
bidirecional.
? Al igual que en los casos
anteriores el puerto C tiene el
registro TRISC para indicar el
sentido de los datos (entrada o
salida).
? Si se habilitan los periféricos
correspondientes los bits del
registro TRISC deben
programarse de forma
correspondiente.

II
SBM 33
Puertos de Entrada/Salida. Puerto C.

II
SBM 34
Puertos de Entrada/Salida. Puerto C.
? La doble función de cada uno de los pines del puerto C es:.

II
SBM 35
2.2-14 Puertos de Entrada/Salida. Puerto D.
? El Puerto D tiene 8 bits y es
bidirecional.
? Contiene el registro de
configuración TRISD.
? Puede configurarse como puerto
de I/O o como puerto esclavo
paralelo PSP, mediante el bit
PSPMODE del registro TRISE
(bit 4). En este último modo las
entradas son TTL.

II
SBM 36
Puertos de Entrada/Salida. Puerto D.
? La función de cada uno de los pines del puerto D es:.

II
SBM 37
2.2-15 Puertos de Entrada/Salida. Puerto E.
? El Puerto E tiene 3 bits y es
bidirecional.
? Se puede controlar la dirección con
TRISE.
? Pueden ser entradas analógicas
configuración del registro ADCON1.
Deben configurarse como entradas.
? Pueden actuar como pines de control
del PSP, activado mediante
PSPMODE en TRISE. En este caso
deben ser entradas digitales.

II
SBM 38
Puertos de Entrada/Salida. Puerto E.
? La función de cada uno de los pines del puerto E es:.

II
SBM 39
Puertos de Entrada/Salida. Puerto E.
? El registro de control del puerto E es:

II
SBM 40
Puertos de Entrada/Salida. Puerto E.

II
SBM 41
Puertos de Entrada/Salida. Puerto E.
? Si e activa el bit PSPMODE
(TRSIE<4>), el puerto D es
de entrada salida de datos.
? El puerto E actúa como pines
de control. Activados
externamente por el maestro
de la comunicación. Existen
los pines de lectura RD,
escritura WR y habilitación
CS.
? El bit IBF se activa al
escribir el maestro y se
desactiva al leerlo el
programa. De forma inversa
funciona OBF.También
existe bit de sobreescritura
IBOV.
? Puede producir interrupción,
mediante el bit PSPIF del
registro PIR1 que despierta
II al micro.
SBM 42
Puertos de Entrada/Salida. Puerto E.

II
SBM 43
Puertos de Entrada/Salida. Puerto E.

II
SBM 44
2.2-16 Acceso a memoria EEPROM.

? La memoria EEPROM, puede ser de 128bytes (74/73) o 256bytes (77/76)


? Se utiliza para almacenar datos con ancho de palabra de 8bits.
? Se puede leer y escribir en ella sin parar el funcionamiento de la CPU.
? Utiliza los registros:
1. EEADR: dirección de memoria a la que se va a acceder. (se usan 7bits más
bajos en 128bytes o 8 bits en 256bytes).
2. EEDATA:registro donde se escribe el dato o donde se lee el dato.
3. EECON1 registro de control, EECON2 ( no implementado físicamente se utiliza
en la secuencia segura de escritura).

II
SBM 45
Acceso a memoria EEPROM.

II
SBM 46
Acceso a memoria EEPROM.
? En la lectura de la EEPROM de datos hay que realizar la siguiente secuencia:
1. Escribir la dirección en EEDADR.
2. Limpiar el bit EEPGD para indicar lectura de EEPROM de datos.
3. Activar RD. No hay que esperar, la lectura se realiza en un ciclo de instr.
4. Leer el dato de EEDATA, el bit RD se limpia por hardware al cargar
EEDATA.

II
SBM 47
Acceso a memoria EEPROM.
? En la escritura de la EEPROM se realiza la siguiente secuencia:
1. Comprobar el bit WR por si hay alguna escritura en curso.
2. Escribir la dirección en EEDADR.
3. Escribir el dato en EEDATA.
4. Limpiar el bit EEPGD para indicar lectura de EEPROM de datos.
5. Activar el bit WREN, para habilitar la escritura.
6. Desactivar las interrupciones.
7. Ejecutar las siguientes 5 instrucciones:
1. Escribir 55h en W y luego pasarlo a EECON2
2. Escribir Aah en W y luego pasarlo a EECON2
3. Activar WR.
8. Habilitar las interrupciones.
9. Limpiar WREN.
10. Cuando termina el ciclo WR se limpia por hardware y el bit de indicación
de interrupción EEIF se activa. Si el paso 1 no se implementa habría
que esperar hasta que se de esta condición, antes de volver a escribir.

II
SBM 48
Acceso a memoria EEPROM.

II
SBM 49
2.2-17 Acceso a memoria FLASH.
? La memoria FLASH, memoria de programa, puede ser de 4kx14bits (74/73) o
8kx14bits (77/76)
? La memoria FLASH se puede utilizar también para almacenar datos, o se pueden
cambiar parámetros, teniendo con un ancho de palabra de 14bits.
? Se puede leer sin parar el funcionamiento de la CPU, pero la escritura para la
ejecución de instrucciones aunque sigue funcionando los periféricos y se guardan las
peticiones de interrupción.
? Utiliza los registros:
1. (EEADRH:EEADR): dirección de memoria a la que se va a acceder. (se usan 12bits más
bajos en 4Kx14bits o 13 bits en 8Kx14bits).
2. (EEDATH:EEDATA): registro donde se escribe el dato (14 bits) o se lee.
3. EECON1 registro de control, EECON2 ( no implementado físicamente se utiliza en la
secuencia segura de escritura).

II
SBM 50
Acceso a memoria FLASH.
? La lectura de la FLASH es prácticamente igual a la de la EEPROM, salvo que es
más lenta y hay que insertar dos NOP después de iniciar la lectura:
1. Escribir la dirección en EEADRH:EEADR.
2. Limpiar el bit EEPGD para indicar lectura de EEPROM de datos.
3. Activar RD.
4. Insertar dos NOP de espera hasta que lo datos son leídos.
5. Leer el dato de EEDATH:EEDATA, el bit RD se limpia por hardware.

II
SBM 51
Acceso a memoria FLASH.
? La secuencia de escritura es:
1. Escribir la dirección en EEADRH:EEADR.
2. Escribir el dato en EEDATH:EEDATA.
3. Activar el bit EEPGD para indicar escritura de FLASH programa.
4. Activar el bit WREN, para habilitar la escritura.
5. Desactivar las interrupciones.
6. Ejecutar las siguientes 5 instrucciones:
1. Escribir 55h en W y luego pasarlo a EECON2
2. Escribir Aah en W y luego pasarlo a EECON2
3. Activar WR.
7. Ejecutar dos NOP para el tiempo de espera de la FLASH.
8. Habilitar las interrupciones.
9. Limpiar WREN.

? Cuando termina el ciclo WR se limpia por hardware y el bit de indicación de


interrupción EEIF se activa. Para realizar otra escritura no es necesario esperar
hasta que WR se desactive porque el micro no comienza a ejecutar inst hasta
que el ciclo no se ha completado.

II
SBM 52
Acceso a memoria FLASH.

II
SBM 53
Acceso a memoria FLASH.
? La escritura de la FLASH puede deshabilitarse completamente mediante el bit
WRT.
? También existen dos bits para restringir la lectura externa de la FLASH, que
permiten proteger el código estos bits son CP0,CP1. Al igual que WRT sólo se
pueden activar y desactivar al programar el dispositivo.

II
SBM 54

Você também pode gostar