Você está na página 1de 46

GUIA DE USUARIO

CY3210-PSoCEval1
EVALUATION KIT

Mauricio Lozano Snchez

Este espacio va a ser dedicado a los


microcontroladores
PSoC
(Programmable System on Chip)
fabricados por la empresa Cypress,
estos dispositivos ofrecen una gran
versatilidad para el desarrollo de
sistemas electrnicos embebidos ya
que en el mismo chip gracias a su
configuracin por bloques se
pueden desarrollar tanto sistemas
digitales como anlogos generando
as una reduccin significativa en el
tamao final de las tarjetas de los
circuitos a implementar.

SENA
TECNOPARQUE
UNIVERSIDAD
AUTONOMA DE
MANIZALES

Tabla de contenido
Qu es PSoC? ......................................................................................................................... 3
Cmo instalar el kit? ............................................................................................................. 4
Caractersticas generales del PSoC 1, 3, 5 ...................................................................... 9
Qu es el PSoC Designer? ................................................................................................ 10
Probando y conectando el modulo PSoC ........................................................................ 14
PSoC hardware ....................................................................................................................... 15
PSoC designer C.....18
PSoC designer assembler27
Bibliografa45

Qu es PSoC?

La palabra PSoC es el acrnimo de (Programmable System on Chip), estos


dispositivos fabricados por la empresa cypress son microcontroladores cuya principal
caracterstica y atractivo es el contar con mdulos tanto anlogos y digitales en un solo
chip, as mismo poder reconfigurar dinmicamente las entradas y salidas de estos
mdulos. De esta manera se obtiene un componente electrnico con una gran
flexibilidad en su estructura y que permite una facilidad incomparable hasta el
momento, para el desarrollo de sistemas electrnicos embebidos.
Algunas caractersticas de la arquitectura de estos micro controladores son las
siguientes:
Unidad multiplicadora MAC.
Reloj tanto interno como externo.
El voltaje de referencia puede ser variado para actuar con distintos sensores.
Voltaje de funcionamiento de 5 voltios 3,3 voltios.
Posibilidad de reconfiguracin.
Los PSoC tienen un programa de desarrollo llamado PSoC designer, en este
programa se puede contar con una interfaz grafica en la cual se visualizan los bloques
tanto digitales y anlogos que posee el micro controlador, adems cuntos de estos
bloques estamos utilizando, tambin desde este programa podemos escribir nuestro
cdigo en C assembler para realizar nuestras aplicaciones, la seleccin del lenguaje
de programacin es segn nuestras preferencias y dependiendo de con cual se nos
facilite mas la programacin, para este blog vamos a trabajar en C.

Cmo instalar el kit?


Para instala en software del equipo, seguir los siguientes pasos:
1. Inserte el CD del kit en la unidad de CD de su PC. El CD est diseado para
la ejecucin automtica y la instalacin de kit aparece en la pantalla de inicio.

Nota: Dado el caso en que no salga la ventana de reproduccin automtica,


vamos a Mi PC y damos doble click en la unidad de Dvd.

2. Click Install the CY3210-PSoCEVAL1 para dar comienzo a la instalacin del


kit.

3. Saldr una pantalla de InstallShield Wizard donde podremos escoger la


carpeta donde ser instalado nuestro kit dando click en la opcin change.
4. Click en NEXT para instalar el kit.

5. En la pantalla Product Installation Overview seleccionamos la instalacin


que mejor se adapte a nuestros requerimientos, en el men desplegable hay
tres opciones: typical, custom, complete. Si no se est seguro accedemos a
la configuracin por defecto typical.
5

6. Cuando se inicie la instalacin, todos los paquetes aparecen en la Installation


Page. Espere hasta que todos los paquetes se descarguen y se instalen
correctamente.

7. Click en finish para completar la instalacin.

Despus de instalar el software, los drivers sern instalados cuando se conecte


el MiniProg1.

Nota 1: Si el kit no cuenta con el CD de instalacin, este tambin se puede


descargar directamente con la pgina de cypress utilizando el siguiente link
http://www.cypress.com/?rID=2541 . Hay tres formas de obtener el kit:

1.1 Este kit incluye: PSoC Programmer, PSoC Designer, ejemplos de


cdigo del kit, los archivos de hardware del kit y documentos de
usuario.
7

1.2 Este kit incluye: ejemplos de cdigo, archivos de hardware, archivos y


documentos de usuario.
1.3 Este es un archivo imagen (tipo ISO) donde se puede encontrar todos
los archivos ya descritos.
Nota 2: Cuando se le da click en cualquiera de los archivos este nos
enviar a otro enlace donde se deber hacer lo siguiente:
Click en la X para cerrar la pantalla saliente.
Click downloads the file without using the download manager. Al
darle click en este enlace el archivo descargara inmediatamente.

Caractersticas generales del PSoC 1, 3, 5


El ncleo de los PSoC es un elemento de gran alcance y que apoya a un amplio
conjunto de caractersticas, el ncleo incluye una CPU, memoria, relojes y GPIO
configurables (Entradas y salidas de propsito general).
A medida que la empresa Cypress ha ido desarrollando estos microcontroladores
incorpora nuevas caractersticas a cada familia de PSoC, entre estas se encuentran
los ncleos, los cuales han sido diferentes en las 3 familias de microcontroladores
PSoC existentes hasta el momento como se puede ver a continuacin:
Familia CY8C2XXXX (PSoC 1): M8C processor speeds up to 24 MHz.
Familia CY8C3XXXX (PSoC 3): Single cycle 8051 CPU core.
Familia CY8C5XXXX (PSoC 5): 32-bit ARM Cortex-M3 CPU core.
El M8C es un procesador que puede alcanzar una velocidad de hasta 24 MHz, posee
una arquitectura tipo Harvard de 25 hilos con lo cual se logra simplificar la
programacin de eventos en tiempo real. Otras caractersticas que vale la pena
resaltar de este ncleo son las siguientes:
Temporizadores, Sleep y watch Dog (WDT).
32 KB de memoria flash para almacenamiento de programas.
2 KB de memoria SRAM para almacenamiento de datos.
2 KB de memoria EEPROM emulado usando la flash.
El reloj interno de 24 MHz se puede duplicar a 48 MHz para el uso del sistema digital.
Reloj de baja velocidad de 32 KHz para el temporizador de apagado y el WDT.
Las GPIOs permiten conectar el CPU a los recursos digitales y analgicos.
Cada pin tambin tiene la capacidad para generar una interrupcin del sistema de
alto nivel, bajo nivel y el cambio de la ltima lectura.
El 8051 posee un set de instrucciones tipo RISC, con un gran rendimiento y un
promedio de hasta 2 ciclos por instruccin, adems puede llegar a tener una velocidad
10 veces mayor que la normal del procesador 8051, otras caractersticas importantes
son las siguientes:
64 KB de memoria flash para almacenamiento de programas.
8 KB de memoria SRAM para almacenamiento de datos.
2 KB de memoria EEPROM.
Perifricos HUB (PHUB).
Interfaz de memoria externa (EMIF).
Vector programable para el control de interrupciones.
Por su parte, el ARM cortex contiene un procesador de bajo consumo de potencia de
32 bits y arquitectura Harvard, est diseado para satisfacer las necesidades de
aplicaciones que requieran una gran velocidad en el manejo de interrupciones,
adems tambin cuenta con las siguientes caractersticas:
256 KB de memoria flash.
64 KB de memoria SRAM.
2 KB de memoria EEPROM.
Controlador de memoria cache de 128 bytes de memoria.
Perifricos HUB (PHUB).
4 GB de espacio de direcciones.
10

Qu es el PSoC Designer?
El programa est basado en una sencilla GUI (Interfaz Grafica de Usuario) en la que
se permite hacer configuraciones de hardware del microcontrolador de una manera
cmoda, algunas de estas configuraciones que son posibles de realizar desde la GUI
son las siguientes:
Las configuraciones globales del microcontrolador como lo son: el voltaje de
alimentacin, la velocidad del reloj del CPU, sleep timer, Watchdog, voltajes de
referencia, entre otros.
Configuracin de cada uno de los pines I/O del microcontrolador.
Configuracin de los mdulos de usuario que han sido agregados al proyecto.
Conexiones de manera grafica entre los diferentes mdulos de usuario.
Tambin permite la programacin por medio de cdigo, ya sea en lenguaje assembler
C dependiendo el usuario con cual sienta ms confianza, la sintaxis para cualquiera
de los dos lenguajes es muy similar a como se maneja para los PIC de Microchip,
simplemente lo que hay que tener en cuenta es el nombre de los puertos y los
diferentes registros del mismo lo cual lo podemos conseguir fcilmente en el datasheet
del PSoC con el que se est trabajando.
El PSoC Designer se puede decir que se divide bsicamente en tres partes:
Device Editor.
Aplication Editor.
Debugger.
Device Editor (editor de dispositivo): Es la primera pgina o pestaa que se abre
cuando empezamos a trabajar en un proyecto, desde esta pestaa se pueden hacer la
mayora de configuraciones necesarias del PSoC, tambin se encuentran los mdulos
de usuario, el workspace explorer, y el rea de trabajo donde son mostrados los
bloques tanto analgicos como digitales que se tienen a disposicin.
Aplication Editor (editor de aplicacion): Son todos los archivos que hacen parte de
la configuracin de la aplicacin que se est desarrollando, las libreras, encabezados,
archivos de salida y los archivos fuente dentro de los cuales se encuentra el archivo
main el cual es en donde se debe escribir todo el cdigo de la aplicacin a desarrollar.
Debugger (depurador): Esta es una herramienta muy til para llevar a cabo la
depuracin del cdigo implementado, se pueden agregar breakpoints, observar los
registros de la CPU, las memorias.

11

PSoC Programmer
1. Click en inicio/todos los programas / Cypress / PSoC programer / PSoC
programer.
Imagen psoc programer
2. Haga clic en el botn load file para cargar el archivo .hex.
3. Utilice el botn Program para programar el .hex en el chip.
4. Cuando la programacin se realiza correctamente, aparecer el mensaje
Programming Succeeded en el panel de accin.
5. Cerrar PSoC Programmer.

