Upload
jose-de-jesus-medina-perez
View
218
Download
0
Embed Size (px)
DESCRIPTION
electronica
Citation preview
Sistemas embebidos y microcontroladores
Modelo de programacin del PIC18F y el set de instrucciones
Introduccin
Para escribir instrucciones en lenguaje ensamblador, es necesario que el programador conozca la estructura interna del microprocesador: acumuladores, registros y banderas.
Modelo de programacin
El modelo de programacin del MCU PIC18F se divide en dos grupos mayores de registros.
Modelo de programacin
ALU Registers
Special Function Registers (SFRs)
WREG
Instruction decoder
STATUS
BSR
FSR0H
FSR0L
FSR0H
FSR0L
FSR0L
Program Counter (21-bits)
Table Pointer
Stack Pointer
Stack
31 niveles
PRODH
PRODL
FSR0L
I/O Ports
Interrupts
EE PROM
Serial I/O
Timer
CCP
A/D Converter
Synchronous Serial I/O
Functions
Misc.
FFF
F80
Working Register (WREG)
El WREG en un PIC18F MCU es similar al acumulador en otros procesadores. Es un registro de 8 bits en ALU que se utiliza para todas las operaciones aritmticas y lgicas.
Bank Select Register (BSR)
Es un registro de 8 bits que solamente utiliza los 4 bits ms bajos para seleccionar el banco de datos de 0-F, los 4 bits superiores son 0.
La Data Memory cuenta con 4096 registros divididos en 16 bancos, cada uno con 256 registros.
El BSR contiene los cuatro bits ms significativos de la direccin de 12 bits de un registro de tipo data register.
Data Memory
FF
00
FF
00
FF
00
FF
00
FF
00
FF
00
FF
00
0
1
2
3
4
5
F
000
07F
200
2FF
500
5FF
FFF
F80
SFRs
GPRs
00
7F
80
FF
Access Bank
BSR
4-bits
STATUS Register
Es un registro de 8 bits que utiliza solamente 5 de ellos, de B0-B4, llamados banderas que indican el status de una operacin.
B0
B1
B2
B3
B4
B5
B6
B7
C
DC
Z
OV
N
Carry
Digit Carry
Zero
Overflow
Sign
___
___
___
STATUS Register
C-> Carry.- esta bandera representa dos operaciones aritmticas: suma y resta.
DC-> Digit carry.- se activa cuando se genera un acarreo entre el bit B3 y B4 en operaciones aritmticas.
Z-> Zero .- esta bandera se activa cuando el resultado de una operacin es cero.
El set de instrucciones incluye dos instrucciones del tipo branch relacionadas con esta bandera: BZ y BNZ. Adems de cinco instrucciones skip: INCFSZ, DECFSZ, TTSTFSZ, BTFSC y BTFSS.
STATUS Register
OV-> Overflow.- esta bandera se relaciona con operaciones de nmeros con signo.
En una operacin de 8 bits, el nmero sin signo ms grande es 255. En nmeros con signo el rango es de -128 a 127. Cuando el resultado cae fuera del rango, se activa la bandera.
N-> Negativo.- indica el status del bit ms significativo del resultado de una operacin lgica/ aritmtica.
STATUS Register
Ejemplo:
9F
+ 52
_____
F1
N=1, OV=0, Z=0, C=0
File Select Registers (FSRs)
Hay tres registros FSR0, FSR1 y FSR2 que contienen direcciones de 12 bits de los registros de datos (data memory) y son utilizados para el direccionamiento indirecto. Para contener una direccin de 12 bits, los registros FSR requieren dos registros de 8 bits FSRH y FSRL.
Program Counter
El PC es un registro de 21 bits que funciona como un contador y proporciona la capacidad de accsesar hasta 2MB de memoria. El PC consiste de tres registros PCL, PCH y PCU.
Table Pointer
stos son registros de 21 bits que son utilizados como apuntadores de memoria para copiar bytes entre la memoria de programa y la de datos.
Stack and stack pointer
El stack es un grupo de 31 registros que son utilizados para el almacenamiento temporal de direcciones de memoria durante la ejecucin del programa. Para identificar estos registros, se ocupa una direccin de 5 bits (stack pointer register).
Special Function Registers
Los diez bloques mostrados en la primer figura representan registros en memoria asociados con puertos I/O, dispositivos de soporte, y procesos de transferencia de datos. Los registros especiales pueden ser:
Puertos I/O.
Interrupciones.
EEPROM.
Serial I/O.
Special Function Registers
Timers.
CCP Registers.
Convertidor A/D.
Synchronous Serial I/O.
Registros de funciones Miscelneas.
Introduccin al set de instrucciones
El PIC18F incluye 77 instrucciones; 73 de las cuales tiene una longitud de una palabra (16 bits) y las cuatro restantes de dos palabras.
El set de instrucciones se divide en siete grupos de acuerdo a sus funciones:
Move (data copy) and load.
Arithmetic.
Logic.
Program redirection (branch/call).
Introduccin al set de instrucciones
Bit manipulation.
Table read-write.
Machine control.
Sin embargo, el fabricante ha clasificado estas instrucciones de acuerdo al tipo de operaciones como byte, bit o literal.
Introduccin al set de instrucciones
Cada instruccin se divide en dos partes: opcode (operacin a ejecutar) y operando (dato sobre el cual se ejecuta la operacin). El mtodo de especificar al operando es llamado el modo de direccionamiento.
Move (data copy) and load operations
En el PIC18F existen tres modos de copiar datos:
Copiar un nmero (literal) directamente en el registro WREG.
OpcodeOperandoSintaxisMOVLW8-bitEjemploCargar el nmero de 8 bits F2H en el WREG.InstruccinMOVLW 0xF2Move (data copy) and load operations
Copiar entre el WREG y otro registro. En este tipo de instruccin, es necesario conocer la ubicacin del registro. La direccin del operando es parte de la instruccin; por esto se llama modo de direccionamiento directo.
OpcodeOperandoSintaxisMOVWFF, aEjemploCopia el contenido de WREG en el registro del Access Bank con la direccin 25H.InstruccinMOVWF0x25, 0Move (data copy) and load operations
Copiar de un registro de datos a otro registro.
OpcodeOperandoSintaxisMOVFFfs, fdEjemploCopia el contenido del registro 0140H en el registro 0170HInstruccinMOVFF0x140, 0x170Arithmetic operations
El set de instrucciones del PIC18F incluye varios tipos de operaciones como suma, resta, incremento (en uno), decremento (en uno), complemeto en 1s y en 2s y multiplicacin.
Arithmetic operations
Existen 3 tipos de instrucciones de suma (as como resta): (1) suma de un nmero (literal) de ocho bits con el WREG, (2) suma de un registro de datos con el WREG y (3) suma del WREG con un registro y el acarreo generado por la operacin.
Arithmetic operations
Suma de un nmero de 8 bits con WREG.
OpcodeOperandoSintaxisADDLW8-bitEjemploSuma el byte 3FH con el contenido de WREG.InstruccinADDLW0x3FArithmetic operations
Suma del WREG con un registro.
OpcodeOperandoSintaxisADDWFF, d, aEjemploSuma el registro 05H con WREG y guarda el resultado en el registro O5H.InstruccinADDWF0x05,1,0Arithmetic operations
Suma del WREG con un registro y acarreo.
OpcodeOperandoSintaxisADDWFCF, d, aEjemploSuma el registro 02H con WREG y el acarreo generado con la operacin.InstruccinADDWFC0x02, 0, 0Arithmetic operations
Incrementar registro en uno.
OpcodeOperandoSintaxisINCFF, d, aEjemploSuma uno al contenido del registro 2FH y guarda el resultado en WREGInstruccinINCF0x2F, 0, 0Arithmetic operations
Decremento en uno al registro.
OpcodeOperandoSintaxisDECFF, d, aEjemploSuma uno al contenido del registro 2FH y guarda el resultado en WREGInstruccinDECF0x10, 1, 0Actividad: Escribe las instrucciones para cargar dos bytes (37H y 92H) en los registros de memoria REG0 y REG1. Suma los bytes y guarda el resultado en REG2
Machine control instructions
MnemnicoDescripcinPalabraCicloStatus bitsCLRWDTLimpia el timer Watchdog11RESETResetea todos los registros y banderas11N OV Z DC CSLEEPModo standby11NOPNinguna operacin11