Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CY3210-PSoCEval1
EVALUATION KIT
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?
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
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
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]
[Ctrl] [N]
[Ctrl]
[O]
Indent
Outdent
Comment
Uncomment
Toggle Book-mark
Clear Book-mark
Next Book-mark
Previous Bookmark
Find Text
Replace Text
Find in Files
[Ctrl] [F]
[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
[Ctrl] [Z]
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
Short
Long
Float
Double
Enum
1 si enum
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
Adicin (+)
Sustractor (-)
Casting (long to float)
OPERADORES
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
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
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
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
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
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);
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
26
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
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
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
Example 1:
Example 2:
Example 3:
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]
A
F
SP
X
Tipo
RAM actual
Formato
Ejemplo
[expr]
smbolo
forma
~
*
/
%
(~ a)
(a * b)
(a / b)
(a % b)
+
-
(a + b)
(a b)
&
^
|
>
<
(a & b)
(a ^ b)
(a | b)
(>a)
(< a)
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
Nmero de campo
1
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.
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>
: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
:020000040020da
:00000001ff
Ejemplo de cdigo:
mov A, reg[0x04]
inc A
mov reg[0x04], A
5D 04 74 60 04
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:
Ejemplo 2:
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:
Ejemplo 2:
a 10 (decimal)
A = 250 (decimal)
1, CF = 1, ZF = 0
= 6, CF = 0, ZF = 0
34
Ejemplo 3:
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
0x24
AND
[X+expr], A
0x25
AND
[expr], expr
0x26
AND
[X+expr], expr
0x27
10
AND
REG[expr], expr
0x41
AND
REG[X+expr],
expr
0x42
10
AND
F, expr
FF & k
0x70
Ejemplo 1:
Ejemplo 2:
Ejemplo 1:
35
Ejemplo 3:
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
36
0006
00EB
00EB
00EB
00EC
org 0x00EB
SubFun:
40 nop
7F ret
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
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
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:
Ejemplo 2:
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
39
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
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
expr
Ejemplo:
Operacin
0000
0000 80 01
Opcode Ciclos
0x8x
Bytes
_main:
[05] jmp SubFun
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
Instrucciones
Mnemoni Argumento
JNZ
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
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
expr
Ejemplo:
0000
0000 7C 00 05
0003 8F FC
0x7C
13
_main:
[13] lcall SubFun
[05] jmp _main
SubFun:
[08] ret
Ejemplo:
expr
Operacin
PC K, (0 k 65535)
0000
0000 7D 00 03
Opcode
0x7D
Ciclos
7
Bytes
3
_main:
[07] ljmp SubFun
SubFun:
[07] ljmp _main
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:
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
45
Bibliografa
46