12

13

Probando y conectando el modulo PSoC


Cuando se conecta el MiniProg, puede utilizar el programador para programar el PSoC
CY3210-PSoC EVAL1 evaluation kit. Conecte el cable USB en el MiniProg antes de
insertarlo en la cabecera ISSP.
Cuando est conectado el MniProg en la ranura de ISSP el led rojo parpadeara, luego
el led cercano a la coneccion USB, brillara verde.

14

PSoC hardware
Descripcin funcional

Sistema de alimentacin
El sistema de suministro de energa en esta tarjeta es muy verstil. El kit puede ser
alimentado por la unidad MiniProg o 9 V a 12 V DC y a 100 mA oa un mayor rango.
CY3210-PSOCEVAL1 tambin puede ser alimentado por una batera de 9 V
conectada a los terminales de la batera.
El regulador de voltaje convierte de 9 / 12 V a 3.3 / 5 v.
Nota: usar solo una fuente de alimentacin. No usar voltajes que superen los 7 v o 12
v respectivamente.
Configuracin de puente
Las funciones de JP1, JP2 y JP3 son las siguientes:
JP1 se conecta al pin P16 Rx para la comunicacin UART y debe ser
eliminado para el funcionamiento normal de I/O.
JP2 se conecta al pin P27 Tx para la comunicacin UART y debe ser
eliminado para el funcionamiento normal de I/O.
JP3 controla la configuracin de voltaje y debe ser eliminada para el
funcionamiento con 5 V.

15

Interface de programacin
El kit permite la programacin con la cabecera de programacin ISSP utilizando el
MiniProg de PSoC. ISSP se utiliza para reprogramar o programar PSoC de la PCB y
eliminar la necesidad de un paquete especifico.
PSoC pins
Pin
No.
1
2

Nombre
del pin
P0[7]
P0[5]

P0[3]

4
5
6
7

P0[1]
P2[7]
P2[5]
P2[3]

P2[1]

SMP

10
11
12
13

P1[7]
P1[5]
P1[13]
P1[1]

14
15

VSS
P1[0]

16
17

P1[2]
P1[4]

18
19

P1[6]
XRES

20

P2[0]

21

P2[2]

22
23
24
25

P2[4]
P2[6]
P0[0]
P0[2]

26

P0[4]

27
28

P0[6]
VDD

Descripcin
Entrada mux columna analgica
Columna de entrada analgica y salida
mux columna
Columna de entrada analgica y salida
mux columna
Entrada mux columna analgica

Directa cambia la entrada del bloque de


condensador
Directa cambia la entrada del bloque de
condensador
SMP interruptor de la bomba (SMP) de
conexin de modo que los componentes
externos necesarios SMP
Reloj serial I2C (SCL)
Datos en serie I2C (SDA)
Cristal (XTALin), I2C reloj serial (SCL),
ISSP-SCLK
conexin a tierra
Cristal (XTALout), I2C Serial Datos (SDA),
ISSP-SDATA
Entrada de reloj externo opcional
(EXTCLK)
Alta reset externo activa con interior
desplegable
Directo cambia la entrada del bloque de
condensador
Directo cambia la entrada del bloque de
condensador
Tierra analgica externa (AGND)
Referencia de tensin externa (VREF)
Entrada mux columna analgica
Columna de entrada analgica y salida
mux columna
Columna de entrada analgica y salida
mux columna
Entrada mux columna analgica
La tensin de alimentacin

Conectar a
J6.8
J6.6
J6.4
J6.2
J7.8
J7.6
J7.4
J7.2
SMP

J8.8
J8.6
J8.4
J8.2 y XTALIN
/Sclk
Vss
J8.1
y
XTALout/Sdata
J8.3
J8.5
J8.7
XRES/
DNP
J7.1

TP4

J7.3
J7.5
J7.7
J6.1
J6.3
J6.5
J6.7
VCC

16

RS-232 Interface
La interfaz RS-232 es una interfaz fsica de comunicacin en serie a travs del cual
transfiere la informacin dentro o fuera de un bit a la vez. La placa tiene un transceptor
RS-232 para la evaluacin mediante RS-232 (UART) para diseos de bajo consumo.
El RS-232 transceptor dispone de una configuracin de Tx y Rx.
rea de protoboard
El rea de protoboard tiene tres puertos completos para el desarrollo de circuitos de
encargo: Puerto 0, puerto 1 y puerto 2. Estos puertos pueden ser utilizados con el rea
de creacin de prototipos para crear diseos analgicos simples pero elegante.
Interface de caracteres LCD
El kit tiene un carcter de 2 16 LCD Mdulo alfanumrico, que entra en la cabecera
LCD de caracteres, J9. La pantalla LCD se ejecuta en una alimentacin de 5 V y
puede funcionar independientemente de la tensin en la que se alimenta PSoC. Un
ajuste de contraste LCD tambin est disponible.

17

PSoC designer C
Entrando al compilador C
Todas las caractersticas del compilador estn disponibles y accesibles haciendo click
en el Editor de Subsistema de PSoC Designer.
Para acceder al editor de subsitema damos click en el siguiente icono
.
Nota: Evitar usar los siguientes caracteres en el nombre del archivo:

\/:*?"<>|&+,;=[]%$`'
Menu de opciones
Icono

Opcion
Compile/assemble
Build

New File
Open File

Menu

Atajo

Build>>Compile/
Assemble
Build >> Build

[Ctrl]
[F7]
[F7]

File >> New

[Ctrl] [N]

File >> Open

[Ctrl]
[O]

Indent
Outdent
Comment
Uncomment
Toggle Book-mark

Clear Book-mark
Next Book-mark
Previous Bookmark
Find Text
Replace Text
Find in Files

Edit >> Find

[Ctrl] [F]

Edit >> Replace


Edit >> Find in
Files

[Ctrl] [H]

Repeat Replace
Set Editor Options

Caracteristica
Compila el archivo (.c o .asm)
Contruye todo el proyecto y
lo vincula con los archivos en
la carpeta
Adiere un nuevo archivo
Abre un archivo existente
Alinea texto a la derecha
Alinea texto a la izquierda
Para comentar texto
seleccionado.
Para quitar los comentarios
a un texto seleccionado
Alterna el marcador: Sets /
elimina marcadores definidos
por el usuario se utilizan para
navegar por los archivos de
origen
Limpia todos los los
marcadores
Va al siguiente marcador
Va al anterior marcador
Encuentra texto especifico
Reemplaza texto especifico
Encuentra texto especifico en
un documento especifico
Repetir el reemplazo anterior

Undo

Edit >> Undo

[Ctrl] [Z]

Configurar las opciones del


editor
Des-hacer

Redo

Edit >> Redo

[Ctrl] [Y]

Re-hacer

Empezar un archivo
PSoC Designer crea un archivo inicio llamada boot.asm. Sus funciones principales
dentro de los parmetros de PSoC Designer incluye inicializar las variables de C, la
organizacin de mesas de interrupcin, y llamando _main. El guin bajo (_main)
permite a boot.asm para llamar a un "main", ya sea en C o assembly.
18

Descripcin de libreras
Hay tres libreras primarias usadas por el PSoC Disigner: libcm8c.a,

libpsoc.a y cms.a.
La librera libcm8c.a yace en el PSoC Designer\tools directory
(\Program Files\Cypress Microsystems\PSoC
Designer\tools). Esta librera contiene muchas funciones tpicas de la
programacin en C.
La librera libpsoc.a yace en proyecto \lib directory, y contiene las funciones
del mdulo de usuario. Editor de dispositivos agrega automticamente el
cdigo fuente de los mdulos de los usuarios a la biblioteca durante el proceso
generate-aplication. Sin embargo, otros objetos de la biblioteca se pueden
agregar manualmente a esta biblioteca.
La librera cms.a yace en\tools directory, esta biblioteca contiene
funciones prcticas que no implican Mdulos de Usuario. Por ejemplo, las
funciones de lectura y escritura del flash reside aqu (Flash Block
Programming). Prototipos "C" para el uso de estas funciones se dan en el
archivo de inclusin (flashblock.h) almacenados en el directorio\tools
\include directory.
Tipos de data
PSoC DesignerC Compiler es compatible con los siguientes tipos de datos
estndar:
Tipos de datos compatibles

Tipo
Char

Bytes
1

Descripcin
Un byte de memoria que define los caracteres

Int

Se utiliza para definir los nmeros enteros

Short

Tipo estndar especificando enteros de 2 bytes

Long

Tipo estndar que especifica la mayor entidad


entero

Float

Nmero de punto flotante de precisin simple en


formato IEEE

Double

Enum

1 si enum

Nmero de punto flotante de precisin simple en


formato IEEE
Se utiliza para definir una lista de alias que

Rango
1 unsigned
0255
signed
128127
unsigned
065535
1
signed
3276832767
unsigned
065535
1
signed
3276832767
unsigned
04294967295
1 signed 21474836482
1474836
47
1.175e383.40e+384
7
1.175e383.40e+38
065535
19

<256
2 si enum
>256

representan nmeros enteros.

Las siguientes definiciones de tipos se incluyen en m8c.inc. Expresar las


convenciones comunes para tipos de datos adicionales.
typedef no firmado char BOOL;
typedef no firmado char BYTE;
typedef firmado char CHAR;
typedef no firmado int WORD;
typedef firmado int INT;
typedef no firmado long DWORD;
typedef firmado long LONG;
Las siguientes operaciones de punto flotante son compatibles con PSoC Designer C
Compiler.
Comparador (=)
Multiplicador (*)
Divisor (/)

Adicin (+)
Sustractor (-)
Casting (long to float)

OPERADORES

A continuacin se presenta una lista de los operadores ms comunes soportados en el


