clase 3

31
Modelo de programación del PIC18F y el set de instrucciones

Upload: jose-de-jesus-medina-perez

Post on 26-Sep-2015

221 views

Category:

Documents


0 download

DESCRIPTION

electronica

TRANSCRIPT

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 0xF2

Move (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, 0

Move (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, 0x170

Arithmetic 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.InstruccinADDLW0x3F

Arithmetic 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,0

Arithmetic 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, 0

Arithmetic operations

Incrementar registro en uno.

OpcodeOperandoSintaxisINCFF, d, aEjemploSuma uno al contenido del registro 2FH y guarda el resultado en WREGInstruccinINCF0x2F, 0, 0

Arithmetic operations

Decremento en uno al registro.

OpcodeOperandoSintaxisDECFF, d, aEjemploSuma uno al contenido del registro 2FH y guarda el resultado en WREGInstruccinDECF0x10, 1, 0

Actividad: 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