Tema 4 LA MEMORIA DE PROGRAMAS

Anuncio
Tema:
Memoria de PROGRAMAS
Introducción
Como es habitual en todos los µprocesadores y
µcontroladores el programa que se ejecutará,
se encuentra grabado en una memoria no
volátil, estando este programa formado por
diferentes instrucciones del repertorio del
micro.
A diferencia de otros microcontroladores en los
cuales una instrucción se puede componer de
varios códigos de operación, y ser diferentes
en tamaño, en los PIC las instrucciones solo
poseen un único código de operación (CO),
siendo el ancho de las mismas único.
2
El tipo de memoria que poseen los
microcontroladores 16F87X es tipo FLASH,
pudiendo tener una capacidad de 4K u 8K
palabras de 14 bits
Como se puede deducir el ancho de las
instrucciones de los PIC 16F87X es de 14
bits.
El orden de ejecución de las instrucciones es
secuencial, comenzando desde la dirección
mas baja.
El formato de las diferentes instrucciones es
el mostrado en la siguiente transparencia .
3
Formato de las instrucciones
4
El elemento que almacena la dirección de
próxima instrucción a ejecutar es el
CONTADOR DE PROGRAMAS (PC)
Todos los microcontroladores PIC de la gama
media poseen un contador de programas de
13 bits, pudiendo direccionar 8Kx14 bits.
Los PIC 16F876/7 poseen una memoria FLASH
de 8Kx14 bits, mientras que los PIC 16F873/4
poseen una memoria de 4Kx14 bits.
DPE DESARROLLO DE PROYECTOS
5
Organización de la memoria en los PIC
16F77/876
El contador de Programas
™ El contador de programas PC se forma por la
unión de 2 registros de 8 bits cada uno
llamados PCH y PCL.
™ PCL se encuentra en la dirección 02h (banco
0) y replicado en las direcciones 82h (banco 1),
102h (banco 2) y 182h (banco 3).
™ Los cinco bits de mayor peso (PC 12:8), están
alojados en el registro PCH, sobre este
registro no se puede leer ni escribir,
pero
se puede acceder indirectamente a ellos
DPE DESARROLLO DE PROYECTOS
7
mediante los 5 bits de menor peso del
PCLATCH, implementado en la dirección 0Ah
de RAM y replicado en las direcciones 8Ah,
10Ah y 18Ah.
¾ En las instrucciones de ruptura de secuencia
(GOTO y CALL), los 11 bits de menor peso
corresponden al código de operación,
mientras que los 2 bits de mayor peso, los
suministran respectivamente los bits 4 y 3 del
PCLATCH, que están direccionando una de
las 4 posibles páginas de la memoria de
programas.
Así pues es labor del programador posicionar
los bits 4 y 3 del PCLATCH si se desea salir de
la página actual.
Recuérdese que cada página consta de 2k.
El contador de Programas
Ejemplo de llamada a una subrutina que se encuentra
en la página 1 desde la página 0, este ejemplo asume
que el PCLATCH se salva y se restaura por el
programa de atención a la interrupción (si se usan las
interrupciones)
ORG 0x500
BCF PCLATH,4
BSF PCLATH,3
;Selecciona pagina 1 (800h-FFFh)
CALL SUB1_P1
;llamada a la subrutina en
;pagina 1 (800h-FFFh)
DPE DESARROLLO DE PROYECTOS
10
ORG 0x900
;pagina 1 (800h-FFFh)
SUB1_P1:
.
;subrutina en pagina 1 (800h-FFFh)
.
.
.
RETURN
;retorno de llamada a subrutina
;de pagina 0 (000h-7FFh)
DPE DESARROLLO DE PROYECTOS
11
Reset y Vector de Interrupciones
El RESET del microcontrolador hace que el valor
del PC pase a valer 0000h, y será la instrucción
que haya en esta dirección la primera que se
ejecute.
El VECTOR DE INTERRUPCIONES; Un detalle
importante de la memoria de programas, es que
tiene reservada la dirección 04h para él. Este
vector es único, y sirve para atender a todas la
interrupciones.
Debido a esto, en la dirección 0h deberemos
incluir una instrucción de salto hasta la dirección
05h, que es donde deberá comenzar el programa
de usuario.
DPE DESARROLLO DE PROYECTOS
12
LA PILA
La pila que poseen los PIC no es accesible al
programador, es una pila tipo LIFO, con 8
niveles de anidamiento que funciona
automáticamente.
Con la instrucción CALL y con las
interrupciones, el valor del PC se salva en el
nivel superior.
DPE DESARROLLO DE PROYECTOS
13
Por el contrario con las instrucciones
RETURN, RETFIE y RETLW el valor contenido
en el nivel superior se carga en el PC.
La pila funciona como un buffer circular. Es
labor del programador verificar que el nivel
de anidamiento no supere la capacidad de la
pila ya que no existe ningún flag que nos lo
indique.
DPE DESARROLLO DE PROYECTOS
14
PALABRAS DE IDENTIFICACIÓN
Los PIC de la gama media disponen de 4
posiciones de memoria situadas en las
posiciones 2000h a 2003h, reservadas para
las palabras de identificación ID.
Estas palabras se escriben durante el
proceso de grabación, empleándose sólo los
4 bits de menor peso, y se utilizan para
indicar el código del dispositivo, el número de
serie, la versión del programa etc.
DPE DESARROLLO DE PROYECTOS
15
PALABRA DE CONFIGURACIÓN
Los PIC de la gama media tienen una posición
de memoria de programa reservada ( 2007h),
dicha posición se escribirá durante el proceso
de grabación. La información está contenida
tal y como muestra la figura.
DPE DESARROLLO DE PROYECTOS
16
Según los valores escritos en los bits 13-12 y 5-4,
se protegerán determinadas zonas de código y
de acuerdo a la siguiente tabla:
DPE DESARROLLO DE PROYECTOS
17
Bit 11 Debug: Modo depurador en circuito
1= Desactivado RB6 y RB7 actúan como líneas de
E/S
0 = Activado el modo depurador; RB6 y RB7 están
dedicadas al depurador, la depuración se puede
hacer desde el MPLAB
Bit 10: Bit no implementado su lectura da “1”
DPE DESARROLLO DE PROYECTOS
18
Bit 9 WRT: Permiso de escritura en la memoria
FLASH
1= Se puede escribir en la parte de memoria
FLASH no protegida
0= Prohibición de escritura
DPE DESARROLLO DE PROYECTOS
19
Bit 8 CPD: Código de protección de la memoria
EEPRM de datos:
1= No hay protección en la EEPROM
0= Protección de código en la EEPRM
DPE DESARROLLO DE PROYECTOS
20
Bit 7 LVP: Bit de permiso para programación en
bajo voltaje:
1= RB3/PGM tiene permitida la grabación en
bajo voltaje
0= RB3/PGM funciona como E/S digital
DPE DESARROLLO DE PROYECTOS
21
Bit 6 BODEM: Bit de permiso para el reset por
caída de tensión:
1= BOR activado
0= BOR desactivado
DPE DESARROLLO DE PROYECTOS
22
Bit 3 PWRTE: Bit de permiso para el timer de
conexión de alimentación:
1= PWRT desactivado
0= PWRT activado
DPE DESARROLLO DE PROYECTOS
23
Bit 2 WDTE: Bit de permiso para el timer del perro
guardián:
1= WDTE activado
0= WDTE desactivado
DPE DESARROLLO DE PROYECTOS
24
Bits 1-0: tipo de oscilador
00
Tipo LP (baja potencia) de 35 a 200 Hz.
01
Tipo XT (cristal de 100 KHz a 4 MHz)
10
Tipo HS (Alta velocidad > 4MHz)
11
Tipo RC (resistencia condensador)
DPE DESARROLLO DE PROYECTOS
25
Notas: Habilitando BOR automáticamente se
habilita POWER-up Timer, asegúrese que
siempre que POWER-up está habilitado, lo está
también Bronw-out Reset.
DPE DESARROLLO DE PROYECTOS
26
PALABRA DE CONFIGURACIÓN
La palabra de configuración se escribe en el
momento de grabar el programa, y en el caso
de utilizar el IC-PROG para programarla,
bastará con validar las casillas que aparecen
en la ventana de dicha aplicación:
DPE DESARROLLO DE PROYECTOS
27
PALABRA DE CONFIGURACIÓN
Bits 0-1
•Bits 13-12 5-4
protección de
código
DPE DESARROLLO DE PROYECTOS
28
Descargar