PSoC Desiger C Compiler. Los operadores con mayor precedencia se aplican primero.
Los operadores con la misma precedencia se aplican derecha a izquierda. Utilice
parentesis en su caso para evitar la ambigedad.
Pre.
1
1
1
1

Operador
++
--

1
1
2
2
2
2
2
2
2
2
2
2

.
->

[]

()

sizeof
++
-&
*
+
~

3
3
3

!
(declaraci
on)
*
/
%

4
4

+
-

Funcin
Pos-Incremento
Pos-Decrement
Subindice
Funcion de
llamado
Selector
Apuntador
sizeof
Pre-Incremento
Pre-Decremento
Direccion de
Indireccion
mas
menos
NO bit a bit
NO logico
Encasillar

Grupo

Forma

Descripcin

a ++
a -a[b]
a(b)

a.b
a->b
sizeof a
++ a
-- a
&a

*a
+a
-a
Unary

~a

1s complement de a

!a
(declaracion)a

Multiplicacion
Divisin
Modulo

Binario
Binario
Binario

a*b
a/b
a%b

Adicion
Subtraccion

Binario
Binario

a+b
a-b

a multiplicado por b
a dividido por b
El resto de a dividido
por b
a mas b
a menos b
20

<<

Left shift

Binario

a<<b

>>

Right shift

Binario

a>>b

6
6

<
<=

Menor que
Menor igual que

Binario

a<b
a<=b

6
6
7
7
8
9

>
>=
==
!=
&

Mayor que
Mayor igual que
Igual
Distinto
AND bit a bit
OR exclusive bit a
bit
NOR bit a bit
AND logica
OR logica
Condicional
Asignacion
Asignacion multiple
Asignacion dividida
Asignacion
restante
Aadir asignacion
Sustraer
asignacion
Asignacion left shift
Asignacion right
shift
Asignacion AND bit
a bit
Asignacion OR bit
a bit
Asignacion NOR
bit a bit
Coma

^
|

10
11
12
13
14
14
14
14

=
*=
/=
%=

14
14

+=
-=

14
14

<<=
>>=

14

&=

14

^=

14

|=

15

&&
||
?:

Bit a bit
Bit a bit
Bit a bit

a>b
a>=b
a==b
a!=b
a&b
a^b
a|b
a && b
a || b
c?a:b
a=b
a *= b
a /= b
a %= b

Valor de a
desplazado a los bits
b por la izquierda
Valor de a
desplazado a los bits
b por la derecha
a menor que b
a menor o igual que
b
a mayor que b
a mayor o igual que b

AND bit a bit de a y b


OR exclusico bit a bit
de a y b
OR bit a bit de a y b

a += b
a -= b
a <<= b
a >>= b
a &= b
a ^= b
a |= b
a,b

Declaraciones
PSoC Designer compiler soporta los siguientes estados estndar:
If else: Decide si una accin es cierta.
Switch: Compara una variable a varias constantes posibles. Si la variable
coincide con una de las constantes, se hace un salto.
While: Repeticiones (circular iterativo) una declaracin hasta que la expresin
demuestra falsa.
Do: Igual que while, slo la prueba se ejecuta despus de la ejecucin de la
declaracin, no antes.
For: Ejecuta un bucle controlado.
Goto: Transfiere la ejecucin a una etiqueta.
Continue: Se utiliza en un bucle para saltar el resto de la declaracin.

21

Break: Se utiliza con un switch o en un bucle para terminar el switch r o


bucle.
Return: Termina la funcin actual.
Struct: Se utiliza para agrupar variables comunes.
Typedef: Declara un tipo.

Las Directivas de procesamiento

PSoC Designer C Compiler compatible con los siguientes pre-procesadores y


pragmas:
Pre-procesador
#define
#else
#endif
#if
#ifdef
#ifndef
#include
#line
#undef

Descripcin
Define una constante preprocesador o macro
Ejecutado si # if, # ifdef o # ifndef falla
Cierra # if, # ifdef o # ifndef
Bifurca sobre una expresin
Bifurcacin si el preprocesador se ha definido constante
Bifurcacin si el preprocesador no se ha definido constante
Inserta un archivo de origen
Especifica el nmero de la siguiente lnea de cdigo fuente
Elimina una constante preprocesador
Las directivas pragma

#pragma
#pragma ioport LED:0x04;
char LED;

#pragma fastcall GetChar

#pragma
abs_address:<address>

#pragma end_abs_address

#pragma text:<name>

Descripcin
Define una variable que ocupa una regin
en el espacio de I/O. Esta variable puede
ser utilizado en I/O lee y escribe. El ioport
# pragma debe preceder a una
declaracin de variable que define el tipo
de variable utilizada en el pragma.
Proporciona un mecanismo optimizado
de paso de argumentos. Este # pragma
slo se utiliza para las funciones de
montaje llamados de "C."
Le permite localizar el cdigo "C" / data
flash en una direccin especfica como #
pragma abs_address: 0x500. El
end_abs_address # pragma (descrito
ms adelante) se debe utilizar para
terminar el bloque de cdigo / datos de
Flash. Tenga en cuenta que los "datos"
incluye tanto ROM y RAM.
Finaliza un bloque de cdigo de / Flash
de datos que se encuentran con el
pragma abs_address. Esto permite que el
cdigo que sigue el pragma
end_abs_address que se encuentra
desde el ltimo punto reubicable. Tener
en cuenta que los "datos" incluye tanto
ROM y RAM.
Cambia el nombre de la zona "text".
Hacer modificaciones "Custom.LKP" en el
directorio del proyecto para colocar la
22

#pragma interrupt_handler
<func1> [ ,<func2> ]*

#pragma nomac
#pragma usemac

nueva zona en el espacio de cdigo.


Para el manejador de interrupciones. Los
registros virtuales se guardan slo si se
utilizan, a menos que el controlador llama
a otra funcin. En ese caso, todos los
registros virtuales se guardan.
Estos dos pragmas anulan el argumento
de the command line -nomac argument,
or Project >> Settings, Compiler tab,
Enable MAC option.Los pragmas deben
especificarse fuera de una definicin de
funcin.

Funciones string
Estas funciones pueden ser encontradas en el siguiente directorio: ...:\Program

Files\CypressMicroSystems\PSoCDesigner\tools\include\string
.h and stdlib.h y :\Program Files\Cypress
MicroSystems\PSoCDesigner\tools> ilibw t libcm8c.a
Funcin
abs
atof
atoi
atol
itoa
Itoa
ftoa

rand
srand
strtol
strtoul
cstrcat
cstrcmp
cstrcpy

Prototipo

Encabezado

int abs(int);
double atof(CONST char *);
int atoi(CONST char *);
long atol(CONST char *);
void itoa(char *string, unsigned int
value, int
base);
void ltoa(char *string, unsigned
long value,
int base);
char *ftoa(float f, int *status);
/* ftoa function */
#define _FTOA_TOO_LARGE -2
/*
|input| > 2147483520 */
#define _FTOA_TOO_SMALL -1
/*
|input| < 0.0000001 */
/* ftoa vuelve buffer esttico de ~
15 caracteres. Si la entrada est
fuera de rango *, * Estado se
establece en cualquiera de los
anteriores # define y se devuelve
0 *. De lo contrario, * estado se
establece en 0 y el char buffer se
devuelve *
int rand(void);
void srand(unsigned);
long strtol(CONST char *, char **,
int);
unsigned long strtoul(CONST
char *, char
**, int);
char *cstrcat(char *, const char *);
int cstrcmp(const char *cs, char
*);
char *cstrcpy(char *, const char
*cs);

stdlib.h
stdlib.h
stdlib.h
stdlib.h
stdlib.h

stdlib.h

stdlib.h

stdlib.h
stdlib.h
stdlib.h
stdlib.h

string.h
string.h
string.h

23

cstrlen
memchr
memcmp
memcpy
memmove
memset
strcat
strcmp
strcoll
strcpy
strcspn
strlen
strncat
strncmp
strncpy
strpbrk
strrchr
strspn
strstr

size_t cstrlen(const char *cs);


void *memchr(void *, int, size_t);
int memcmp(void *, void *, size_t);
void *memcpy(void *, void *,
size_t);
void *memmove(void *, void *,
size_t);
void *memset(void *, int, size_t);
char *strcat(char *, CONST char
*);
int strcmp(CONST char *, CONST
char *);
int strcoll(CONST char *, CONST
char *);
char *strcpy(char *, CONST char
*);
size_t strcspn(CONST char *,
CONST char
*);
size_t strlen(CONST char *);
char *strncat(char *, CONST char
*, size_t);
int strncmp(CONST char *,
CONST char *,
size_t);
char *strncpy(char *, CONST char
*,
size_t);
char *strpbrk(CONST char *,
CONST char
*);
char *strrchr(CONST char *, int);
size_t strspn(CONST char *,
CONST char
*);
char *strstr(CONST char *,
CONST char *);

string.h
string.h
string.h
string.h
string.h
string.h
string.h
string.h
string.h
string.h
string.h

string.h
string.h
string.h

string.h

string.h

string.h
string.h

string.h

Funciones matematicas
Estas funciones pueden ser encontradas en el siguiente directorio: ...:\Program
Files\CypressMicroSystems\PSoCDesigner\tools\include\math.h.

Funcin
float fabs(float x);

float frexp(float x, int *eptr);

Descripcin
fabs calcula el valor absoluto (magnitud) del argumento x,
mediante la manipulacin directa de la representacin de
bits de x. Devuelve el valor absoluto del nmero de punto
flotante x.
Todos los nmeros no nulos, normales puede ser descrito
como m * 2 ** p. frexp representa el doble val como una
mantisa m y una potencia de dos p. La mantisa resultante
siempre ser mayor que o igual a 0,5, y menos de 1,0 (el
tiempo que val es distinto de cero). El poder de los dos va
a ser almacenado en * exp. Devuelva la mantisa y el
exponente de x como el par (m, e). m es un flotador y e es
un nmero entero tal que x == m * 2 ** e. Si x es igual a
cero, (0,0, 0), de lo contrario 0.5 <= abs (m) <1
24

float tanh(float x);


float sin(float x);
float atan(float x);
float atan2(float y, float x);
float asin(float x);
float exp10(float x);
float log10(float x);
float fmod(float y, float z);

float sqrt(float x);


float cos(float x);

float ldexp(float d, int n);


float modf(float y, float *i);

float floor(float y);

float ceil(float y);

float fround(float d);

float tan(float x);

float acos(float x);

float exp(float x);

float log(float x);

float pow(float x,float y);

La funcin devuelve la tangente hiperblica de x.


Devuelve el seno de x.
La funcin devuelve el ngulo cuya tangente es x, en el
intervalo [-pi / 2, + pi / 2] radianes.
The function returns the angle whose tangent is y/x, in the
full angular range [-pi, +pi] radians
La funcin devuelve el ngulo cuyo seno es x, en el
intervalo [-pi / 2, + pi / 2] radianes.
Devuelve 10 elevado a la cifra real especificado.
log10 devuelve el logaritmo en base 10 de x. Se
implementa como log (x) / registro (10).
La funcin fmod calcula el resto de punto flotante de x / y
(x modulo y). La funcin fmod devuelve el valor para el
nmero entero ms grande i tal que, si y es distinto de
cero, el resultado tiene el mismo signo que x y la magnitud
menor que la magnitud de y.
La funcin devuelve la raz cuadrada de x, x ^ (1/2).
La funcin devuelve el coseno de x para x en radianes. Si
x es grande el valor devuelto puede que no sea
significativa, pero la funcin informa de ningn error.
ldexp calcula el valor que se necesita y vuelve flot en lugar
de valores dobles. ldexp devuelve el valor calculado.
modf divide la doble val aparte en una parte entera y una
parte fraccional, devolviendo la parte fraccionaria y
almacenar el entero. Se devuelve la parte decimal. Cada
resultado tiene el mismo signo que el val argumento
proporcionado.
floor encuentra el nmero entero ms cercano menor o
igual a x. floor devuelve el resultado como un nmero
entero doble.
ceil encuentra el nmero entero ms cercano mayor o
igual a x. ceil devuelve el resultado como un nmero
entero doble.
Produce un cociente que se ha redondeado al nmero
entero ms cercano matemtico, si el cociente matemtico
es exactamente a medio camino entre dos nmeros
enteros, (es decir, que tiene la forma nmero entero 1/2),
entonces el cociente se ha redondeado a la par (divisible
por dos) nmero entero.
La funcin devuelve la tangente de x de x en radianes. Si x
es grande el valor devuelto puede que no sea significativa,
pero la funcin informa de ningn error.
acos calcula el coseno inverso (arco coseno) del valor de
entrada. Argumentos a acos deben estar en el rango de -1
a 1. La funcin devuelve el ngulo cuyo coseno es x, en el
intervalo [0, pi] radianes.
exp calcula el exponencial de x, es decir, la base del
sistema natural de los logaritmos, aproximadamente
2,71828). La funcin devuelve el exponencial de x, e ^ x.
Devuelva el logaritmo natural de x, es decir, su logaritmo
en base e (donde e es la base del sistema natural de los
logaritmos, 2,71828...). La funcin devuelve el logaritmo
natural de x.
pow calcula x elevado a y exp1.0nt. En caso de xito, pow
25

float sinh(float x);


float cosh(float x);

devuelve el valor calculado.


sinh calcula el seno hiperblico del argumento x. La
funcin devuelve el seno hiperblico de x.
cosh calcula el coseno hiperblico del argumento x. La
funcin devuelve el coseno hiperblico de x.

26

PSoC designer assembler


Entrando al compilador assembler
El lenguaje assembly es un lenguaje de bajo nivel. Esto significa que su estructura no
es como un lenguaje humano. En comparacin, 'C' es un lenguaje de alto nivel con las
estructuras cercanas a los utilizados por los lenguajes humanos. A pesar de que es un
conjunto de lenguaje de bajo nivel, que es una abstraccin creado para hacer la
programacin del hardware ms fcil para los seres humanos. Por lo tanto, esta
abstraccin debe ser eliminado antes de una entrada, en una forma nativa para el
microcontrolador, se puede generar. Un ensamblador se utiliza para convertir las
abstracciones utilizado en lenguaje ensamblador a cdigo de mquina que el
microcontrolador puede operar directamente sobre.
Fuente de Formato de archivo
El lenguaje assembly tiene cinco componentes bsicos que se enumeran en la Tabla.
Cada lnea del archivo de origen puede tener una sola etiqueta, mnemnica, comment
o directive. Mltiples operadores o expresiones se pueden usar en una sola lnea del
archivo fuente. La longitud mxima de una lnea es 2048 caracteres (incluyendo
espacios) y el mximo de longitud de palabra es de 256 caracteres. Una palabra es
una cadena de caracteres rodeados por espacios.
Componente
Label
Mnemonic
Operand
Comment

Directive

Descripcin
Nombre simblico seguido de dos puntos
(:).
Cadena de caracteres que representa
una instruccin M8C.
Los argumentos de las instrucciones
M8C.
Puede seguir operando o expresando y
se inicia en cualquier columna si el primer
carcter que no sea espacio es o bien un
estilo de comentario C ++ (/ /) o punto y
coma (;).
Un comando, interpretado por el
ensamblador,
para
controlar
la
generacin de cdigo de mquina.

Evitar el uso de los siguientes caracteres en los nombres de ruta y el archivo (ya que
son problemticos): \ /: * ? "<> | & +,; = [ ]% $` '.
Etiquetas
Una etiqueta es una cadena de maysculas y minsculas de los caracteres
alfanumricos y guiones bajos (_) seguido de dos puntos. Una etiqueta se asigna la
direccin del contador actual programa por el ensamblador, a menos que la etiqueta
se define en una lnea con una directiva EQU. Las etiquetas se pueden colocar en
cualquier lnea, incluyendo lneas de cdigo fuente siempre y cuando la etiqueta
aparece en primer lugar. El ensamblador es compatible con tres tipos de etiquetas:
locales, globales y reutilizables locales.
Las etiquetas locales. Estos consisten en una cadena de caracteres seguido de dos
puntos. Etiquetas locales no pueden hacer referencia a otros archivos de cdigo fuente
en el mismo proyecto, slo se pueden utilizar dentro del fichero en el que se definen.
Las etiquetas locales convertirse etiquetas globales si se "exportan". El siguiente
27

ejemplo se tiene una sola etiqueta local llamado SubFun. Las etiquetas locales entre
maysculas y minsculas.
Las etiquetas locales:

mov X, 10
SubFun:
xor reg[00h], FFh
dec X
jnz SubFun

Las etiquetas globales. Estos se definen en la directiva de ensamblador exportacin


o poniendo fin a la etiqueta con dos signos de dos puntos "::" en lugar de una.
Etiquetas globales pueden ser referenciadas desde cualquier archivo de origen en un
proyecto. El siguiente ejemplo tiene dos etiquetas globales. La directiva de exportacin
se utiliza para hacer la etiqueta SubFun global, mientras que dos signos de dos puntos
se utilizan para hacer la etiqueta Morefun global. Etiquetas globales entre maysculas
y minsculas.
Las etiquetas globales:

EXPORT SubFun
mov X, 10
SubFun:
xor reg[00h], FFh
dec X
jnz SubFun
mov X, 5
MoreFun::
xor reg[00h], FFh
dec X
jnz MoreFun

Las etiquetas locales reutilizables. Estos tienen varias definiciones independientes


dentro de un solo archivo fuente. Se definen precediendo la cadena de la etiqueta con
un punto ".". El mbito de aplicacin de una etiqueta local est limitada por la etiqueta
local o global ms cercano o el final del archivo fuente. El siguiente ejemplo tiene una
sola etiqueta global llamada SubFun y un sello local reutilizable llamada. Morefun.
Tenga en cuenta que mientras que las etiquetas no incluyen el colon cuando se hace
referencia, etiquetas locales reutilizables requieren que un perodo preceden la cadena
de la etiqueta de todos los casos. Etiquetas locales reutilizables entre maysculas y
minsculas.
Las etiquetas locales reutilizables:

EXPORT SubFun
mov X, 10
SubFun:
xor reg[00h], FFh
mov A, 5
.MoreFun:
xor reg[04h], FFh
dec A
jnz .MoreFun
dec X
jnz SubFun

Mnemonics
Una instruccin Mnemonics es una cadena de cuatro y cincuenta y ocho letra que
representa una de las instrucciones del microcontrolador. No puede ser 0 o 1
Mnemonics por lnea de un archivo de origen. Mnemonics no distinguen entre
maysculas y minsculas.

28

Los operandos
Los operandos son los argumentos de instrucciones. El nmero de operandos y el
formato que utilizan son definidos por la instruccin que se utiliza. Los operandos
pueden tomar la forma de constantes, etiquetas, operador punto, los registros, la
memoria RAM, o expresiones.
Constantes. Estos son operandos que llevan valores establecidos explcitamente en
el archivo de origen. Las constantes pueden ser expresadas en el archivo de origen
utilizando uno de los radixes listados en la Tabla
Radix Nombre
127
Carcter ASCII

Formato
J

16

Hexadecimal

0x4A
4Ah
$4A

10
8
2

Decimal
Octal
Binario

74
0112
0b01001010
%01001010

Ejemplo
mov
mov
mov
mov
mov
mov
mov
mov
mov
mov

A,
A,
A,
A,
A,
A,
A,
A,
A,
A,

J ;character constant
\ ;use \ to escape \
\\ ;use \ to escape \
0x4A ;hex--0x prefix
4Ah ;hex--append h
$4A ;hex--$ prefix
74 ;decimal--no prefix
0112 ;octal--zero prefix
0b01001010 ;bin--0b prefix
%01001010 ;bin--% prefix

Etiquetas. stos se pueden utilizar como un operando de una instruccin, las


etiquetas se utilizan con mayor frecuencia que los operandos para jump e
instrucciones call para especificar la direccin de destino. Sin embargo, las etiquetas
se pueden utilizar como un argumento para cualquier instruccin.
Operador de punto (.). Esto se utiliza para indicar que la direccin de la ROM del
primer byte de la instruccin debe ser utilizada como un argumento para la instruccin.

Example 1:
Example 2:
Example 3:

mov A, <. ; mueve byte bajo de la PC a A


mov A, >. ; mueve byte alto del PC a A
jmp >.+3
nop
nop;
salt a la instruccin
nop

Registros. Estos tienen dos formas en dispositivos PSoC. El primer tipo son los que
existen en los dos bancos de registros accesibles para el usuario. El segundo tipo son
los que existen en el microcontrolador. La tabla contiene ejemplos de todos los tipos
de operandos de registros.
Tipo
Registros accesible al
usuario
Registros M8C

Formato

Ejemplo

reg[expr]

MOV A, reg[0x08]; registrar en la direccin 8


MOV A reg[OU+8] ;direccin = label OU + 8

A
F
SP
X

MOV A, 8; mover 8 en el acumulador


OR F, 1; el bit 0 de la bandera
MOV SP, 8; establecer el puntero de pila a 8
MOV X, 8; set the M8Cs X reg to 8

Memoria RAM. Estas referencias se hacen encerrando la direccin o la expresin


entre corchetes. El ensamblador evaluar la expresin para crear la direccin RAM
real.
29

Tipo
RAM actual

Formato

Ejemplo

[expr]

MOV A, [0x08]; RAM en la direccin 8


MOV A, [OU+8]; address = OU etiqueta + 8

Expresiones. Estos se pueden construir utilizando cualquier combinacin de


etiquetas, constantes, el operador de punto, y las operaciones aritmticas y lgicas
que se definen en la Tabla.
prioridad
expresin
1
complemento bit a bit
2
multiplicacin
divisin
Modulo
3
adicin
sustraccin
4
bit a bit AND
5
bit a bit XOR
6
bit a bit OR
7
Byte alto de una direccin
8
Byte bajo de una
direccin

smbolo

forma

~
*
/
%

(~ a)
(a * b)
(a / b)
(a % b)

+
-

(a + b)
(a b)

&
^
|
>
<

(a & b)
(a ^ b)
(a | b)
(>a)
(< a)

Slo la expresin de suma (+) se puede aplicar a un smbolo de re-localizables. Todas


Las otras expresiones se deben aplicar a las constantes o smbolos que se pueden
resolver por el ensamblador.
Comentarios
Un comentario comienza con un punto y coma (;) o una doble barra (/ /) y va a la final
de una lnea. Se utiliza por lo general para explicar el cdigo ensamblador y puede
colocarse en cualquier lugar en el archivo de origen. El ensamblador ignora los
comentarios, sin embargo, se escriben en el archivo de lista de referencia.
Directivas
Una directiva de ensamblador se utiliza para decirle al ensamblador de tomar alguna
accin durante el proceso de montaje. Directivas no son comprendidas por el
microcontrolador M8C. Por lo tanto, las directivas permiten que el escritor firmware
para crear cdigo que es ms fcil de mantener.
Ficha Formato de archivo
Un <project name> se crea cada vez que el ensamblador se completa sin errores ni
advertencias. El archivo de la lista se puede utilizar para comprender cmo el
ensamblador se convierte el cdigo fuente a cdigo mquina.
Las dos lneas siguientes representan las lneas tpicas que se encuentran en un
archivo de lista. Las lneas que comienzan con un nmero de cuatro dgitos entre
parntesis ("()") son las lneas del archivo de origen. El nmero entre parntesis es el
nmero de lnea del archivo fuente. El texto que sigue al parntesis es el texto exacto
del archivo fuente. La segunda lnea en el siguiente ejemplo comienza con un nmero
de cuatro dgitos seguido de dos puntos. Este nmero de cuatro dgitos indica la
direccin de la ROM para el primer byte de cdigo de mquina que sigue el colon. En
este ejemplo, los dos nmeros hexadecimales que siguen el colon son dos bytes que
forman el MOV A, 74 de instrucciones.
30

Observe que el ensamblador convierte las constantes utilizadas en la fuente de los


valores decimales y que el cdigo de la mquina siempre se muestran en
hexadecimal. En este caso el cdigo fuente expres la constante como un valor octal
(0112), el ensamblador representado el mismo valor en decimal (74), y el cdigo de
mquina utiliza hexadecimal (4A).
Mapa Formato de archivo
Un <project name>.mp se crea cada vez que el ensamblador se completa sin
errores ni advertencias. Los documentos de archivo del mapa donde el ensamblador
ha puesto reas definidas por la directiva de ensamblador AREA y enumera los
valores de las etiquetas globales (tambin llamados smbolos globales).
ROM Formato de archivo
Un <project name>.rom se crea cada vez que el ensamblador se completa sin
errores ni advertencias. Este archivo se ofrece como una alternativa en el fichero de
Intel HEX que tambin est creado por el ensamblador. El archivo de ROM no
contiene la configuracin de proteccin definidas por el usuario para el flash o el valor
de relleno utilizado para inicializar partes no utilizadas de flash despus del final del
cdigo de usuario. El archivo de ROM es un archivo de texto simple con ocho
columnas de datos delimitados por espacios. El ejemplo siguiente es un archivo de
ROM completa para un programa de 47 bytes. El archivo de ROM no contiene ninguna
informacin sobre dnde deben ubicarse los datos en Flash. Por convencin, los datos
en el archivo de ROM se inicia en la direccin 0x0000 en Flash. En el siguiente
ejemplo, slo se refiere a 0x0000 travs 0x002E del flash han asignado valores de
acuerdo con el archivo ROM.
Ejemplo ROM
Archivo:

80
7E
7E
91
3D
3F

5B
00
00
73
7F
00

00
00
00
90
60
3D

00
00
00
FE
3A
FF

7E
7D
7D
90
5B
3E

00
02
01
89
60
CC

00
62
EF
90
3E
FF

00
7E
7E
14
7F

Intel Formato de archivo HEX


El archivo de Intel HEX creado por el ensamblador se utiliza como una manera
independiente de la plataforma de distribucin de la totalidad de la informacin
necesaria para programar un microcontrolador PSoC. Adems de los datos de usuario
creados por el ensamblador, el archivo HEX tambin contiene la configuracin de
proteccin para el proyecto que ser utilizada por el programador.
El bloque de construccin bsico del formato Intel HEX se denomina un registro. Cada
registro se compone de seis campos, como se muestra en la Tabla. Todos los
campos, excepto por el campo de inicio, representan informacin como hexadecimal
codificado ASCII. Esto significa que cada ocho bits de informacin se codifican en dos
caracteres ASCII.
El campo de inicio es de un byte de longitud y siempre debe contener dos puntos (:).
El campo de longitud es tambin un byte de longitud e indica el nmero de bytes de
datos almacenados en el registro. Debido a que el campo de longitud es un byte de
longitud, la mxima cantidad de datos almacenados en un disco es de 255 bytes que
requeriran 510 caracteres ASCII en el archivo HEX. El campo de direccin de inicio
indica la direccin del primer byte de la informacin en el registro. El campo de
direccin es de 16 bits de longitud (cuatro caracteres ASCII) que permite espacio para
64 kilobytes de datos por disco.
31

Nmero de campo
1

Nombre del campo


iniciar

Longitud (bytes)
1

longitud

comienzo
direccin
tipo

datos

checksum

Determinado por el
campo de longitud
1

descripcin
El nico valor
vlido es los dos
puntos (:).
Indica la cantidad
de datos de 0 bytes
a 255 bytes.

"00": los datos


"01": fin de archivo
"02": la direccin
del segmento
ampliado
"03": la direccin de
segmento de inicio
"04": la direccin
lineal extendida
"05": registro de
direccin lineal
inicio

Todos los archivos HEX creados por el ensamblador tienen la estructura que se
muestra en la Tabla. Cada fila de la tabla se describe un tipo de registro utilizado en el
archivo HEX.
Registro
<data record 1: flash data>

<data record n: flash data>

:020000040010ea

Descripcin
Este es el primero de muchos registros de datos
en el archivo HEX que contienen datos de
Flash.
El ensimo registro que contiene los datos para
Flash (ltimo registro). El nmero total de
registros de datos para los datos de Flash se
puede determinar dividiendo el espacio Flash
disponible (en bytes) por 64. Por lo tanto, una
parte 16 KB tendra un archivo HEX con 256
registros de datos de Flash.
Los dos primeros caracteres (02) indican que
este disco tiene una longitud de dos bytes (4
caracteres ASCII). Los siguientes cuatro
caracteres (0000) especifica la direccin inicial.
Los dos caracteres siguientes (04) indican que
se trata de una direccin lineal extendida. Los
cuatro caracteres siguientes 04 son los datos de
este registro. Debido a que este es un registro
de direccin lineal extendida, los cuatro
personajes indican el valor de los 16 bits
superiores de la direccin de 32 bits. Por lo
tanto, el valor de 0x0010 es un 1 MB offset.
Para los archivos HEX microcontrolador PSoC,
32

<data record 1: protection


bits>
<data record m: protection
bits>

:020000040020da

<data record: checksum>

:00000001ff

Ejemplo de cdigo:

Ejemplo de archivo de ROM:

la direccin lineal extendida se utiliza para


compensar la proteccin de datos Flash de los
datos de Flash. Los bits de proteccin de Flash
comienzan en la direccin de 1 MB.
Para los dispositivos de PSoC con 16 KB de
flash o menos, este es el nico registro de datos
para los bits de proteccin.
Para los dispositivos de PSoC con ms de 16
KB de Flash, habr un juego de datos adicional
con los bits de proteccin para cada uno de 16
KB de flash adicional.
Este es otro registro de direccin lineal
extendida. Este registro proporciona un 1 MB de
desplazamiento de los bits de proteccin de
Flash (direccin absoluta de 2 MB).
Este es un registro de datos de dos bytes que
almacena una suma de comprobacin para
todos los datos de Flash almacenados en el
archivo HEX. El registro comenzar siempre
con: 0200000000 y terminan con los cuatro
personajes que representan la suma de control
de dos bytes.
Este es el registro de fin de archivo. Los campos
de direccin de partida longitud y son todos
cero. El campo tipo tiene un valor de 0x01 y el
valor de suma de comprobacin ser siempre
0xff.

mov A, reg[0x04]
inc A
mov reg[0x04], A

5D 04 74 60 04

Ejemplo de archivo HEX:


:400000005d0474600430303030303030303030303030303030303
030303030303030303030303030303030303030303030303030303
0303030303030303030303030303077
:40004000303030303030303030303030303030303030303030303
030303030303030303030303030303030303030303030303030303
0303030303030303030303030303080

Conjunto de instrucciones
Aadir acarreo ADC
Calcula la suma de los dos operandos ms el valor de acarreo de la bandera de
registro. Valor del primer operando se sustituye por la suma calculada. Si la suma es
mayor que 255, el indicador de acarreo se encuentra en el registro la Bandera. Si la
suma es cero, la bandera Zero se encuentra en el registro la Bandera.

33

Operacin

Instrucciones
Mnemoni Argumento

Opcode Ciclo

Bytes

ADC

A, expr

A A + k + CF

0x09

ADC

A, [expr]

A A + ram[k] + CF

0x0A

ADC

A, [X+expr]

A A + ram[X + k] + CF

0x0B

ADC

[expr], A

ram[k] ram[k] + A + CF

0x0C

ADC

[X+expr], A

ram[X + k] ram[X + k] + A + CF

0x0D

ADC

[expr], expr

ram[k 1 ] ram[k 1 ] + k 2 + CF

0x0E

ADC

[X+expr], expr

ram[X + k1 ] ram[X + k 1 ] + k2 + CF

0x0F

10

Ejemplo 1:

mov , 0; conjunto acumulador a cero


or F, 0x02, bandera de acarreo conjunto
adc A, 12; valor del acumulador es ahora 13

Ejemplo 2:

mov [0x39], 0; initialize ram [0x39] = 0x00


mov [0x40], FFh; initialize ram [0x40] = 0xFF
inc [0x40]; ram [0x40] = 0x00, CF = 1, ZF = 1
adc [0x39], 0; ram [0x39] = 0x01, CF = 0, ZF = 0

Aadir sin acarreo ADD


Calcula la suma de los dos operandos. Valor del primer operando se sustituye por la
suma calculada. Si la suma es mayor que 255, el indicador de acarreo se encuentra en
el registro de Bandera. Si la suma es cero, la bandera Zero se encuentra en el registro
de Bandera. El SP ADD, la instruccin expr no afecta a las banderas de ninguna
manera.

Operacin

Instrucciones
Mnemonic Argumento

Opcode Ciclos

Bytes

ADD

A, expr

A A+k

0x01

ADD

A, [expr]

A A + ram[k]

0x02

ADD

A, [X+expr]

A A + ram[X + k]

0x03

ADD

[expr], A

ram[k] ram[k] + A

0x04

ADD

[X+expr], A

ram[X + k] ram[X + k] + A

0x05

ADD

[expr], expr

ram[k 1 ] ram[k 1 ] + k 2

0x06

ADD

[X+expr], expr

ram[X + k 1 ] ram[X + k1 ] + k 2

0x07

10

ADD

SP, expr

SP SP + k

0x38

Ejemplo 1:

mov A, 10; inicializar A a 10 (decimal)


add A, 240; resultado es A = 250 (decimal)
add, 6; resultado es A = 0, CF = 1, ZF = 1

Ejemplo 2:

mov A, 10; inicializar A


Add A, 240; resultado es
add, 7; resultado es A =
add A, 5; resultado es A

a 10 (decimal)
A = 250 (decimal)
1, CF = 1, ZF = 0
= 6, CF = 0, ZF = 0
34

Ejemplo 3:

mov A, 10; inicializar A a 10 (decimal)


swap A, SP, poner 10 en SP
add SP, 240; resultado es SP = 250 (decimal)
add SP, 6, SP = 0, CF = sin cambios, ZF = sin
cambios

AND bit a bit


Calcula el AND lgico para cada posicin de bit usando ambos argumentos. El
resultado de la operacin lgica AND se coloca en la posicin de bit correspondiente
para el primer argumento.
Operacin

Instrucciones
Mnemoni Argumento

Opcode Ciclos

Bytes

AND

A, expr

AA& k

0x21

AND

A, [expr]

A A & ram[k]

0x22

AND

A, [X+expr]

A A & ram[X+k]

0x23

AND

[expr], A

ram[k] ram[k] & A

0x24

AND

[X+expr], A

ram[X + k] ram[X + k] & A

0x25

AND

[expr], expr

ram[k 1 ] ram[k 1 ] & k 2

0x26

AND

[X+expr], expr

ram[X + k1 ] ram[X + k1 ] & k 2

0x27

10

AND

REG[expr], expr

reg[k 1 ] reg[k 1 ] & k 2

0x41

AND

REG[X+expr],
expr

reg[X + k 1 ] reg[X + k 1 ] & k 2

0x42

10

AND

F, expr

FF & k

0x70

Ejemplo 1:

and A, 0x00 ;A=0, CF=unchanged, ZF=1

Ejemplo 2:

and F, 0x00 ;F=0 por lo tanto CF=0, ZF=0

Arithmetic Shift Left (Shift Aritmtica Izquierda) ASL


Desplaza todos los bits de la instruccin argumento de un bit a la izquierda. Bit 7 se
carga en el indicador de acarreo y el bit 0 est cargado con un cero.
Ejemplo 1:

mov A, 0x7F ;inicializa A con 127


asl A ;A=0xFE, CF=0, ZF=0

Ejemplo 1:

mov 0xEB], AA ;inicializa RAM @ 0xEB con 0


asl 0xEB] ;ram[0xEB]=54, CF=1, ZF=0

Arithmetic Shift Right (Shift Aritmtica Derecha) ASR


Desplaza todos los bits de la instruccin argumento de un bit a la derecha. Bit 7 sigue
siendo el mismo, mientras que el bit 0 se desplaza en el indicador de acarreo.
Ejemplo 1:

mov A, 0x00 ;inicializa A to 0


and F, 0x00 ; asegrese de que todas las banderas se
borran

35

asr A ;A=0, CF=0, ZF=1


Ejemplo 2:

mov A, 0xFF ;inicializa A to 255


and F, 0x00 ; asegrese de que todas las banderas se
borran
asr A ;A=0xFF, CF=1, ZF=0

Ejemplo 3:

mov A, 0xAA ;inicializa A to 170


and F, 0x00 ; asegrese de que todas las banderas se
borran
asr A ;A=0xD5, CF=0, ZF=0

Funcin CALL
Aade el argumento firmado a la PC actual 2 valor resultante en un nuevo PC que
determina la direccin del primer byte de la siguiente instruccin. El valor PC actual se
define como el valor PC que corresponde a la direccin de la ROM del primer byte de
la siguiente instruccin.
Dos impulsos se utilizan para almacenar el Contador de Programa (PC 2) en la pila.
En primer lugar, los 8 bits superiores del PC (CPU_PC registro) se colocan en la pila
seguido de los 8 bits inferiores. El puntero de pila se incrementa despus de cada
pulsacin. Para los dispositivos con ms de 256 bytes de RAM, la pila se limita a una
pgina pila designada nica definida en la hoja de datos del dispositivo. El M8C
selecciona automticamente la pgina de pila como el destino para el empuje durante
la instruccin CALL. Por lo tanto, una instruccin CALL puede emitirse en cualquier
pgina de RAM. Despus de la instruccin CALL se ha completado, el cdigo de
usuario estar operando desde la misma pgina RAM como antes se ha ejecutado la
instruccin CALL.
Esta instruccin tiene una direccin relativa de 12 bits en complemento a dos que se
aade a la PC. Los 12 bits se empaquetan en el formato de instruccin de dos bytes
usando el inferior del cdigo de operacin y el segundo byte del formato de
instruccin. Por lo tanto, todos los cdigos de operacin con un nibble superior de 9
son instrucciones CALL.
El carcter "x" se utiliza en la tabla de abajo para indicar que el primer byte de la
instruccin CALL puede tener uno de los valores de 16 (es decir, 0x90, 0x91, 0x92,...,
0x9F).

Instrucciones
Mnemoni Argumento
CALL

Ejemplo:

Operacin
PC PC + 2 + k, (2048 k 2047)

expr

0000
0000
0001
0003

Opcode
0x9x

Ciclos
11

Bytes
2

_main:
40 nop
90 E8 call SubFun
40 nop

Tenga en cuenta que la direccin relativa para la CALL (llamada)


anterior es positiva (0xE8) y que la suma de que la direccin y el
valor PC para el primer byte de la siguiente instruccin (0x0003)
es igual a la direccin de la etiqueta SubFun (0xE8 + 0x0003 =
0x00EB).
0004 9F FA call _main
(0xFA).
Tenga en cuenta que la Call (llamada) a la principal
utiliza una direccin negativa

36

0006
00EB
00EB
00EB
00EC

org 0x00EB
SubFun:
40 nop
7F ret

Comparacin no destructiva CMP


Resta el segundo argumento de la primera. Si la diferencia es menor que cero se
establece el indicador de acarreo. Si la diferencia es 0 la bandera Cero est
establecida. El valor de Ningn operando es destruido por esta instruccin.
Instrucciones
Mnemoni Argumento

Operacin

Opcode Ciclos

Bytes

CMP

A, expr

Ak

0x39

CMP

A, [expr]

A ram[k]

0x3A

CMP

A, [X+expr]

A ram[X + k]

0x3B

CMP

[expr], expr

ram[k 1 ] k 2

0x3C

CMP

[X+expr], expr

ram[X + k 1 ] k 2

0x3D

Ejemplo:

mov
cmp
cmp
cmp

A,
A,
A,
A,

34
33
34
35

; inicializar el acumulador a 34
;A>=34 CF aprobado, A != 33 ZF aprobado
;A=34 CF aprobado, ZF set
;A<35 CF establecer, A != 35 ZF aprobado

Complementar Acumulador CPL


Calcula el complemento bit a bit del acumulador y almacena el resultado en el
acumulador. El indicador de acarreo no se ve afectado, sino que se establece el
indicador cero, si el resultado del complemento es '0 '(por ejemplo, el valor original era
0xFF).

Instrucciones

Operacin

Opcode

Ciclos

Bytes

Mnemoni Argumento
CPL

AA

Ejemplo 1:

mov A, 0xFF
cpl A ;A=0x00, ZF=1

Ejemplo 2:

mov A, 0xA5
cpl A ;A=0x5A, ZF=0

Ejemplo 3:

mov A, 0xFE
cpl A ;A=0x01, ZF=0

0x73

Decremento DEC

37

Resta uno del valor del argumento y reemplaza el valor original de la discusin con el
resultado. Si el resultado es '-1' (valor original era nulo) se ajusta el indicador de
acarreo. Si el resultado es 0 "(valor original era uno) se establece el indicador cero.
Instrucciones
Mnemoni Argumento

Operacin

Opcode Ciclos

Bytes

DEC

AA1

0x78

DEC

XX1

0x79

DEC

[expr]

ram[k] ram[k] 1

0x7A

DEC

[X+expr]

ram[X + k] ram[X + k] 1

0x7B

Ejemplo:

mov [0xEB], 3
loop2: ; El bucle se ejecuta 3 veces.
dec [0xEB]
jnz loop2 ; Jump no ser tomada cuando ZF se
establece por DEC (es decir, esperar a que el
contador del
bucle(0xEB) se decremento a 0x00).

Detener HALT
Detiene la ejecucin del procesador. El procesador permanecer detenido hasta que el
Power-On-Reset (POR), Reset Timer Watchdog (WDR), o reinicio externo (XRES). El
POR, WDR y XRES son todas las restauraciones hardware que har una restauracin
del sistema completo, incluyendo la puesta a cero de los registros a su estado de
encendido. Watchdog reset no har que el temporizador de vigilancia que se inutilice,
mientras que el resto se reinicia, se desactivar el temporizador Watchdog.
Instrucciones
Mnemoni Argumento

reg[CPU_SCR] reg[CPU_SCR] + 1

HALT

Ejemplo:

Operacin

Opcode Ciclos
0x30

Bytes

halt; conjuntos de registro de bit de parada en CPU_SCR


registro

Incremento INC
Se aade a la discusin. Valor original del argumento se sustituye por el nuevo valor.
Si el valor despus de que el incremento es de 0x00, se establecer el indicador de
acarreo y la bandera de cero (valor original debe haber sido 0xFF).
Instrucciones
Mnemoni Argumento

Operacin

Opcode Ciclos

Byte
s

INC

AA+1

0x74

INC

XX+1

0x75

INC

[expr]

ram[k] ram[k] + 1

0x76

INC

[X+expr]

ram[X + k] ram[X + k]

0x77

38

Ejemplo 1:

mov A, 0x00 ;inicializa A a 0


or F, 0x06 ; asegrese CF y ZF se establecen (1)
inc A ;A=0x01, CF=0, ZF=0

Ejemplo 2:

mov A, 0xFF ;inicializa A to 0


and F, 0x00 ; asegurarse de que los flags son todos 0
inc A ;A=0x00, CF=1, ZF=1

INDEX
Coloca el contenido de ROM en la ubicacin indicada por la suma del acumulador, el
argumento, y la corriente de PC 2 en el acumulador. Esta instruccin tiene una
direccin de desplazamiento en complemento a dos de 12 bits, con respecto a la
actual PC 2. El valor PC actual se define como el valor PC que corresponde a la
direccin de la ROM del primer byte de la instruccin.
La instruccin de ndice se utiliza para recuperar informacin de una tabla para el
acumulador. El nibble inferior del primer byte de la instruccin se utiliza como los 4 bits
superiores de la direccin de 12 bits. Por lo tanto, todas las instrucciones que
comienzan con 0xF son instrucciones INDEX, por lo que todos los siguientes son
cdigos de operacin INDEX:
0xF0, 0xF1, 0xF2,..., 0xFF.
El desplazamiento en la tabla se toma como el valor del acumulador cuando se ejecuta
la operacin INDEX.
El tamao mximo de la tabla legible es de 256 bytes, debido a la Acumulador ser 8
bits de longitud.
Instrucciones
Mnemoni Argumento
INDEX

Ejemplo:

Operacin
A rom[k + A + PC + 2], (2048 k 2047)

expr

0000
0000
0001
0003
0005

Opcode Ciclos
0xFx

Bytes

13

OUT_REG: equ 04h


40 [04] nop
50 03 [04] mov A, 3
F0 E6 [13] index ASCIInumbers
60 04 [05] mov reg[OUT_REG], A

Tenga en cuenta que la direccin de 12 bits para la instruccin


INDEX es positivo y que la suma de la direccin (0x0E6) y la
direccin de la siguiente instruccin (0x0005) son iguales a la
primera direccin de la tabla ASCIInumbers (0x00EB). Debido a
que el acumulador se ha ajustado a 3 antes de ejecutar la
instruccin NDICE, el cuarto byte en la tabla ASCIInumbers ser
devuelto a A. Por lo tanto, A ser 0x33 al final de la instruccin
INDEX.
0007
00EB org 0x00EB
00EB ASCIInumbers:
00EB 30 31 ... ds "0123456789"
32 33 34 35 36 37 38 39

Acumulador jump JACC

39

Jump, sin condiciones, a la direccin calculada por la suma del acumulador, el


argumento two'scompliment 12 bits, y la corriente de PC+1. El valor PC actual se
define como el valor PC que corresponde a la direccin de la ROM del primer byte de
la instruccin JACC.
El acumulador no se ve afectada por esta instruccin. La instruccin JACC utiliza un
formato de instruccin de dos bytes, donde se utiliza el inferior del primer byte de los 4
bits superiores de la direccin relativa de 12 bits. Esto hace que un cdigo de
operacin efectiva de 4 bits. Por lo tanto, los siguientes son los bytes de cdigo de
operacin vlido para la instruccin JACC: 0xE0, 0xE1, 0xE2,..., 0xEF.

Instrucciones
Mnemoni Argumento
JACC

Opcode Ciclos

PC (PC + 1) + k + A

expr

Ejemplo:

Operacin

0000
0000 50 03
0002 E0 01 jacc

0xEx

Bytes

_main:
mov A, 3 ; conjunto A con el offset
jump
SubFun

La ejecucin del programa saltar a abordar 0x0007 (halt)


0004
0004
0005
0006
0007

SubFun:
40 nop
40 nop
40 nop
30 halt

Jump si acumula JC
Si se establece el indicador de acarreo, salta a la suma de los argumentos direccin
relativa y la corriente de PC+1. El valor PC actual se define como el valor PC que
corresponde a la direccin de la ROM del primer byte de la instruccin JC.
La instruccin JC utiliza un formato de instruccin de dos bytes, donde se utiliza el
inferior del primer byte de los 4 bits superiores de la direccin relativa de 12 bits. Esto
hace que un cdigo de operacin efectiva de 4 bits. Por lo tanto, los siguientes son los
bytes de cdigo de operacin vlido para la instruccin JC: 0xC0, 0xC1, 0xC2,...,
0xCF.
Instrucciones
Mnemoni Argumento
JC

expr

Ejemplo:

Operacin
PC (PC + 1) + k, (2048 k 2047)

0000
0000 55 3C 02
0003 16 3C 03
0006 C0 02 jc
0008
0009
0009
0009

Opcode
0xCx

Ciclos

Bytes

_main:
mov [3Ch], 2
sub [3Ch], 3 ;2-2=0 CF=1, ZF=0
SubFun ;CF=1, jump to SubFun
30 halt
SubFun:
40 nop

Jump JMP
Jump, sin condiciones, a la direccin indicada por la suma de los argumentos y la
corriente PC+1. El valor PC actual se define como el valor PC que corresponde a la
direccin de la ROM del primer byte de la instruccin JMP.
40

La instruccin JMP utiliza un formato de instruccin de dos bytes, donde se utiliza el


inferior del primer byte de los 4 bits superiores de la direccin relativa de 12 bits. Esto
hace que un cdigo de operacin efectiva de 4 bits. Por lo tanto, los siguientes son los
bytes vlidos cdigo de operacin de la instruccin JMP: 0x80, 0x81, 0x82,..., 0x8F.
Instrucciones
Mnemoni Argumento
JMP

PC (PC + 1) + k, (2048 k 2047)

expr

Ejemplo:

Operacin

0000
0000 80 01

Opcode Ciclos
0x8x

Bytes

_main:
[05] jmp SubFun

Jump es hacia adelante, en relacin con PC, por lo tanto compensa es


positivo (0x01).
0002
SubFun:
0002 8F FD [05] jmp _main
Jump es al revs, en relacin con PC, por lo tanto, el desplazamiento
es negativo (0xFD).

Jump si no acumula JNC


Si el indicador de acarreo no est establecido, el salto a la suma de los argumentos en
la direccin relativa y la corriente de PC+1.
El valor PC actual se define como el valor PC que corresponde a la direccin de la
ROM del primer byte de la instruccin JNC.
La instruccin JNC utiliza un formato de instruccin de dos bytes, donde se utiliza el
inferior del primer byte de los 4 bits superiores de la direccin relativa de 12 bits. Esto
hace que un cdigo de operacin efectiva de 4 bits. Por lo tanto, los siguientes son los
bytes de cdigo de operacin vlido para la instruccin JNC: 0xD0, 0xD1, 0xD2,...,
0xDF.
Instrucciones
Mnemoni Argumento
JNC

Ejemplo:

Operacin
PC (PC + 1) + k, (2048 k 2047)

expr

0000
0000
0003
0006
0008
0009
0009
0009

Opcode Ciclos
0xDx

Bytes

55 3C 02
16 3C 02
D0 02 [05]
30

_main:
[08] mov [3Ch], 2
[09] sub [3Ch], 2 ;2-2=0 CF=0, ZF=1
jnc SubFun ;jump to SubFun
[04] halt

40

SubFun:
[04] nop

Jump si no es cero JNZ


Si la bandera de cero no est definida, el salto a la direccin indicada por la suma de
los argumentos y la corriente de PC+1. El valor PC actual se define como el valor PC
que corresponde a la direccin de la ROM del primer byte de la instruccin JNZ.
La instruccin JNZ utiliza un formato de instruccin de dos bytes, donde se utiliza el
inferior del primer byte de los 4 bits superiores de la direccin relativa de 12 bits. Esto
hace que un cdigo de operacin efectiva de 4 bits. Por lo tanto, los siguientes son los
bytes de cdigo de operacin vlido para la instruccin JNZ: 0xB0, 0xB1, 0xB2,...,
0xBF.
41

Instrucciones
Mnemoni Argumento
JNZ

PC (PC + 1) + k, (2048 k 2047)

expr

Ejemplo:

Operacin

0000
0000
0003
0006
0008
0009
0009
0009

Opcode Ciclos
0xBx

Bytes

55 3C 02
16 3C 01
B0 02
30

_main:
[08] mov [3Ch], 2
[09] sub [3Ch], 1 ;2-1=1 CF=0, ZF=0
[05] jnz SubFun ;jump to SubFun
[04] halt

40

SubFun:
[04] nop

Saltar si es Zero JZ
Si se establece el indicador cero, salta a la direccin indicada por la suma de los
argumentos y la corriente de PC+1. El valor PC actual se define como el valor PC que
corresponde a la direccin de la ROM del primer byte de la instruccin JZ.
La instruccin JZ utiliza un formato de instruccin de dos bytes, donde se utiliza el
inferior del primer byte de los 4 bits superiores de la direccin relativa de 12 bits. Esto
hace que un cdigo de operacin efectiva de 4 bits. Por lo tanto, los siguientes son los
bytes de cdigo de operacin vlido para la instruccin JZ: 0xA0, 0xA1, 0xA2,..., 0xAF.
Instrucciones
Mnemoni Argumento
JZ

Ejemplo:

Operacin
PC (PC + 1) + k, (2048 k 2047)

expr

0000
0000
0003
0006
0008
0009
0009
0009

Opcode Ciclos
0xAx

Bytes

55 3C 02
16 3C 02
A0 02
30

_main:
[08] mov [3Ch], 2
[09] sub [3Ch], 2 ;2-2=0 CF=0, ZF=1
[05] jz SubFun ;jump a SubFun
[04] halt

40

SubFun:
[04] nop

Long Call (llamada larga) LCALL


Sustituye el valor PC con el argumento de la instruccin LCALL. El nuevo valor de PC
determina la direccin del primer byte de la siguiente instruccin.
Dos impulsos se utilizan para almacenar el Contador de Programa (PC actual 3) en la
pila. El valor PC actual se define como el valor PC que corresponde a la direccin de
la ROM del primer byte de la instruccin.
En primer lugar, los 8 bits superiores de la PC+3 se colocan en la pila seguido de los 8
bits inferiores. El puntero de pila se incrementa despus de cada pulsacin. Para
microcontroladores PSoC con ms de 256 bytes de RAM, la pila se limita a una pgina
pila designada nica definida en la hoja de datos del dispositivo. El M8C selecciona
automticamente la pgina de pila como el destino para el empuje durante la
instruccin LCALL.
Por lo tanto, una instruccin LCALL puede emitirse en cualquier pgina de RAM.
Despus de la instruccin LCALL ha completado, cdigo de usuario estar operando
desde la misma pgina RAM como antes se ha ejecutado la instruccin LCALL.

42

Esta instruccin tiene una direccin de 16 bits sin signo. Un formato de instruccin de
tres bytes se utiliza cuando el primer byte es un cdigo de operacin completo de 8
bits.

Instrucciones

Operacin

Opcode

Ciclos

Bytes

Mnemoni Argumento
LCALL

ram[SP] (PC + 3)[15:8]


SP SP + 1
ram[SP] (PC + 3)[7:0]
SP SP + 1
PC k, (0 k 65535)

expr

Ejemplo:

0000
0000 7C 00 05
0003 8F FC

0x7C

13

_main:
[13] lcall SubFun
[05] jmp _main

Aunque en este caso no se necesita una direccin de 16 bits


completo para la llamada a SubFun, la lista de arriba muestra
que la instruccin lcall utiliza un formato de tres bytes que da
cabida a la direccin de salto absoluto de 16 bits de 0x0005.
0005
0005
0005 7F

SubFun:
[08] ret

Long jump(salto de longitud) LJMP


Saltar, sin condiciones, a la direccin indicada por firmar el argumento de la
instruccin. La instruccin LJMP utiliza un formato de instruccin de tres bytes para
dar cabida a un argumento de 16 bits completo. El primer byte de la instruccin es un
cdigo de operacin completa de 8 bits.
Instrucciones
Mnemoni Argumento
LJMP

Ejemplo:

expr

Operacin
PC K, (0 k 65535)

0000
0000 7D 00 03

Opcode
0x7D

Ciclos
7

Bytes
3

_main:
[07] ljmp SubFun

Aunque en este caso no se necesita una direccin de 16 bits


para el salto a SubFun la lista de arriba muestra que la
instruccin ljmp utiliza un formato de tres bytes que da cabida a
la direccin de salto absoluto de 16 bits de 0x0003.
0003
0003
0003 7D 00 00

SubFun:
[07] ljmp _main

Tenga en cuenta que esta instruccin est saltando hacia atrs,


en relacin con el valor actual del PC, as como la direccin de la
instruccin es un nmero positivo (0x0000). Esto se debe a que
la instruccin ljmp utiliza una direccin absoluta.

43

Mueva MOV
Permite una serie de combinaciones de movimientos: inmediata, directa y
direccionamiento indexado se admiten.

Instrucciones
Mnemoni Argumento

Operacin

Opcode

Ciclos

Bytes

MOV

X, SP

X SP

0x4F

MOV

A, expr

Ak

0x50

MOV

A, [expr]

A ram[k]

0x51

MOV

A, [X+expr]

A ram[X + k]

0x52

MOV

[expr], A

ram[k] A

0x53

MOV

[X+expr], A

ram[X + k] A

0x54

MOV

[expr], expr

ram[k 1 ] k 2

0x55

MOV

[X+expr], expr

ram[X + k1 ] k 2

0x56

MOV

X, expr

Xk

0x57

MOV

X, [expr]

X ram[k]

0x58

MOV

X, [X+expr]

X ram[X + k]

0x59

MOV

[expr], X

ram[k] X

0x5A

MOV

A, X

AX

0x5B

MOV

X, A

XA

0x5C

MOV

A, reg[expr]

A reg[k]

0x5D

MOV

A, reg[X+expr]

A reg[X + k]

0x5E

MOV

[expr], [expr]

ram[k 1 ] ram[k 2 ]

0x5F

10

MOV

REG[expr], A

reg[k] A

0x60

MOV

REG[X+expr], A

reg[X + k] A

0x61

MOV

REG[expr], expr

reg[k 1 ] k 2

0x62

MOV

REG[X+expr],
expr

reg[X + k 1 ] k 2

0x63

Ejemplo:

mov A, 0x01 ; acumulador ser igual 1, ZF=0


mov A, 0x00 ; acumulador ser igual 0, ZF=1

Mueva indirecta, Post-Incremento de la memoria MVI


Un puntero de datos en la memoria RAM se utiliza para mover datos entre otra
direccin de la RAM y el acumulador.
El puntero de datos se incrementa despus de la transferencia de datos se ha
completado.
Para microcontroladores PSoC con ms de 256 bytes de RAM, punteros de pgina
especiales se utilizan para permitir que las instrucciones MVI para acceder a los datos
en pginas de memoria RAM remotas. Dos punteros de pgina estn disponibles, uno
para MVI lectura (MVI A, [[expr] + +]) y otro para MVI escritura (MVI [[expr] + +], A). El
puntero de datos siempre se encuentra en la pgina RAM actual. Los punteros de
pgina determinan qu pgina RAM usar la direccin del puntero de datos. Al final de
una instruccin MVI, cdigo de usuario estar operando de la misma pgina de
memoria RAM como antes de que se ejecute la instruccin MVI.
44

Instrucciones

Operacin

Opcode Ciclos

Bytes

Mnemoni Argumento
MVI

A, [[expr]++]

A ram[ram[k]]
ram[k] ram[k] + 1

0x3E

10

MVI

[[expr]++], A

ram[ram[k]] A
ram[k] ram[k] + 1

0x3F

10

Ejemplo 1:

mov
mov
mov
mvi
mvi

[10h], 4
[11h], 3
[EBh], 10h ; nicializar MVI escribir puntero 10h
A, [EBh] ;A=4, ram[EBh]=11h
A, [EBh] ;A=3, ram[EBh]=12h

Ejemplo 2:

mov
mov
mvi
mov
mvi

[EBh], 10h ; nicializar MVI escribir puntero 10h


A, 8
[EBh], A ;ram[10h]=8, ram[EBh]=11h
A, 1
[EBh], A ;ram[11h]=1, ram[EBh]=12h

45

Bibliografa

Acosta, I. C. (s.f.). http://psocenespanol.blogspot.com/. Recuperado el 20 de Agosto


de 2013
Cypress Semiconductor Corporation. (2001-2003). Assembly Language Guide.
Champion Court.
Cypress Semiconductor Corporation. (20 de August de 2003). C Language Compiler.
Cypress Semiconductor. (2011). PSoC 1 Evaluation Kit Guide. Champion Court.

46

Você também pode gostar