Tabla de contenido

Publicidad

Enlaces rápidos

Manual del Micro Controlador Propeller
Versión en Español 1.1

Publicidad

Tabla de contenido
loading

Resumen de contenidos para Parallax Propeller P8X32A

  • Página 1 Manual del Micro Controlador Propeller Versión en Español 1.1...
  • Página 2 Si el producto tiene un defecto, Parallax Inc. a su conveniencia reparara o remplazara la mercancía o reembolsara el monto de la compra. Antes de regresar un producto a Parallax se debe llamar a Parallax y obtener un numero de RMA (Autorización de Regreso de Material).
  • Página 3 ESTIPULACIONES DE REPONSABILIDAD LEGAL Parallax Inc. no se hace responsable por incidentes especiales o daños resultantes de cualquier violación de garantía o cualquier otra teoría legal incluyendo perdidas de ganancias, tiempo perdido, daños o reemplazos de equipo o propiedad, así como cualquier costo de recuperación, reprogramación o reproducción de cualquier dato almacenado en o usado con los productos...
  • Página 5: Tabla De Contenido

    Tabla de Contenido PREFACIO ..........................11 CAPÍTULO 1 : INTRODUCCION AL CHIP PROPELLER ............13 ........................... 13 ONCEPTO ..................... 14 IPOS DE NCAPSULADOS ......................15 ESCRIPCIÓN DE ....................... 16 SPECIFICACIONES ....................17 ONEXIONES DE ARDWARE ....................18 ROCEDIMIENTO DE NICIO .....................
  • Página 6 Tabla de Contenido Operadores Binarios .......................45 Símbolos sintaxicos ......................46 .....................47 LEMENTOS DE ENGUAJE Reglas de Símbolos......................47 Representaciones de Valores..................47 Definiciones Sintaxicas ....................48 ABORT............................49 BYTE .............................54 BYTEFILL ..........................60 BYTEMOVE ..........................61 CASE .............................62 CHIPVER ..........................65 CLKFREQ ..........................66 _CLKFREQ ..........................68 CLKMODE ..........................70 _CLKMODE ..........................71 CLKSET..........................74 CNT ............................76 COGID............................78...
  • Página 7 Tabla de Contenido LOOKUP, LOOKUPZ ....................... 142 NEXT........................... 144 OBJ............................. 145 ........................147 PERADORES OUTA, OUTB ........................179 PAR............................. 182 PHSA, PHSB ........................184 PRI............................. 185 PUB............................. 186 QUIT........................... 190 REBOOT ..........................191 REPEAT ..........................192 RESULT ..........................198 RETURN ..........................200 ROUND ..........................
  • Página 8 Tabla de Contenido Configuración ........................248 Control de Cog......................248 Control de Proceso .......................248 Condiciones ........................248 Control de Flujo......................250 Efectos ..........................250 Acceso de Memoria Principal ..................250 Operaciones Comunes ....................250 Constantes ........................252 Registros ........................253 Operadores Unarios......................253 Operadores Binarios .....................254 ................255 LEMENTOS DE ENGUAJE NSAMBLADOR Definiciones de Sintaxis....................255 códigos Operacionales y sus Tablas ................256...
  • Página 9 Tabla de Contenido FRQA, FRQB ........................300 HUBOP ..........................301 ) ......................302 ONDICIONES INA, INB ..........................304 JMP............................. 306 JMPRET ..........................308 LOCKCLR ..........................312 LOCKNEW ..........................313 LOCKRET ..........................314 LOCKSET ..........................316 MAX............................. 317 MAXS........................... 318 MIN............................. 319 MINS...........................
  • Página 10 Tabla de Contenido REV .............................357 ROL .............................358 ROR .............................359 SAR .............................360 SHL .............................361 SHR .............................362 SUB .............................363 SUBABS..........................364 SUBS ...........................365 SUBSX..........................366 SUBX ...........................368 SUMC ...........................370 SUMNC..........................371 SUMNZ..........................373 SUMZ ...........................374 ...........................375 ÍMBOLOS Representaciones de Valores..................375 TEST ...........................377 TESTN..........................378 TJNZ ...........................379 TJZ .............................380 VCFG ...........................381 VSCL ...........................382 WAITCNT ..........................383...
  • Página 11: Prefacio

    Gracias por comprar un Chip Propeller. ¡En breve estarás programando en poco tiempo! Los chips Propeller son micro controladores increíblemente capaces; el muy anticipado resultado de ocho años de trabajo y esfuerzos de Chip Gracey y el equipo entero de Parallax Inc.
  • Página 12 Prefacio Cambios importantes incluyen:  TESTN Se agrego una instrucción del Ensamblador Propeller; (ver página 347)  Las siguientes secciones se escribieron para clarificar: ADDSX en página 268 ADDX en página 270 CALL en página 274 CMPSX en página 283 CMPX en página 286 JMPRET...
  • Página 13: Capítulo 1 : Introduccion Al Chip Propeller

    1: Introducción al Chip Propeller Capítulo 1: Introducción al Chip Propeller Este capítulo describe el hardware del chip Propeller. Para entender completamente y usar el Propeller efectivamente es importante entender primero su arquitectura. Este capítulo presenta los detalles del hardware tales como tipos de paquetes, tamaños, descripciones de pins y funciones.
  • Página 14: Tipos De Encapsulados

    Introducción al Chip Propeller Tipos de Encapsulados El chip Propeller está disponible en los tipos de paquetes mostrados aquí: P8X32A-D40 40-pin DIP P8X32A-Q44 P8X32A-M44 44-pin LQFP 44-pin QFN Pagina 14 · Manual Propeller v1.1...
  • Página 15: Descripción De Pins

    1: Introducción al Chip Propeller Descripción de Pins Tabla 1-1: Descripciones de Pins Nombre Dirección Descripción Propósito General Puerto A E/S. Puede proporcionar 40 mA a 3.3 VDC. Disparo Lógico es ≈ ½ VDD; 1.65 VDC @ 3.3 VDC. Los pins mostrados tienen un propósito especial al encender o reiniciar P0 –...
  • Página 16: Especificaciones

    Introducción al Chip Propeller Especificaciones Tabla 1-2: Especificaciones Modelo P8X32A Requerimientos de potencia 3.3 volts DC. (Max consumo de corriente debe limitarse a 300 mA). Velocidad de Reloj Externo DC a 80 MHz (4 MHz a 8 MHz con Clock PLL corriendo) Velocidad de Reloj de Sistema DC a 80 MHz 12 MHz o 20 kHz (aproximado;...
  • Página 17: Conexiones De Hardware

    1: Introducción al Chip Propeller Conexiones de Hardware La Figura 1-1 muestra un ejemplo del cableado que proporciona acceso al hospedaje y EEPROM que accesa el chip Propeller. En este ejemplo el acceso al hospedaje se logra a través del Propeller Plug (un convertidor serial USB a TTL). Figura 1-1: Ejemplo del diagrama de conexiones que permite programar el Propeller y una EEPROM externa de 32 Kbyte así...
  • Página 18: Procedimiento De Inicio

    Introducción al Chip Propeller Procedimiento de Inicio Una vez que se enciende (+100 ms), RESn va de bajo-alto o se reinicia el software: 1. El chip Propeller inicia su reloj interno en modo lento (≈ 20 kHz), se retrasa por 50 ms (retraso de reinicio), cambia el reloj a modo rápido (≈...
  • Página 19: Procedimiento De Apagado

    1: Introducción al Chip Propeller completo sobre cosas como velocidad del reloj interno, uso de E/S, configuración de registros y cuando y cuantos cogs corren en determinado tiempo. Todo esto variable mientras corre ya que es controlado por la aplicación, incluyendo la velocidad del reloj interno. Procedimiento de apagado Cuando el Propeller queda en modo de apagado el reloj interno se detiene y al mismo tiempo detiene los Cogs, así...
  • Página 20: Diagrama De Bloques

    Introducción al Chip Propeller Diagrama de Bloques Figura 1-2: Diagrama de Bloques del Chip Propeller Pagina 20 · Manual Propeller v1.1...
  • Página 21 1: Introducción al Chip Propeller La relación Cog y Hub es crítica para el chip Propeller. El Hub controla al Cog que tiene acceso a los recursos mutuamente exclusivos, tales como RAM/ROM principal, configuración de registros, etc. El Hub le da acceso exclusivo a cada cog en determinado momento de forma “round robin”...
  • Página 22: Recursos Compartidos

    Introducción al Chip Propeller Recursos Compartidos Hay dos tipos de recursos compartidos en el Propeller: 1) Común y 2) Mutuamente exclusivos. Los recursos comunes pueden accesarse en cualquier momento por cualquier número de cogs. Los recursos mutuamente exclusivos pueden accesarse por todos los cogs pero solo por un Cog a la vez.
  • Página 23 1: Introducción al Chip Propeller desarrollador a entregar tiempos determinados, consumos de potencia y respuesta a la aplicación desarrollada. Cada cog tiene su propia RAM, llamada RAM cog, a cual contiene 512 registros de 32 bits cada uno. La RAM cog es de propósito general excepto los últimos 16 registros, los cuales son de propósito especial como se describe en la Tabla 1-3.
  • Página 24: Activa Outa 7:0 Alto 'Igual Que Arriba

    Introducción al Chip Propeller Note 2: Para ensamblador Propeller solo legible como registro fuente (ej., dest, source); leer modificar-escribir no es posible como registro destino. Ver lenguaje ensamblador PHSA, PHSB sección en pag 344. Note 3: Reservado para uso futuro. Cada registro de propósito especial puede accesarse vía: 1) Su dirección física de registro (Ensamblador Propeller), 2) Su nombre predefinido (Spin o Ensamblador Propeller), o...
  • Página 25 1: Introducción al Chip Propeller Figura 1-3: Interacción Cog-Hub – Mejor escenario La Figura 1-4 muestra el peor escenario; la instrucción del hub estaba lista en el ciclo inmediato posterior después de iniciar la ventana de acceso al Cog 0; perdió el acceso. El Cog espera a la siguiente ventana de acceso al Hub (15 ciclos después) y entonces ejecuta la instrucción (7 ciclos) para un total de 22 ciclos para esa instrucción.
  • Página 26: Pins E/S

    Introducción al Chip Propeller Pins E/S El Propeller tiene 32 pins de E/S, 28 de los cuales son enteramente de propósito general. Cuatro pins E/S (28-31) tienen un propósito especial al inicio y después estan disponibles para propósito general; ver la sección de Procedimiento de Inicio en la pagina 18. Después de iniciar cualquier pin E/S puede usarlo cualquier cog en cualquier momento ya que los pins de E/S son recursos comunes.
  • Página 27: Contador Del Sistema

    1: Introducción al Chip Propeller Tabla 1-4: Ejemplos E/S Bit 12 de Cogs’ E/S Bit 12 de Cogs’ E/S Estado de E/S Regla Registro Dirección Registro Salida Pin P12 Seguida Cog ID 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 Ejemplo 1 0 0 0 0 0 0 0 0...
  • Página 28: Registro Clk

    Introducción al Chip Propeller Registro CLK El registro CLK es el control de la configuración del reloj del sistema; determina la fuente y las características del reloj del sistema. El Registro CLK configura el oscilador RC, el Reloj PLL, el cristal oscilador y los circuitos selectores de reloj. (Ver Figura 1-2: Diagrama de Bloques del Chip Propeller en Pág.
  • Página 29 1: Introducción al Chip Propeller Tabla 1-7: PLLENA del Registro CLK (Bit 6) Efecto RCFAST RCSLOW Deshabilita el circuito PLL. Los parámetros de la declaración _CLKMODE configura PLLENA de esta forma. Habilita el circuito PLL. Cada uno de los parámetros PLLxx del la declaración _CLKMODE configura PLLENA de esta forma al momento de compilación.
  • Página 30: Seguros

    Introducción al Chip Propeller Tabla 1-10: CLKSELx del Registro CLK (Bits 2:0) CLKSELx _CLKMODE Reloj Fuente Notas Parámetros Maestro Sin partes externas. RCFAST ~12 MHz Interno Rango de 8 MHz a 20 MHz. Baja potencia. Sin partes externas. RCSLOW ~20 kHz Interno Rango de 13 kHz a 33 kHz.
  • Página 31: Ram Principal

    1: Introducción al Chip Propeller 32 KB de RAM principal es de propósito general y es el destino de la aplicación Propeller ya sea descargándolo de un host o subiéndolo de una memoria externa EEPROM de 32 KB. Los 32 KB de ROM principal incluye el código y datos de recursos vitales para las funciones del Propeller: definición de caracteres, Log, Anti-Log y tablas de seno así...
  • Página 32: Rom Principal

    Introducción al Chip Propeller ROM Principal La segunda mitad de la memoria principal es ROM. Este espacio se usa para definición de caracteres, funciones matemáticas, el cargador de inicio y el interprete Spin. Definiciones de Caracteres La primera mitad de la ROM esta dedicada a un set de 256 caracteres. Cada definición de carácter es de 16 pixeles de ancho por 32 pixeles de altura.
  • Página 33 1: Introducción al Chip Propeller Los pares de caracteres se mezclan renglón por renglón de tal forma que cada 16 pixeles horizontales están espaciados con sus vecinos para que el carácter par tome los bits 0, 2, 4, ...30, y el carácter impar toma los bits 1, 3, 5, ...31. Los pixeles de la izquierda extrema están en los bits mas bajos mientras que los pixeles de la extrema derecha están en los bits mas altos como se muestra en la Figura 1-7.
  • Página 34: Tablas Log Y Anti-Log

    Introducción al Chip Propeller ® La herramienta Propeller incluye y usa la fuente Parallax True Type la cual sigue los diseños de la fuente Propeller integrada en el hardware. Con esta fuente y la herramienta Propeller usted puede incluir esquemáticos, diagramas de tiempo y otros diagramas justo en el código fuente de la aplicación.
  • Página 35 1: Introducción al Chip Propeller El interprete spin obtiene y ejecuta la aplicación Propeller desde la RAM principal. Esto puede guiar a iniciar cogs adicionales para correr mas código spin o código ensamblador Propeller según lo requiera la aplicación. Ver Procedimiento , pagina 18.
  • Página 37: Referencia De Lenguaje Spin

    2: Referencia de Lenguaje Spin Capítulo 2: Referencia del Lenguaje Spin Este capitulo describe todos los elementos del lenguaje Spin del chip Propeller y se puede usar como mejor referencia para elementos individuales de lenguaje Spin. Para un tutorial del uso del lenguaje use el tutorial de Lenguaje Spin de las herramientas en línea y luego regrese a esta parte para mas detalles.
  • Página 38: Estructura De Objetos/Spin

    Referencia de Lenguaje Spin Estructura de Objetos/Spin Cada objeto Propeller en un archive Spin que tiene una estructura inherente que consiste en hasta seis bloques diferentes de propósito especial: . Estos bloques se muestran abajo (en el orden que típicamente aparecen en los objetos) junto con el paquete de elementos que se usan en cada uno..
  • Página 39 2: Referencia de Lenguaje Spin PUB/PRI: Métodos Públicos y Privados definen rutinas Spin Pág. 186/185). ABORT FLOAT Operadores* ROUND p 49 p 111 p 202 p 147 BYTE FRQA OUTA p 54 p 114 p 179 p 204 BYTEFILL FRQB OUTB STRCOMP p 60...
  • Página 40: Lista Categórica De Lenguaje Spin Propeller

    Referencia de Lenguaje Spin Lista Categórica de Lenguaje Spin Propeller Los elementos marcados con un súper script “a” también están disponibles en Ensamblador Propeller. Asignación de Bloques Declara un Bloque Constante; p 87. Declara un Bloque Variable; p 215. Declara un Bloque de Referencia de Objeto; p 145. Declara un Bloque de Método Publico;...
  • Página 41: Control De Cog

    2: Referencia de Lenguaje Spin PLL8X _CLKMODE Constant para : Tiempo de Frecuencia Externa 8; p 71. PLL16X _CLKMODE Constant para : Tiempo de Frecuencia Externa 16; p 71. Control de Cog COGID Identificación de Cog Actual (0-7); p 78. COGNEW Iniciar el Siguiente Cog Disponible;...
  • Página 42: Memoria

    Referencia de Lenguaje Spin REPEAT Ejecuta un Bloque de código repetidamente un numero finito o infinito ...FROM con opción a contador opcional, intervalos, salidas y condiciones continuas; p 192..TO ...STEP ...UNTIL ...WHILE NEXT REPEAT Salta el resto de bloque hasta la siguiente instrucción;...
  • Página 43: Instrucciones

    2: Referencia de Lenguaje Spin Instrucciones STRING Declara expresiones cadena; tiempo de compilación; p 209. CONSTANT Declara expresiones constantes; tiempo de compilación; p 94. FLOAT Declara expresiones punto flotante; tiempo de compilación; p 111. ROUND Redondea expresiones de punto flotante a enteros; p 202. TRUNC Abrevia expresiones de punto flotante a decimales;...
  • Página 44: Constantes

    Referencia de Lenguaje Spin Constantes TRUE Lógico verdadero: -1 ($FFFFFFFF); p 96. FALSE Lógico Falso: 0 ($00000000) ; p 96. POSX Máximo entero positivo: 2,147,483,647 ($7FFFFFFF); p 96. NEGX Máximo entero negativo: -2,147,483,648 ($80000000); p 96. Valor de punto flotante para PI: ~3.141593 ($40490FDB); p 96. Variable RESULT Variable de resultado predeterminado para métodos...
  • Página 45: Operadores Binarios

    2: Referencia de Lenguaje Spin Operadores Binarios NOTA: Todos los operadores a la derecha son operadores de asignación. --y-- Transferencia de constantes (Bloque ); p 152. --y-- Transferencia de variable (Bloque ); p 153. --o-- Suma; p 153. --o-- Resta; p 154. --o-- Multiplica y regresa los 32 bits bajos (firmado);...
  • Página 46: Símbolos Sintaxicos

    Referencia de Lenguaje Spin Símbolos sintaxicos %1010 Indicador de número binario, como ; p 211. %%2130 Indicador de numero cuaternario, como ; p 211. $1AF Indicador hexadecimal, como o ensamblador “aquí” ; p 211. " "Hello" Indicador de Cadena ; p 211. Delimitador grupo en valores constantes, o símbolo guión bajo;...
  • Página 47: Elementos De Lenguaje Spin

    2: Referencia de Lenguaje Spin Elementos de Lenguaje Spin El resto de este capitulo describe los elementos del lenguaje spin, mostrados arriba, en orden alfabético. Algunos elementos se explican con el contexto de otros para mayor claridad; use las páginas de referencia de la lista categórica para ver los comentarios. Muchos elementos están disponibles en spin y ensamblador Propeller.
  • Página 48: Definiciones Sintaxicas

    Referencia de Lenguaje Spin Definiciones Sintaxicas Además de las descripciones detalladas, las siguientes páginas contienen definiciones de sintaxis para elementos y describe en términos cortos las opciones del elemento. Las definiciones de sintaxis usan símbolos especiales para indicar cuando y como se usan. NEGRITAS Negrita mayúsculas deben escribirse como se muestra.
  • Página 49: Abort

    ABORT 2: Referencia de Lenguaje Spin – ABORT Instrucción: Sale de un método abortando con un Valor opcional de regreso. ((PUB PRI)) ABORT   Valor Regresa: Ya sea en RESULT actual, o Valor si se proporciona.  Valor es una expresión opcional y se regresa cuando se aborta un método Explicación ABORT ABORT...
  • Página 50 ABORT – Referencia de Lenguaje Spin RETURN o alcanzando el final del método) la pila de llamada disminuirá. A esto se le llama “empujar” a la pila y “jalar” de la pila respectivamente. RETURN La instrucción jala la información mas reciente de la pila de llamada para facilitar el regreso al llamador inmediato;...
  • Página 51 ABORT 2: Referencia de Lenguaje Spin – MayAbort ABORT RETURN El tipo de salida que usa , no es conocido automáticamente por la RETURN llamada de la trampa; podría suceder para ser el destino de una instrucción . Por lo tanto el código debe escribirse de tal forma que detecte que tipo se utilizo.
  • Página 52 ABORT – Referencia de Lenguaje Spin PUB DriveMotors(Direction) <código para manejar motores> if MotorStuck abort FALSE 'Si el motor se detiene, abortar <mas código> Main Move El ejemplo de arriba muestra tres métodos de varios niveles lógicos, (“alto nivel”), DriveMotors Main (“nivel medio”) y (“bajo nivel”).
  • Página 53 ABORT 2: Referencia de Lenguaje Spin –...
  • Página 54: Byte

    BYTE – Referencia de Lenguaje Spin BYTE instrucción: Declara un símbolo de tamaño byte, datos de tamaño alineado a byte, o lecto escritura de un byte en memoria principal.   BYTE Symbol [Count]   BYTE   Symbol Data [Count] ((PUB...
  • Página 55: Temp Es Un Byte 'Str Es Un Arreglo Byte

    BYTE 2: Referencia de Lenguaje Spin – Rango de Byte La memoria que es tamaño byte (8 bits) puede contener un valor que es una posible combinación de 2 bits (Ej., uno de 256 combinaciones). Esto le da a los valores de byte un rango de 0-255.
  • Página 56: Dato De Tamaño Byte Alineado 'Una Cadena De Bytes

    BYTE – Referencia de Lenguaje Spin MyData byte 64, $AA, 55 'Byte alineado y datos tamaño byte MyString byte "Hello",0 'Una cadena de bytes (caracteres) MyData MyString Los ejemplos mencionados declaran dos símbolos de datos, . Cada símbolo de datos apunta al inicio del byte alineado y datos de tamaño byte en memoria MyData principal.
  • Página 57: Direccionando Memoria Principal

    BYTE 2: Referencia de Lenguaje Spin – MyStr elemento de seguido inmediatamente a $1B. Note que la dirección de inicio ($18) es arbitraria y puede cambiar según se modifique el código o si el objeto mismo se incluye en otra aplicación. 64 $AA 55 “H”...
  • Página 58 BYTE – Referencia de Lenguaje Spin Para mayor explicación de como se acomodan los datos en memoria, ver la sección de Declaración de Data(Sintaxis 1) en Pág. 103. Una Referencia de Memoria Alternativa Hay aun otra forma de accesar los datos del código mostrado arriba; usted puede referenciar los símbolos de datos directamente.
  • Página 59 BYTE 2: Referencia de Lenguaje Spin – WordVar.byte[1] := 100 'Activa el Segundo byte de WordVar a 100 LongVar.byte := 25 'Activa el primer byte de LongVar a 25 LongVar.byte[0] := 25 'Igual que arriba LongVar.byte[1] := 50 'Activa el Segundo byte de LongVar a 50 LongVar.byte[2] := 75 'Activa el tercer byte de LongVar a 75 LongVar.byte[3] := 100...
  • Página 60: Bytefill

    BYTEFILL – Spin Language Reference BYTEFILL instrucción: Llena los bytes de la memoria principal con un valor. ((PUB PRI)) BYTEFILL (StartAddress, Value, Count )  StartAddress es una expresión indicando la localidad del primer byte de memoria para llenar con un Value. ...
  • Página 61: Bytemove

    BYTEMOVE 2: Spin Language Reference – BYTEMOVE instrucción: Copia bytes de una región a otra en memoria principal. ((PUB PRI)) BYTEMOVE (DestAddress, SrcAddress, Count )  DestAddress es una expresión especificando la localidad de memoria principal en donde copiar el primer byte de la fuente.. ...
  • Página 62: Case

    CASE – Referencia de Lenguaje Spin CASE instrucción: Compara una expresión contra otra expresión y ejecuta el bloque si encuentra que ambas expresiones coinciden. ((PUB PRI)) CASE CaseExpression  MatchExpression :  Statement(s)   MatchExpression :   Statement(s) ...
  • Página 63 CASE 2: Referencia de Lenguaje Spin – los indicadores. Presionando Ctrl + I nuevamente deshabilitara esta función. Vea la ayuda de la herramienta Propeller para una lista completa de accesos rápidos. Usando CASE CASE es practico cuando una de muchas acciones necesitan desarrollarse dependiendo del valor de una expresión.
  • Página 64: Variaciones De Las Instrucciones

    CASE – Referencia de Lenguaje Spin X + Y Existe un importante concepto respecto a este ejemplo. Si es 10 o 15, se activa P0 o si X + Y X + Y es 25, se activa P1, o se es 20 a 30, se activa P2, etc.
  • Página 65: Chipver

    CHIPVER 2: Spin Language Reference – CHIPVER instrucción: Obtener el numero de la Versión del chip Propeller . ((PUB PRI)) CHIPVER Regresa: Numero de la versión del chip Propeller. Explicación CHIPVER La instrucción lee y regresa el numero de la versión del chip Propeller. Por ejemplo: V := chipver Este ejemplo activa al numero de la version del chip Propeller, 1 en este caso.
  • Página 66: Clkfreq

    CLKFREQ – Referencia de Lenguaje Spin CLKFREQ instrucción: Frecuencia de reloj del sistema; frecuencia en la que esta corriendo cada cog. ((PUB PRI)) CLKFREQ Regresa: La frecuencia actual del reloj de sistema en Hz. Explicación CLKFREQ El valor de regreso de es la frecuencia actual del reloj de sistema determinada por el modo de reloj actual (tipo oscilador, ganancia y parámetros PLL) y el pin de frecuencia CLKFREQ...
  • Página 67 CLKFREQ 2: Referencia de Lenguaje Spin – CLKSET CLKFREQ instrucción . Los objetos que son sensitivos al tiempo deberán verificar puntos estratégicos para ajustar a los nuevos parámetros automáticamente. CLKFREQ vs. _CLKFREQ CLKFREQ _CLKFREQ CLKFREQ esta relacionado a, pero no es el mismo que es una instrucción _CLKFREQ que regresa la frecuencia actual del reloj del sistema mientras...
  • Página 68: Clkfreq

    _CLKFREQ – Referencia de Lenguaje Spin _CLKFREQ Constante: Pre-definido, constante activada una vez para especificar la frecuencia del reloj de sistema. _CLKFREQ = expresión  expresión es una expresión entera que indica la frecuencia del reloj del sistema al inicio de la aplicación. Explicación _CLKFREQ especifica la frecuencia del reloj del sistema al inicio.
  • Página 69 _CLKFREQ 2: Referencia de Lenguaje Spin – _CLKMODE = XTAL2 _CLKFREQ = 10_000_000 Estas dos declaraciones activan el modo clock para un cristal externo de media velocidad, no se activa multiplicador Clock PLL, y la frecuencia del reloj del sistema a 10 MHz. El valor de _XINFREQ se activa automáticamente a 10 MHz, también por estas declaraciones.
  • Página 70: Clkmode

    CLKMODE – Spin Language Reference CLKMODE instrucción: Activación del modo clock actual. ((PUB PRI)) CLKMODE Regresa: Modo clock actual. Explicación La activación del modo clock es un valor de tamaño byte, determinado por la aplicación al tiempo de compilación desde el registro CLK. Ver Registro CLK, Pág. 28, para una explicación de las activaciones posibles.
  • Página 71: Clkmode

    _CLKMODE 2: Referencia de Lenguaje Spin – _CLKMODE Constante: Una constante de tiempo pre definida ajustable para especificar el nivel de aplicación en los parámetros del modo clock . _CLKMODE = expresión  expresión es un expresión entero hecha para uno o dos parámetros de modo de clock constantes mostrados en la Tabla 2-3.
  • Página 72 _CLKMODE – Referencia de Lenguaje Spin Tabla 2-4: Expresiones Validas de Modo Clock y Valores de Registro CLK expresión Valida Valor de Registro CLK expresión Valida CLK Register Value XTAL1 + PLL1X 0_1_1_01_011 RCFAST 0_0_0_00_000 XTAL1 + PLL2X 0_1_1_01_100 RCSLOW 0_0_0_00_001 XTAL1 + PLL4X 0_1_1_01_101...
  • Página 73 _CLKMODE 2: Referencia de Lenguaje Spin – multiplicara por 16 (el clock PLL siempre multiplica por 16) pero se usara el bit resultado de 8x; el reloj de sistema deberá ser 4 MHz * 8 = 32 MHz. _CLKMODE = XINPUT + PLL2X Esta instrucción active el modo clock para un oscilador externo conectado a X1 solamente y habilita el circuito clock PLL para activar el reloj del sistema usando el resultado 2x.
  • Página 74: Clkset

    CLKSET – Referencia de Lenguaje Spin CLKSET instrucción: Activa ambos modos clock y frecuencia del reloj del sistema en tiempo real. ((PUB PRI)) CLKSET (Mode, Frequency)  Mode es una expresión entero que se escribirá al registro CLK para cambiar el modo clock.
  • Página 75 CLKSET 2: Referencia de Lenguaje Spin – cristal oscilador se deja en el estado actual, sin importar si esta encendido o apagado. Ver el objeto Clock en la librería Propeller para métodos y tiempos de modificación de clock. NOTA: Toma aproximadamente 75 µs al Propeller desarrollar la acción de cambio entre fuentes de reloj.
  • Página 76: Cnt

    – Referencia de Lenguaje Spin Registro: Registro Contador del Sistema. ((PUB PRI)) Regresa: El valor actual del contador del sistema 32-bit. Explicación El registro contiene el valor actual en el contador del sistema global de 32 bits. El contador del sistema sirve como referencia central de tiempo para todos los cogs; incrementa su valor de 32 bits cada ciclo del reloj del sistema.
  • Página 77 2: Referencia de Lenguaje Spin – PUB Toggle | TimeBase, OneMS dira[0]~~ 'Acyiva P0 a salida OneMS := clkfreq / 1000 'Calcula ciclos por 1 milisegundo TimeBase := cnt 'Obtiene el contador actual repeat 'Ciclo sin fin waitcnt(TimeBase += OneMS) 'Espera para iniciar el siguiente milisegundo !outa[0]...
  • Página 78: Cogid

    COGID – Spin Language Reference COGID instrucción: Numero de Cog Actual (0-7). ((PUB PRI)) COGID Regresa: El numero actual del cog (0-7). Explicación COGID El valor de regreso de es la identificación del cog que ejecuto el comando. Normalmente el cog actual en el cual esta corriendo el código no importa, sin embargo para algunos objetos puede ser importante mantener el rastreo.
  • Página 79: Coginit

    COGINIT 2: Referencia de Lenguaje Spin – COGINIT Instrucción: Inicia o reinicia un Cog por numero para correr Spin o Ensamblador Propeller. ((PUB PRI))   COGINIT (CogID, SpinMethod , StackPointer ) (ParameterList) ((PUB PRI)) COGINIT (CogID, AsmAddress, Parameter ) ...
  • Página 80 COGINIT – Referencia de Lenguaje Spin del cog en e; espacio especificado de pila antes de iniciar el cog. Reiniciar un cog con una COGINIT instrucción especificando el mismo espacio de pila que esta usando producirá una nueva imagen del marco que golpeara antes de que el cog reinicie. Para evitar que esto suceda COGSTOP COGINIT primero indique un...
  • Página 81: Cognew

    COGNEW 2: Referencia de Lenguaje Spin – COGNEW instrucción: Inicia el siguiente cog disponible para correr Spin o Ensamblador Propeller. ((PUB PRI))   COGNEW , StackPointer ) (SpinMethod (ParameterList) ((PUB PRI)) COGNEW (AsmAddress, Parameter ) Regresa: El numero del cog iniciado con éxito (0-7), o -1 si no se inicio. ...
  • Página 82: Espacio De Pila Para Square Cog

    COGNEW – Referencia de Lenguaje Spin código Spin (Sintaxis 1) COGNEW Para correr un método spin en otro cog la instrucción necesita el nombre del método, sus parámetros y un apuntador a un espacio de pila. Por ejemplo: long SqStack[6] 'Espacio de pila para Square cog PUB Main | X X := 2...
  • Página 83 COGNEW 2: Referencia de Lenguaje Spin – La Necesidad de Espacio de Pila Un cog ejecutando código spin a diferencia de uno ejecutando ensamblador Propeller necesita un espacio temporal llamado espacio de pila para retener datos tales como llamadas de pila, parámetros y resultados intermedios.
  • Página 84 COGNEW – Referencia de Lenguaje Spin Method se determina para ser código que es verdaderamente importante para correr en otro cog en vez de escribir el código como el ejemplo de arriba, SomeObject deberá reescribirse de la siguiente forma. long StackSpace[8] 'Espacio pila para nuevo cog byte CogID 'Almacena Numero del Nuevo...
  • Página 85 COGNEW 2: Referencia de Lenguaje Spin – Toggle rdlong Delay, #0 'Obtiene frecuencia de reloj Delay, #2 'Divide en 4 Time, cnt 'Obtiene el tiempo actual Time, Delay 'Ajusta por 1/4 de segundo dira, #1 'Activa pin 0 a salida Loop waitcnt Time, Delay 'Espera 1/4 de segundo...
  • Página 86: Cogstop

    COGSTOP – Spin Language Reference COGSTOP instrucción: Detiene un cog por su numero. ((PUB PRI)) COGSTOP (CogID )  CogID es el numero (0 – 7) del cog a detener. Explicación COGSTOP detiene un cog de numero CogID y coloca al cog en un estado durmiente. En este estado el cog deja de recibir pulsos del reloj del sistema de tal forma que el consumo de potencia se reduce de manera significante.
  • Página 87: Con

    2: Referencia de Lenguaje Spin – Denominador: Declara un Bloque Constante .   Symbol = Expression (( ,  )) Symbol = Expression … [ ]  [ ]  #Expression (( ,  )) Symbol Offset (( ,  )) Symbol Offset …...
  • Página 88: Con - Referencia De Lenguaje Spin

    – Referencia de Lenguaje Spin Declaraciones Constantes Comunes (Sintaxis 1) La forma mas común de declaraciones constantes comienza con una línea sola seguida por una o mas declaraciones. debe empezar en la columna 1 (la columna de la extrema izquierda) de la línea donde se encuentra y se recomienda que la siguientes líneas se indenten por al menos un espacio.
  • Página 89 2: Referencia de Lenguaje Spin – diferencia de las constantes enteros. Para especificar una constante de punto flotante se debe dar una clara indicación que el valor es de punto flotante; la expresión puede hacerse de punto flotante sencillo o completamente de punto flotante (no enteros). Los valores de punto flotante deben escribirse como: 1) Dígitos decimales seguidos por punto decimal y al menos un digito decimal mas, 2) Dígitos decimales seguido por “e”...
  • Página 90: Enumeración (Sintaxis 2 Y 3)

    – Referencia de Lenguaje Spin En operaciones de punto flotante en tiempo real, los objetos FloatMath, FloatString, Float32, y Float32Full ofrecen funciones matemáticas compatibles con números de precisión sencilla. FLOAT ROUND TRUNC en Pág. 111, en Pág. 202, en Pág. 213, y los objetos FloatMath, FloatString, Float32, y Float32Full para mayor información.
  • Página 91 2: Referencia de Lenguaje Spin – mayoría de los casos, los valores en si no importan; todo lo que importa es que tienen asignado un numero único. Definiendo valores de enumeración de esta forma tiene la ventaja de asegurar que los valores asignados son únicos y contiguos dentro del grupo. Usando el ejemplo de arriba los métodos que usan pueden hacer cosas como lo que sigue Mode (Asumiendo que...
  • Página 92: Alcance De Constantes

    – Referencia de Lenguaje Spin RunTest RunVerbose RunBrief RunFull Aquí, son 1 y 2, respectivamente y son 5 y 6, respectivamente. Mientras esta característica puede ser útil, para mantener buenas practicas de programación deberá usarse solo en casos especiales. Una forma mas recomendada para lograr el mismo resultado que en el ejemplo anterior es incluir campos Offset opcionales.
  • Página 93: Activa Formato A Numero Constante Decimal

    2: Referencia de Lenguaje Spin – Ejemplo: Num : "Numbers" PUB SomeRoutine Format := Num#DEC 'Activa formato a numero constante decimal Numbers Aquí se declara un objeto, “ ,” como el símbolo . Después un método se refiere a la Num#DEC constante numbers es el objeto referencia,...
  • Página 94: Constant

    CONSTANT – Referencia de Lenguaje Spin CONSTANT Directiva: Declara una expresión constante en línea para resolver en tiempo de compilación. ((PUB PRI)) CONSTANT (ConstantExpression ) Regresa: Valor resuelto de una expresión constante.  ConstantExpression es la expresión constante deseada. Explicación El bloque puede usarse para crear constantes desde expresiones que son referenciadas desde diversos lugares en el código, pero hay ocasiones en que la expresión constante se...
  • Página 95 CONSTANT 2: Referencia de Lenguaje Spin – X = 500 Y = 2500 PUB Blink !outa[0] waitcnt(constant(X+200) + cnt) 'exp c/partes en tiempo real !outa[0] waitcnt(constant((X+Y)/2) + cnt)'exp c/partes en tiempo real Blink Los dos ejemplos de arriba hacen exactamente lo mismo: sus métodos cambian P0, X+200 (X+Y)/2...
  • Página 96: Referencia De Lenguaje Spin - Constantes (Pre-Definidas)

    Referencia de Lenguaje Spin – Constantes (pre-definidas) Constantes (pre-definidas) Las siguientes constantes son predefinidas por el compilador: TRUE Lógico Verdadero: ($FFFFFFFF) FALSE Lógico Falso: ($00000000) POSX Máximo Entero Positivo: 2,147,483,647 ($7FFFFFFF) NEGX Máximo Entero Negativo: -2,147,483,648 ($80000000) ≈ 3.141593 Valor de punto flotante para PI: ($40490FDB) RCFAST Oscilador Interno Rápido:...
  • Página 97 2: Referencia de Lenguaje Spin – Constantes (pre-definidas) POSX y NEGX POSX NEGX se usan para propósitos de comparación o como bandera en evento especifico: if Z > NEGX <código a ejecutar si Z no ha alcanzado el negativo mas pequeño >...
  • Página 98: Ctra, Ctrb

    CTRA, CTRB – Referencia de Lenguaje Spin CTRA, CTRB Registro: Registros de Control Contador A y Contador B. ((PUB PRI)) CTRA ((PUB PRI)) CTRB Regresa: Valor actual del Registro de Control del Contador A o Contador B, si se usa como una fuente variable.
  • Página 99 CTRA, CTRB 2: Referencia de Lenguaje Spin – actualización del contador puede ser breve (12.5 ns a 80 MHz), la generación de una señal muy dinámica y su medición es posible. Control de Campos de Registros CTRA CTRB Cada registro contiene cuatro campos mostrados en la tabla.
  • Página 100 CTRA, CTRB – Referencia de Lenguaje Spin CTRMODE CTRA CTRB El campo CTRMODE de selecciona uno de 32 modos de operación, mostrados en la Tabla 2-7, para el correspondiente Contador A o Contador B. En ensamblador Propeller MOVI el campo CTRMODE puede escribirse junto con PLLDIV, usando la instrucción FRQx PHSx Los modos %00001 a %00011 hacen que la acumulación...
  • Página 101 CTRA, CTRB 2: Referencia de Lenguaje Spin – Tabla 2-7: Modos Contadores (CTRMODE Valores de Campo) Acumulado APIN BPIN CTRMODE Descripción FRQx PHSx Salida* Salida* %00000 Contador deshabilitado (apagado) 0 (never) 0 (none) 0 (none) %00001 PLL interno (modo de video) 1 (always) %00010 PLL terminación sencilla...
  • Página 102: Dat

    – Referencia de Lenguaje Spin Denominador: Declara un bloque Data              Symbol Alignment Size Data Size Data … [Count ] [Count ]       Symbol Condition Instruction Operands...
  • Página 103: Declaración De Data(Sintaxis 1)

    2: Referencia de Lenguaje Spin – Declaración de Data(Sintaxis 1) BYTE WORD LONG Data se declara con una alineación especifica y tamaño ( ) para indicar como debe almacenarse en memoria. La dirección donde se almacenan los datos depende de la estructura del objeto y la aplicación donde se compila ya que los datos se incluyen como parte del código compilado.
  • Página 104: Obtiene El Primer Byte De Una Tabla

    – Referencia de Lenguaje Spin Quizá noto que el valor 75000 se especifico en tamaño word. El numero 75000 es $124F8 en hexadecimal, pero como es mayor que un word, solo los datos del word mas bajo ($24F8) se almaceno. Esto resulta en word 6 (bytes 12 y 13) que contienen $F8 y $24, y en word 7 (bytes 14 y 15) que contiene $00 y $00 debido al ajuste a ceros para el siguiente valor alineado long.
  • Página 105 2: Referencia de Lenguaje Spin – MyData Este ejemplo crea una tabla de datos llamada que consiste en bytes $FF, 25 y %1010. GetData MyData El método publico lee el primer byte de desde memoria principal y lo Temp almacena en su variable local BYTE WORD LONG...
  • Página 106: Inicia Código Toggle

    – Referencia de Lenguaje Spin Loop waitcnt Time, Delay 'Espera de segundo outa, #1 'cambia pin #Loop 'regresa ciclo Delay Time Cuando una aplicación Propeller arranca inicialmente solo se ejecuta código Spin. En cualquier tiempo, sin embargo, el código Spin puede escoger iniciar código ensamblador en COGNEW COGINIT un cog por si mismo.
  • Página 107: Dira, Dirb

    32 pins E/S en el Puerto B; los bits 0 a 31 corresponden de P32 a P63. DIRB NOTA: esta reservado para uso futuro; El Propeller P8X32A no incluye pins E/S del DIRA Puerto B por lo que en adelante solo se discutirá DIRA se usa para activar y obtener el estado actual de la dirección de uno o mas pins E/S del...
  • Página 108: Bit 5 De Dira (P5 A Salida)

    DIRA, DIRB – Referencia de Lenguaje Spin del pin de E/S es el “cableado OR” del cog entero. Vea Pins E/S en la Pág. 26 para mas información. Esta configuración puede describirse fácilmente en las siguientes reglas: A. Un pin es solo entrada si un cog no lo activa como salida. B.
  • Página 109 DIRA, DIRB 2: Referencia de Lenguaje Spin – DIRA Esto active P5 a salida. Todos los demás bits de (y por lo tanto todos los demás pins E/S) se quedan en el estado previo. DIRA El registro soporta una forma especial de expresión llamada expresión de rango, el cual permite afectar un grupo de pins E/S al mismo tiempo sin afectar a otros fuera del rango especificado.
  • Página 110: File

    FILE – Referencia de Lenguaje Spin FILE Directiva: Importa un archivo externo como datos. FILE "FileName"  FileName es el nombre sin extensión del archivo de datos deseado. Durante la compilación un archivo con este nombre se busca en el tabulador del editor, el directorio de trabajo y el directorio de la librería.
  • Página 111: Float

    FLOAT 2: Referencia de Lenguaje Spin – FLOAT Directiva: Convierte un entero constante a valor punto flotante en tiempo de compilación. ((CON DAT)) FLOAT (IntegerConstant ) Regresa: Valor resuelto de la expresión entera a numero de punto flotante.  IntegerConstant es el entero que se desea convertir para usarse como valor de punto flotante.
  • Página 112 FLOAT – Referencia de Lenguaje Spin Ratio Aquí, se define como una constante entera y aparece definida como una constante Ratio de punto flotante. Esto ocasiona un error en la línea porque para expresiones constantes de punto flotante cada valor en la expresión debe ser de punto flotante; no se puede mezclar Ratio = 2 / 5.0 enteros con valores de punto flotante como FLOAT...
  • Página 113: Free

    _FREE 2: Referencia de Lenguaje Spin – _FREE Constante: Pre-definida, constante ajustable de una sola vez para especificar el tamaño de espacio libre en la aplicación. _FREE = expresión  expresión es un expresión entera que indica el numero de longs a reservar de espacio libre.
  • Página 114: Frqa, Frqb

    FRQA, FRQB – Referencia de Lenguaje Spin FRQA, FRQB Registro: Registros de frecuencia del contador A y contador B . ((PUB PRI)) FRQA ((PUB PRI)) FRQB Regresa: Valor actual del Registro de Frecuencia del Contador A o Contador B, si se usa como fuente variable.
  • Página 115 2: Referencia de Lenguaje Spin – instrucción: Prueba condiciones y ejecuta un bloque de código si es valido (lógica positiva). ((PUB PRI)) Condition(s)  IfStatement(s)  ELSEIF Condition(s)   ElseIfStatement(s) …  ELSEIFNOT Condition(s)   ElseIfNotStatement(s) …  ELSE ...
  • Página 116: If - Referencia De Lenguaje Spin

    – Referencia de Lenguaje Spin Indentacion es Critica IMPORTANTE: La indentacion es critica. El lenguaje Spin usa la indentacion (de un espacio o mas) de líneas que siguen instrucciones condicionales para determinar si corresponden a la instrucción o no. Para ver estos bloques de código lógicamente agrupados puede presionar Ctrl + I para ver los indicadores de grupos.
  • Página 117 2: Referencia de Lenguaje Spin – if X > 10 AND X < 100 'Si X es mayor que 10 y menor que 100 Esta instrucción seria verdadera si y solo si es mayor que 10 y es también menor que 100.
  • Página 118 – Referencia de Lenguaje Spin elseif X == 90 'de lo contrario si X = 90 !outa[1] 'cambia P1 Aquí si es mayor que 100, el Pin 0 de E/S se cambia, de otra forma si es igual a 90, el Pin 1 de E/S se cambia, y si ninguna de esas condiciones es verdad ninguno de los dos P0 y P1 se cambia.
  • Página 119 2: Referencia de Lenguaje Spin – Hicimos esto abajo: if X > 100 'Si X es mayor que 100 !outa[0] 'cambia P0 elseif X > 50 'de otra forma si X > 50 !outa[2] 'cambia P2 elseif X == 90 'de otra forma si X = 90 <-- ERROR, POR LA CONDICION DE ARRIBA.
  • Página 120 – Referencia de Lenguaje Spin FALSO ELSEIFNOT ELSEIF . Múltiples condiciones se pueden combinar en una instrucción ELSE sencilla condicional en cualquier orden entre el y el opcional Pagina 120 · Manual Propeller v1.1...
  • Página 121: Ifnot

    IFNOT 2: Spin Language Reference – IFNOT instrucción: Prueba una condición y ejecuta un bloque de código si es válido (lógica negativa) ((PUB PRI)) IFNOT Condition(s)  IfNotStatement(s)  ELSEIF Condition(s)   ElseIfStatement(s) …  ELSEIFNOT Condition(s)   ElseIfNotStatement(s) …...
  • Página 122: Ina, Inb

    32 pins E/S en puerto B; los bits 0 al 31 corresponden de P32 a P63. NOTA: esta reservado para uso futuro, el Propeller P8X32A no incluye pins de E/S para el Puerto B por lo que solo se considera en la discusión.
  • Página 123 INA, INB 2: Referencia de Lenguaje Spin – Note que debido a la naturaleza “wired-OR” de los pins E/S no hay conflicto eléctrico entre los cogs, todos ellos pueden accesar lo pins E/S simultáneamente. Depende del desarrollador de la aplicación asegurar que no hay dos cogs que ocasionan conflicto lógico en el mismo pin E/S durante el tiempo de ejecución.
  • Página 124: Lockclr

    LOCKCLR – Referencia de Lenguaje Spin LOCKCLR instrucción: Limpia el seguro a falso y obtiene su estado previo. ((PUB PRI)) LOCKCLR ( ID ) Regresa: Estado previo de lock ( TRUE FALSE  es el ID (0 – 7) del lock para limpiar a falso. Explicación LOCKCLR LOCKNEW...
  • Página 125 LOCKCLR 2: Referencia de Lenguaje Spin – REPEAT “bloqueado el recurso” y el primer ciclo repeat termina. El segundo ciclo en cada long[Idx LocalData[Idx] método lee o escribe el recurso a través de las instrucciones . La lockclr(SemID) última línea de cada método, , limpia los seguros asociados de los recursos a FALSE , lógicamente desbloqueando o liberando los recursos para que otros los usen.
  • Página 126: Locknew

    LOCKNEW – Referencia de Lenguaje Spin LOCKNEW instrucción: Verifica un nuevo seguro y obtiene su ID. ((PUB PRI)) LOCKNEW Regresa: ID (0-7) del seguro que se verificó o -1 si ninguno esta disponible. Explicación LOCKNEW LOCKNEW LOCKRET LOCKSET LOCKCLR es uno de cuatro comandos de seguros ( utilizado para administrar recursos que son definidos por usuario y se consideran mutuamente LOCKNEW exclusivos.
  • Página 127: Reglas Sugeridas Para Seguros

    LOCKNEW 2: Referencia de Lenguaje Spin – Usando LOCKNEW Un recurso definido por usuario mutuamente exclusivo debe iniciarse por un cog, entonces el LOCKNEW mismo cog deberá usar para verificar un seguro único en el cual administre ese recurso y pase el ID de ese seguro a cualquier otro cog que lo requiera. Por ejemplo: byte SemID PUB SetupSharedResource <código para activar el recurso compartido definido por usuario>...
  • Página 128 LOCKNEW – Referencia de Lenguaje Spin LOCKCLR puede ignorarse aqui ya que el cog es el único con el derecho lógico de limpiarlo.  Si un recurso no se necesita mas o se convierte en no exclusivo, el seguro asociado LOCKRET(SemID) deberá...
  • Página 129: Lockret

    LOCKRET 2: Spin Language Reference – LOCKRET instrucción: Regresa el seguro al grupo de seguros, dejándolo disponible para futuras LOCKNEW requisiciones ((PUB PRI)) LOCKRET ( ID )  es el ID (0 – 7) del seguro a regresar al grupo de seguros. Explicación LOCKRET LOCKNEW...
  • Página 130: Lockset

    LOCKSET – Referencia de Lenguaje Spin LOCKSET instrucción: Activa el seguro a verdadero y obtiene su estado previo. ((PUB PRI)) LOCKSET ( ID ) Regresa: Estado previo del seguro ( TRUE FALSE  TRUE es el ID (0 – 7) del seguro para activar a Explicación LOCKSET LOCKNEW...
  • Página 131 LOCKSET 2: Referencia de Lenguaje Spin – LOCKSET FALSE regresa , la condición “until not lockset…” es verdadera lo que significa que REPEAT REPEAT tenemos “locked the resource” y el primer ciclo termina. El segundo ciclo long[Idx] cada método lee o escribe el recurso a través de las instrucciones LocalData[Idx] lockclr(SemID .
  • Página 132: Long

    LONG – Referencia de Lenguaje Spin LONG Denominador: Declara un símbolo de tamaño long, alineado long o lee/escribe un long en memoria principal.   LONG Symbol [Count ]   LONG   Symbol Data [Count] ((PUB PRI))  ...
  • Página 133: Temp Es Un Long (2 Words, 4 Bytes) 'List Es Un Arreglo Long

    LONG 2: Referencia de Lenguaje Spin – esta sujeto a como la computadora y el usuario lo interpreten. En ensamblador Propeller un valor long puede ser tratado con o sin signo. Declaración Variable Long (Sintaxis 1) LONG En bloques la sintaxis 1de se usa para declarar globales, variables simbólicas que son longs o arreglos longs, por ejemplo: long Temp...
  • Página 134 LONG – Referencia de Lenguaje Spin MyList principal son 640,000 y $0000BB50, respectivamente. usa un bloque especial de LONG sintaxis que cera una alineación byte pero activan tamaño long de datos en memoria MyList principal. Los valores de ’s en memoria principal son $FF995544 y 1,000, MyList respectivamente.
  • Página 135 LONG 2: Referencia de Lenguaje Spin – MyData MyList dato de se coloca en la dirección $1C, con el primer elemento de seguido inmediatamente en $20. Note que la dirección de inicio ($18) es arbitraria y seguramente cambiara según se modifique el código o si el objeto mismo se incluye en otra aplicación. Long Address —...
  • Página 136 LONG – Referencia de Lenguaje Spin La memoria principal es finalmente direccionada en términos de bytes sin importar el tamaño del valor que esta accesando; byte, word, o long. Esto tiene ventajas si se piensa como los bytes, words, y longs se relacionan entre si. Pero puede ser problemático cuando se piensa en múltiples piezas de un solo tamaño, como longs.
  • Página 137 LONG 2: Referencia de Lenguaje Spin – Haciendo referencia nuevamente al ejemplo del código de la Figura 2-2 puede esperar estas MyList dos instrucciones para leer el primero y segundo long de ; $FF995544 y 1000, MyList respectivamente. En vez de leer el primer y segundo "byte” de , $44 y $55, respectivamente.
  • Página 138: Longfill

    LONGFILL – Referencia de Lenguaje Spin LONGFILL instrucción: Llena longs de memoria principal con un valor. ((PUB PRI)) LONGFILL (StartAddress, Value, Count )  StartAddress es una expresión indicando la localidad del primer long de memoria a llenar con un Value. ...
  • Página 139: Longmove

    LONGMOVE 2: Referencia de Lenguaje Spin – LONGMOVE instrucción: Copia longs de una región a otra en memoria principal. ((PUB PRI)) LONGMOVE (DestAddress, SrcAddress, Count )  DestAddress es una expresión que especifica la localidad de memoria principal para copiar el primer long a la localidad destino. ...
  • Página 140: Lookdown, Lookdownz

    LOOKDOWN, LOOKDOWNZ – Referencia de Lenguaje Spin LOOKDOWN, LOOKDOWNZ instrucción: Obtiene el índice de un valor en una lista. ((PUB PRI)) LOOKDOWN ( Value : ExpressionList ) ((PUB PRI)) LOOKDOWNZ ( Value : ExpressionList ) Regresa: Posición de índice base uno ( LOOKDOWN LOOKDOWNZ ) o una posición de base cero (...
  • Página 141 LOOKDOWN, LOOKDOWNZ 2: Referencia de Lenguaje Spin – GetIndex LOOKDOWN Value El método es un ejemplo que usa para encontrar y regresa el índice ShowList donde se encontró en ExpressionList, o 0 si no se encontró. El método llama GetIndex repetidamente con diferentes valores e imprime el resultado del índice en un Print display.
  • Página 142: Lookup, Lookupz

    LOOKUP, LOOKUPZ – Referencia de Lenguaje Spin LOOKUP, LOOKUPZ Instrucción: Obtiene un valor de una posición índice dentro de una lista. ((PUB PRI)) LOOKUP ( Index : ExpressionList ) ((PUB PRI)) LOOKUPZ ( Index : ExpressionList ) Regresa: El valor de la posición base uno de Index ( LOOKUP ) o posición base cero de Index LOOKUPZ...
  • Página 143 LOOKUP, LOOKUPZ 2: Referencia de Lenguaje Spin – LOOKUPZ Index se usa entonces la lista es base cero en vez de base uno; un 0 regresa 25, Index de 1 regresa 300, etc. LOOKUP REPEAT Si Index esta fuera de rango se regresa 0. así para , si la instrucción fuera de 0 a 8, en vez de 1 a 7, este ejemplo imprimiría 0, 25, 300, 2510, 163, 17, 8000, 3 y 0 en el...
  • Página 144: Next

    NEXT – Referencia de Lenguaje Spin NEXT Instrucción: Ignora las instrucciones restantes de un ciclo REPEAT y continua con el siguiente ciclo. ((PUB PRI)) NEXT Explicación NEXT NEXT QUIT REPEAT NEXT es una de dos instrucciones ( ) que afectan el ciclo hace que REPEAT cualquier instrucción en el ciclo...
  • Página 145: Obj

    2: Referencia de Lenguaje Spin – Denominador: Declara un Bloque Objeto       Symbol  Symbol … [Count] : "ObjectName" [Count] : "ObjectName"  Symbol es el nombre deseado para el símbolo objeto.  Count es una expresión opcional encerrada en corchetes que indica si es un arreglo de objetos con Count numero de elementos.
  • Página 146: Obj - Referencia De Lenguaje Spin

    – Referencia de Lenguaje Spin Num.ToStr Objeto-Metodo (un punto ‘ ’) y finalmente el nombre del método a llamar. , por ToStr Numbers Term.Str ejemplo, llama al método del objeto publico de llama al método TV_Terminal Num.ToStr del método publico de .
  • Página 147: Referencia De Lenguaje Spin - Operators

    2: Referencia de Lenguaje Spin – Operators Operadores El chip Propeller contiene un poderoso grupo de operadores lógicos y matemáticos. Un subgrupo de estos operadores es soportado por el lenguaje ensamblador Propeller, sin embargo, como el lenguaje Spin tiene un uso para cada forma de operador soportado por el Propeller, esta sección describe cada operador en detalle.
  • Página 148: Operators - Referencia De Lenguaje Spin

    Operators – Referencia de Lenguaje Spin Tabla 2-9: Operadores lógicos y Matemáticos expresión Constante Operador Descripción, Numero de Pagina Asignado Unario Entero Flotante Siempre Asignación de Constante (Bloques CON solo), 152 Siempre Asignación de Variable (Bloques PUB/PRI only), 153  ...
  • Página 149: Flag ' Bitwise Not De Bandera ^^Total ' Raíz Cuadrada De Total

    2: Referencia de Lenguaje Spin – Operators Tabla 2-10: Niveles de Precedencia de Operadores Nivel Notas Operadores Nombres de Operadores Mas alto (0) Unario --, ++, ~, ~~, ?, @, @@ Inc/Decrementa, Limpia, active, Aleatorio, Dirección símbolo/Objeto Unario +, -, ^^, ||, |<, >|, ! Positivo, Negado, Raíz, Absoluto, Decodifica, Codifica, Bitwise NOT Rota Der/Izq, Mueve Der/ Izq, Corrimiento aritmético Der, Reversa ->, <-, >>, <<, ~>, ><...
  • Página 150: Expresiones Constantes Y/O Variables

    Operators – Referencia de Lenguaje Spin Aquí un ejemplo de operadores de asignación: Count++ ' (Unario) evalua Count + 1 ' y escribe el resultado en Count Data >>= 3 ' (Binario) mueve Data a la derecha 3 bits ' y escribe el resultado en Data Los operadores binarios tienen formas especiales terminan en igual ‘=’...
  • Página 151: Asignaciones Intermedias

    2: Referencia de Lenguaje Spin – Operators ...es igual a 49; que es, 8 * 4 = 32, 6 / 2 = 3, y 20 + 32 – 3 = 49. Si desea que la expresión se evalúe diferente use paréntesis para encerrar las porciones necesarias de la expresión. Por ejemplo: X = (20 + 8) * 4 –...
  • Página 152 Operators – Referencia de Lenguaje Spin Las paginas restantes de esta sección explican con mas detalle cada operador lógico y matemático mostrado en la Tabla 2-9 en el mismo orden que se muestra. Asignación Constante ‘ ’ El operador de asignación constante se usa solamente en bloques , para declarar constantes en tiempo de compilación.
  • Página 153 2: Referencia de Lenguaje Spin – Operators OneHalf Ratio El código de arriba crea tres constantes de punto flotante. es igual a 0.5, Miles Ratio igual a 0.4 y es igual a 1,000,000. Note que si fuera definido como 2 / 5 en vez de 2.0 / 5.0, la expresión se trataría como entero constante y el resultado seria un entero constante igual a 0.
  • Página 154: Forma Corta De X

    Operators – Referencia de Lenguaje Spin Add tiene una forma de asignación, , que usa la variable a su izquierda tanto en el primer operando como en el resultado destino. Por ejemplo: X += 10 'forma corta de X := X + 10 Aquí...
  • Página 155 2: Referencia de Lenguaje Spin – Operators Esto negara el valor de y almacenara el resultado de regreso en Decremento, pre- o post- ‘ ’ El operador decremento es un operador inmediato especial que decrementa una variable en uno y asigna el nuevo valor a la misma variable. Puede usarse en expresiones variables en tiempo de ejecución.
  • Página 156 Operators – Referencia de Lenguaje Spin Incremento, pre- o post- ‘ ’ El operador de incremento es un operador inmediato especial que incrementa una variable en uno y asigna el nuevo valor a la misma variable. Solo puede usarse en tiempo de ejecución en expresiones variables.
  • Página 157 2: Referencia de Lenguaje Spin – Operators Multiplica, Regresa Bajo ‘ ’, ‘ ’ Este operador también se llama multiplicador bajo, o simplemente multiplicador. Puede usarse en expresiones variables y constantes. Cuando se usa en expresiones variables o constantes enteras multiplica dos valores juntos y regresa los 32 bits mas bajos del resultado de 64-bit.
  • Página 158 Operators – Referencia de Lenguaje Spin Divide ‘ ’, ‘ ’ Divide puede usarse en expresiones constantes y variables. Cuando se usa en expresiones variables o expresiones enteras constantes divide un valor por otro y regresa el resultado en entero 32-bit. Cuando se usa como punto flotante en expresiones constantes divide un valor por otro y regresa el resultado en punto flotante de precisión simple en 32-bit.
  • Página 159 2: Referencia de Lenguaje Spin – Operators Limite mínimo ‘ ’, ‘ ’ #> #>= El operador Limit Minimum compara dos valores y regresa el valor mas alto. Limit Minimum puede usarse en expresiones variables y constantes. Ejemplo: X := Y - 5 #> 100 El ejemplo de arriba resta 5 de y limita el resultado a un valor de 100.
  • Página 160: Valor Absoluto

    Operators – Referencia de Lenguaje Spin Raíz Cuadrada ‘ ’ El operador Square Root regresa el valor de la raíz cuadrada de un valor. Square Root puede usarse en expresiones constantes variables. Cuando se usa en expresiones variables o expresiones constante enteras Square Root regresa los 32-bit cortadas del resultado entero. Cuando se usa con expresiones constantes de punto flotante Square Root regresa los 32-bit en punto flotante de precisión simple.
  • Página 161 2: Referencia de Lenguaje Spin – Operators Y := ~X + 25 El operador Sign-Extend 7 en este ejemplo extiende el signo del valor, en este caso, del bit 7 hasta el bit 31. Un entero con signo de 32-bit se almacena en forma de complementos de dos y el bit mas significativo (31) indica el signo del valor (positivo o negativo).
  • Página 162 Operators – Referencia de Lenguaje Spin cálculos son simples el resultado en un valor tamaño Word deberá tratarse como entero signado en el rango de -32768 to +32767. Cuando necesita desarrollar mas cálculos con esos valores de tamaño word use el operador Sign-Extend 15 para convertir el numero en la forma apropiada entera de 32-bit con signo.
  • Página 163 2: Referencia de Lenguaje Spin – Operators Aquí el valor de se mueve a la derecha 2 bits, manteniendo el signo, y el resultado se almacena de regreso en . La forma de asignación del corrimiento aritmético a la derecha puede usarse en expresiones para resultados de Asignaciones Intermedias, Pág.
  • Página 164 Operators – Referencia de Lenguaje Spin Como Random es siempre un operador de asignación las reglas de Asignación Intermedia aplican a la instrucción (ver Pág. 151). Bitwise Decode ‘ ’ |< El operador Bitwise Decode decodifica un valor (0 – 31) en un valor long de 32-bit con un bit simple activado en alto correspondiente a la posición del bit del valor original.
  • Página 165 2: Referencia de Lenguaje Spin – Operators PinNum es %10000000 00000000 00000000 00000000, es 32; el bit 31 es activo. PinNum es %00000000 00010011 00010010 00100000, es 21; el bit 20 es el bit mas alto activo. Bitwise Shift Left ‘ ’, ‘...
  • Página 166 Operators – Referencia de Lenguaje Spin %10000000 01110000 11111111 00110101 ...el operador Bitwise Shift Right moverá ese valor a la derecha tres bits dejando %00010000 00001110 00011111 11100110 Como la naturaleza binaria es base-2, al mover un valor a la derecha es como desarrollar una división de enteros del valor en potencias de dos, 2 , donde b es el numero de bits a mover.
  • Página 167 2: Referencia de Lenguaje Spin – Operators Bitwise Rotate Right ‘ ’, ‘ ’ -> ->= El operador Bitwise Rotate Right es similar al operador Bitwise Shift Right, excepto que los LSBs (bits de la extrema derecha) se rotan con los MSBs (bits de la extrema izquierda). Bitwise Rotate Right puede usarse en ambas expresiones variables y constantes enteras, pero no en expresiones constantes de punto flotante.
  • Página 168: F 'Forma Corta De X := X & $F

    Operators – Referencia de Lenguaje Spin ><= Bitwise Reverse tiene una forma de asignación, , que usa la variable a su izquierda tanto en el primer operando como en el resultado destino. Por ejemplo, X ><= 8 'Forma corta de X := X >< 8 Aquí...
  • Página 169: F 'Forma Corta De X := X | $F

    2: Referencia de Lenguaje Spin – Operators & Tenga cuidado de no confundir el Bitwise AND ‘ ’ con la forma booleanas AND ‘ ’. Bitwise AND es para manipulación de bits mientras que la forma booleanas es para propósitos de comparación (ver Pág. 171). Bitwise OR ‘...
  • Página 170 Operators – Referencia de Lenguaje Spin Tabla 2-13: Bitwise XOR Tabla de Verdad Estado de Bit Resultado Ejemplo: X := %00101100 ^ %00001111 El ejemplo anterior calcula el XOR de %00101100 con %00001111 y escribe el resultado %00100011 a El Bitwise XOR tiene una forma de asignación, , que usa la variable a su izquierda en el primer operando y el resultado destino.
  • Página 171: Forma Corta De X := X And True

    2: Referencia de Lenguaje Spin – Operators %00101100 %11010011 El ejemplo anterior hace NOT y escribe el resultado a X. El Bitwise NOT se convierte en operador de asignación cuando esta solo a la izquierda de la variable en una línea. Por ejemplo: !Flag Flag Flag...
  • Página 172 Operators – Referencia de Lenguaje Spin & tenga cuidado de no confundir el Boleano AND ‘ ’ con el Bitwise AND ‘ ’. El Booleano AND es para propósitos de comparación mientras el Bitwise AND es para manipulación de bits (ver Pág. 168). Booleano OR ‘...
  • Página 173 2: Referencia de Lenguaje Spin – Operators TRUE FALSE En el ejemplo anterior se regresa el booleano opuesto de (-1) si es cero, o es no-cero. Durante la comparación se forza el valor de a -1 si es no-cero, haciendo cualquier valor diferente de 0 un -1, de esta forma se compara: “Si NOT es verdad”...
  • Página 174 Operators – Referencia de Lenguaje Spin TRUE Aquí se compara con , y si son iguales, se activa a (-1), de otra forma se activa FALSE (0). La forma de asignación de Is Equal puede usarse para expresiones de resultados intermedios;...
  • Página 175: Forma Corta De X

    2: Referencia de Lenguaje Spin – Operators IF (Y < 32) TRUE Aquí el operador Is Less Than regresa es menor que 32. <= Is Less Than tiene su forma de asignación, , que usa la variable a la izquierda del primer operando y el resultado destino.
  • Página 176 Operators – Referencia de Lenguaje Spin X := Y =< Z TRUE El ejemplo anterior compara el valor de con el valor de y activa (-1) si es igual FALSE a o menor que el valor de (0) si es mayor que el valor de Este operador se usa normalmente en expresiones condicionales tales como la que se ve en el siguiente ejemplo: IF (Y =<...
  • Página 177 2: Referencia de Lenguaje Spin – Operators TRUE Aquí, se compara con , y si es igual o mayor que se activa como (-1), de otra FALSE forma se activa (0). La forma de asignación de Is Equal or Greater puede ser usada en expresiones para resultados intermedios;...
  • Página 178 Operators – Referencia de Lenguaje Spin @Str1 @Str2 En tiempo de ejecución podemos accesar esas cadenas directamente, usando @Str3 , pero accesarlas indirectamente es problemático porque cada cadena es de una longitud diferente; haciendo difícil de usar cualquiera como cálculos de base indirecta. La solución podría parecer simplemente haciendo otra tabla de direcciones como en:: StrAddr word @Str1, @Str2, @Str3 StrAddr...
  • Página 179: Referencia De Lenguaje Spin

    Puerto B; los bits 0 a 31 corresponden de P32 a P63. OUTB NOTA: esta reservado para uso futuro; el Propeller P8X32A no incluye los pins del OUTA Puerto B así que solo se discutirá en esta sección.
  • Página 180: Activa P10 A Salida 'Hace P10 Bajo 'Hace P10 Alto

    OUTA, OUTB – Referencia de Lenguaje Spin Observe que cada estado de salida del cog esta formado por el OR de los estados del hardware interno (Registro de salida, Generador de Video, etc.) y estos está en AND con su dirección del estado del registro Un pin E/S tiene como salida alto o bajo, como se especifica en el estado de salida del cog si DIRA...
  • Página 181: Importante

    OUTA, OUTB 2: Referencia de Lenguaje Spin – La primera línea en el código de arriba active el pin 10 a salida. La segunda línea limpia la salida de P10, haciendo P10 salida baja (aterrizada). La tercera línea activa P10 como salida alta(VDD).
  • Página 182: Par

    – Referencia de Lenguaje Spin Registro: Registro de parámetro de Inicio de Cog ((PUB PRI)) Regresa: La dirección que pasa en el inicio de código ensamblador con COGINIT COGNEW Explicación El registro contiene el valor de la dirección que se paso al campo Parameter de una COGINIT COGNEW COGINIT...
  • Página 183 2: Referencia de Lenguaje Spin – wrlong ValReg, Mem 'Mueve valor ValReg para compartir jmp #:loop res 1 ValReg res 1 Main Process En el ejemplo anterior el método inicia la rutina ensamblador en un cog Nuevo COGNEW COGNEW Main .
  • Página 184: Phsa, Phsb

    PHSA, PHSB – Spin Language Reference PHSA, PHSB Registro: Registros de Fase Contador A y Contador B ((PUB PRI)) PHSA ((PUB PRI)) PHSB Regresa: Valor actual del registro de fase del contador A y B, si se usa como una fuente variable.
  • Página 185: Pri

    2: Spin Language Reference – Denominador: Declara un Bloque de método Privado ((PUB PRI))            Name , Param…) | LocalVar … (Param :RValue [Count] ,LocalVar [Count] SourceCodeStatements  Name es el nombre deseado para el método Privado. ...
  • Página 186: Pub

    – Referencia de Lenguaje Spin Denominador: Declara un Bloque de método Publico ((PUB PRI))             Name …) | LocalVar … (Param ,Param :RValue [Count ] ,LocalVar [Count ] SourceCodeStatements ...
  • Página 187 2: Referencia de Lenguaje Spin – Declaración de método Publico Las declaraciones de método Publico comienzan con , en la columna 1 de una línea, seguidas de un nombre único y un grupo de parámetros opcionales, un resultado variable y variables locales.
  • Página 188 – Referencia de Lenguaje Spin Parámetros y Variables Locales Los parámetros y variables locales son longs (cuatro bits). De hecho los parámetros son realmente solo variables que se inicializan a los valores correspondientes especificados por el llamador del método. Las variables locales, sin embargo, contienen datos aleatorios cada que se llama al método.
  • Página 189: Optimizando Direccionamientos

    2: Referencia de Lenguaje Spin – Al pasar un valor por referencia el operador Symbol Address se usa comúnmente cuando se proporciona una cadena variable a un método. Como las cadenas variables son solo arreglos de bytes no hay forma de pasarlos al método por valor; hacerlo resultaría en el método recibiendo solo el primer carácter.
  • Página 190: Quit

    QUIT – Referencia de Lenguaje Spin QUIT instrucción: Sale de un ciclo REPEAT inmediatamente. ((PUB PRI)) QUIT Explicación QUIT NEXT QUIT REPEAT QUIT es uno de dos comandos ( ) que afectan el ciclo ocasiona que un REPEAT ciclo termine inmediatamente. Usando QUIT QUIT se usa típicamente como un caso excepcional, en una instrucción condicional, en los...
  • Página 191: Reboot

    REBOOT 2: Referencia de Lenguaje Spin – REBOOT instrucción: Reinicia el chip propeller. ((PUB PRI)) REBOOT Explicación Este es un reinicio controlado por software, pero actúa como reinicio de hardware a través del pin E/S. REBOOT si quiere reiniciar el chip Propeller a su estado inicial. Toda la base de hardware, encendido, arranque, retrasos así...
  • Página 192: Repeat

    REPEAT – Referencia de Lenguaje Spin REPEAT instrucción: Ejecuta un bloque de código repetitivamente. ((PUB PRI)) REPEAT   Count  Statement(s) ((PUB PRI))   REPEAT Variable FROM Start TO Finish STEP Delta  Statement(s) ((PUB PRI)) REPEAT (( UNTIL WHILE )) Condition(s) ...
  • Página 193: Repite Sin Final 'Cambia P25 'Pausa Por 2,000 Ciclos

    REPEAT 2: Referencia de Lenguaje Spin –  Condition(s) una o mas expresiones Booleanas usadas en sintaxis 3 y 4 para continuar UNTIL o terminar ciclos. Cuando precede , Condition(s) termina el ciclo cuando es WHILE FALSE verdadero. Cuando precede , Conditions(s) termina el ciclo cuando es Explicación REPEAT...
  • Página 194 REPEAT – Referencia de Lenguaje Spin Ciclos Simples Finitos (Sintaxis 1) La mayoría de los ciclos son finitos por naturaleza; ejecutan un numero limitado de iteraciones solamente. La forma mas sencilla en la sintaxis 1 con el campo Count incluido. Por ejemplo: repeat 10 'Repite 10 veces...
  • Página 195: Repite Dos Veces 'Repite 10 Veces 'Incrementa Localidades Ram

    REPEAT 2: Referencia de Lenguaje Spin – Index byte[$7000][Index]++ como un Offset para afectar memoria, ; en este caso esta incrementando cada uno de los valores bytes en RAM $7000 a $7009 por 1, uno a la vez. REPEAT La instrucción automáticamente determina si el rango sugerido por Start y Finish esta incrementando o decrementando.
  • Página 196 REPEAT – Referencia de Lenguaje Spin de Start y Finish. El siguiente ejemplo incluye el valor opcional Delta para incrementar de dos en dos. repeat Index from 0 to 8 step 2 'Repite 5 veces byte[$7000][Index]++ 'Incrementa en par RAM de $7000 a $7008 REPEAT Index...
  • Página 197 REPEAT 2: Referencia de Lenguaje Spin – 'Incrementa X Este ejemplo primero activa a 0, luego repite el ciclo mientras es menor que 10. El código dentro del ciclo limpia RAM basado en (empezando en la localidad $7000) e incrementa .
  • Página 198: Result

    RESULT – Referencia de Lenguaje Spin RESULT Variable: El valor de regreso variable para métodos. ((PUB PRI)) RESULT Explicación RESULT RESULT La variable es una variable local pre-definida para cada método contiene el valor de regreso del método; el valor que se pasa de regreso al llamador del método, cuando el método se termina.
  • Página 199 RESULT 2: Referencia de Lenguaje Spin – result := … podría usar también “ ” para activar el valor de regreso ya que cualquier instrucción afecta el valor de regreso del método. RESULT Ya sea la variable o el alias proporcionado para el, puede modificarse múltiples veces RESULT RESULT con el método antes de salir ya que ambos afectan...
  • Página 200: Return

    RETURN – Referencia de Lenguaje Spin RETURN instrucción: Sale de un método con la opción de un regreso Value. ((PUB PRI)) RETURN   Value Regresa: Ya sea el valor actual RESULT , o Value si se proporciona.  Value es una expresión opcional cuyo valor se regresara desde el método Explicación RETURN...
  • Página 201 RETURN 2: Referencia de Lenguaje Spin – Usando RETURN RETURN DisplayDivByZeroError El siguiente ejemplo demuestra dos usos de . Asuma que un método definido en otra parte. PUB Add(Num1, Num2) Result := Num1 + Num2 'Suma Num1 + Num2 return PUB Divide(Dividend, Divisor) if Divisor == 0 'Verifica si Divisor = 0...
  • Página 202: Round

    ROUND – Referencia de Lenguaje Spin ROUND instrucción: Redondea una constante de punto flotante al entero mas cercano. ((CON DAT)) ROUND ( FloatConstant ) Regresa: El entero mas cercano al valor de la constante de punto flotante.  FloatConstant es la expresión constante de punto flotante a ser redondeada al entero mas cercano.
  • Página 203 ROUND 2: Referencia de Lenguaje Spin – simple se almacenan en 32 bits, con 1-bit de signo, 8-bit exponentes, y 23-bit mantisa (la parte fraccional). Esto proporciona aproximadamente 7.2 dígitos decimales significativos. Expresiones constantes de punto flotante pueden definirse y usarse para múltiples propósitos en tiempo de compilación, pero para tiempo de ejecución en operaciones de punto flotante los objetos FloatMath y FloatString proporcionan funciones matemáticas compatibles con números de precisión simple.
  • Página 204: Spr

    – Referencia de Lenguaje Spin Registro: Registro de Propósito Especial Arreglo, proporciona acceso indirecto a los registros especiales del cog. ((PUB PRI)) [Index] Regresa: Valor en el registro de propósito especial en Index.  Index es una expresión que especifica el Index (0-15) del registro de propósito VSCL especial a accesar ( Explicación...
  • Página 205 2: Referencia de Lenguaje Spin – Usando SPR puede usarse como cualquier arreglo de tamaño long. El siguiente ejemplo asume que Temp es una variable definida en otro lado: spr[4] := %11001010 'Activa registro outa Temp := spr[2] 'Obtiene valor ina OUTA Temp Este ejemplo activa el registro...
  • Página 206: Stack

    _STACK – Spin Language Reference _STACK Constante: Pre-definida, constante activable una sola vez para especificar el tamaño de un espacio de pila de una aplicación. _STACK = expresión  expresión es una expresión entera que indica el numero de longs a reservar por el espacio de pila.
  • Página 207: Strcomp

    STRCOMP 2: Referencia de Lenguaje Spin – STRCOMP instrucción: Compara dos cadenas por igualdad. ((PUB PRI)) STRCOMP (StringAddress1, StringAddress2 ) Regresa: TRUE FALSE si ambas cadenas son iguales, de lo contrario regresa  StringAddress1 es una expresión especificando la dirección de inicio de la primer cadena a comparar.
  • Página 208 STRCOMP – Referencia de Lenguaje Spin Cadenas Cero-Terminadas STRCOMP La instrucción requiere que las cadenas a comparar sean cero-terminadas; un byte igual a 0 debe seguir inmediatamente a cada cadena. Esta practica es común y recomendada ya que la mayoría de los métodos de manejo de cadenas se soportan en terminaciones cero. Pagina 208 ·...
  • Página 209: String

    STRING 2: Spin Language Reference – STRING Instrucción: Declara una cadena constante en línea y obtiene su dirección. ((PUB PRI)) STRING (StringExpression ) Regresa: Dirección de la cadena constante en línea  StringExpression es la expresión de cadena deseada a ser usada para propósitos temporales in línea.
  • Página 210: Strsize

    STRSIZE – Spin Language Reference STRSIZE instrucción: Obtiene el tamaño de una cadena ((PUB PRI)) STRSIZE ( StringAddress ) Regresa: Tamaño (en bytes) de una cadena cero-terminada.  StringAddress es una expresión especificando la dirección de inicio de la cadena a medir.
  • Página 211: Referencia De Lenguaje Spin - Symbols

    2: Referencia de Lenguaje Spin – Symbols Símbolos Los símbolos en la Tabla 2-16 sirven uno o mas propósitos especiales en código Spin. Para símbolos ensamblador Propeller vea Símbolos, Pág. 375. Cada propósito se describe brevemente con referencias a otras secciones que lo describen directo o usa ejemplos. Tabla 2-16: Símbolos símbolo Propósito(s) Indicador Binario.
  • Página 212: Symbols - Referencia De Lenguaje Spin

    Symbols – Referencia de Lenguaje Spin CASE Indicador de rango: Indica un rango de una expresión a otra para instrucciones OUTA, OUTB INA, INB o un índice de registro E/S. Ver en Pág. 179, en Pág. 122, y DIRA, DIRB en Pág.
  • Página 213: Trunc

    TRUNC 2: Referencia de Lenguaje Spin – TRUNC Instrucción: Remueve o “acorta” la parte fraccional de una constante de punto flotante. ((CON DAT)) TRUNC ( FloatConstant ) Regresa: Un entero dado por una constante de punto flotante acortando al punto decimal. ...
  • Página 214 TRUNC – Referencia de Lenguaje Spin FLOAT ROUND Asignación Constante ‘=’ en la sección Operadores en Pág. 152, en Pág. 111, y en Pág. 202, así como los objetos FloatMath y FloatString para mayor información. Pagina 214 · Manual Propeller v1.1...
  • Página 215: Var

    2: Referencia de Lenguaje Spin – Asignador: Declara un Bloque Variable     ... Size Symbol  Size Symbol [Count ] [Count ]     ... Size Symbol , Symbol [Count ] [Count ]  Size BYTE WORD LONG...
  • Página 216: Var - Referencia De Lenguaje Spin

    – Referencia de Lenguaje Spin PUB SomeMethod Code := 60000 LargeNumber := Code * 250 GetString(@Str) if Str[0] == "A" <more code here> Code y LargeNumber Observe que son usadas directamente por expresiones. La Referencia GetString en la lista del parámetro del método se ve diferente;...
  • Página 217: Organización De Variables

    2: Referencia de Lenguaje Spin – Organización de Variables Durante la compilación de un objeto todas las declaraciones en sus bloques colectivos agrupan juntas por tipo. Las variables en RAM se acomodan con todos los long primero, seguidos por los Word y finalmente los bytes. Esto se hace para que el espacio de RAM se acomode eficientemente sin necesidad de espacios.
  • Página 218: Vcfg

    VCFG – Referencia de Lenguaje Spin VCFG Registro: Registro de configuración de Video ((PUB PRI)) VCFG Regresa: Valor actual del registro de Configuración de Video, si usa una fuente variable. Explicación VCFG VCFG VSCL es uno de dos registros ( ) que afecta el comportamiento del generador de Video del Cog.
  • Página 219 VCFG 2: Referencia de Lenguaje Spin – CMode El campo CMode (modo color) selecciona dos o cuatro modos de color. 0 = modo color dos; datos de píxel 32 bits por 1 bit y solo usa colores 0 o 1. 1 = modo de color cuatro; datos de píxel 16 bits por 2 bits y usa colores de 0 a 3.
  • Página 220 VCFG – Referencia de Lenguaje Spin VGroup El campo VGroup (grupo de pin de salida de video) selecciona en cual grupo de ocho pins E/S poner la salida de video. Tabla 2-20: El Campo VGroup VGroup Grupo de Pins Grupo 0: P7..P0 Grupo 1: P15..P8 Grupo 2: P23..P16 Grupo 3: P31..P24...
  • Página 221: Vscl

    VSCL 2: Referencia de Lenguaje Spin – VSCL Registro: Registro de Escala de Video ((PUB PRI)) VSCL Regresa: Valor actual del registro de la escala de video del cog, si usa una fuente variable. Explicación VSCL VCFG VSCL es uno de dos registros ( ) que afecta el comportamiento del generador de video del cog.
  • Página 222 VCSL – Referencia de Lenguaje Spin Esto activa el registro de la escala de video para 160 PixelClocks y 2,560 FrameClocks (en una configuración 16-pixeles por 2-bit cuadro color). Por supuesto el rango actual al cual los ciclos de pixeles dependen de la frecuencia del PLLA en combinación con este factor. Pagina 222 ·...
  • Página 223: Waitcnt

    WAITCNT 2: Referencia de Lenguaje Spin – WAITCNT instrucción: Detiene la ejecución de un cog momentáneamente. ((PUB PRI)) WAITCNT ( Value )  Value es el valor del contador del sistema 32-bits que se desea esperar. Explicación WAITCNT WAITCNT , “Wait for System Counter,” es uno de cuatro instrucciones de espera ( WAITPEQ WAITPNE WAITVID...
  • Página 224 WAITCNT – Referencia de Lenguaje Spin Este código cambia el estado del pin E/S pin 0 y espera 50,000 ciclos de reloj de sistema antes de repetir el ciclo nuevamente. Recuerde que el parámetro Value debe ser el valor deseado de 32-bit a igualar contra el valor del valor del Reloj del Sistema. Como el reloj del sistema es un recurso global que cambia cada ciclo de reloj, para retrasar por un cierto numero de ciclos desde "ahora"...
  • Página 225: Activa A Cristal Lento 'Usa Un Cristal De 5Mhz De Precision

    WAITCNT 2: Referencia de Lenguaje Spin – Figura 2-3: Tiempo en Pausa Fija La Figura 2-3 muestra la salida de nuestro ejemplo anterior, el ejemplo de pausa fija. Observe como el P0 de los pins E/S cambia cada 10 milisegundos, pero ¿no exactamente? De hecho hay un error acumulativo que se hace sucesivo al estado de los cambios y se va quedando fuera d sincronía en relación a nuestro inicio, 0 ms.
  • Página 226 WAITCNT – Referencia de Lenguaje Spin la base de tiempo. Este método compensa automáticamente el tiempo extra que consumen las repeat waitcnt instrucciones del ciclo: , !outa[0] y . El resultado se ve como en la Figura 2-4. Figura 2-4: Pausa Sincronizada de Tiempo Usando el método sincronizado de pausa, nuestra señal de salida esta siempre alineada perfectamente al tiempo base mas un múltiplo de nuestro intervalo.
  • Página 227: Waitpeq

    WAITPEQ 2: Referencia de Lenguaje Spin – WAITPEQ instrucción: Detiene la ejecución de un cog hasta que el pin E/S es igual a un estado dado. ((PUB PRI)) WAITPEQ (State, Mask, Port )  State es el estado lógico de los pins para comparar. Es un valor de 32-bits que indica el estado alto o bajo de hasta 32 pins E/S.
  • Página 228 WAITPEQ – Referencia de Lenguaje Spin Usando Diferentes números de Pin En los Objetos Propeller es necesario frecuentemente monitorear un pin sencillo el cual esta especificado fuera del objeto mismo. Una forma sencilla d trasladar ese numero de pin al |<...
  • Página 229: Waitpne

    WAITPNE 2: Referencia de Lenguaje Spin – WAITPNE instrucción: Detiene la ejecución del cog hasta que un pin E/S no es igual al estado designado. ((PUB PRI)) WAITPNE (State, Mask, Port )  State es el estado lógico a usar para comparar los pins. Es un valor de 32 bits que indica el estado alo o bajo de hasta 32 pins E/S.
  • Página 230: Waitvid

    WAITVID – Referencia de Lenguaje Spin WAITVID instrucción: Detiene la ejecución de un cog hasta que el generador de video esta disponible para tomar datos de pixeles. ((PUB PRI)) WAITVID (Colors, Pixels )  colores es un long que contiene valores de color de cuatro bytes, cada uno describe los cuatro posibles colores del patrón de pixeles en Pixels.
  • Página 231 WAITVID 2: Referencia de Lenguaje Spin – Pixels se usa como patrón de pixeles 16x2 bits) o como uno de dos posibles colores por pixeles de 1 bit (cuando Pixels se usa a 32x1). Pixels describe el patrón de pixeles a desplegar, ya sea 16 pixeles o 32 pixeles dependiendo de la profundidad de color en la configuración del generador de video.
  • Página 232: Word

    WORD – Referencia de Lenguaje Spin WORD Asignador: Declara un símbolo de tamaño word, datos alineados word, o lee/escribe word de memoria principal.   WORD Symbol [Count ]   WORD   Symbol Data [Count] ((PUB PRI))  ...
  • Página 233: Declaración Variable Word (Sintaxis 1)

    WORD 2: Referencia de Lenguaje Spin – Rango de Word La memoria de tamaño word (16 bits) puede contener un valor que es una de 2 combinaciones posibles de bits (ejemplo: una de 65,536). Esto le da a los valores de tamaño word un rango de 65,535.
  • Página 234: Lectura/Escritura De Words En Memoria Principal (Sintaxis 3)

    WORD – Referencia de Lenguaje Spin Declaración de Datos Word (Sintaxis 2) WORD En los bloques la sintaxis 2 de se usa para declarar datos alineados word o tamaño word que se compilan como valores constantes en memoria principal. Los bloques permiten esta declaración para tener un símbolo opcional que lo preceda, el cual puede usarse para referencia posterior.
  • Página 235 WORD 2: Referencia de Lenguaje Spin – MyData word 640, $AAAA, 5_500 'Dato alineado/tamaño Word MyList byte word $FF99, word 1_000 'Tamaño Byte/Alineado Word En este ejemplo el bloque (parte baja del código) coloca sus datos de memoria como MyData muestra la Figura 2-5.
  • Página 236: Direccionado Memoria Principal

    WORD – Referencia de Lenguaje Spin Temp El valor $ABCD se derivo del valor actual de más $0123; $AAAA + $0123 que es igual a $ABCD. Direccionado Memoria Principal Como sugiere la Figura 2-5, la memoria principal es realmente un set de bytes seguidos (ver renglón “dato como bytes”) que pueden leerse como words (pares de 2 bytes) cuando se hace apropiadamente.
  • Página 237 WORD 2: Referencia de Lenguaje Spin – Temp := MyData[0] MyData ...y estas instrucciones leen la segunda y tercer words de Temp := MyData[1] Temp := MyData[2] así que ¿por que no utilizar referencia de símbolos directos todo el tiempo? Considere el siguiente caso: Temp := MyList[0] Temp := MyList[1]...
  • Página 238: Accesando Words De Símbolos De Tamaños Mas Largos (Sintaxis 4)

    WORD – Referencia de Lenguaje Spin Este ejemplo lee mas allá de las fronteras lógicas (punto de inicio y punto final) de la lista de datos que referencian. Esto puede ser un truco útil, pero con mayor frecuencia se hace por error;...
  • Página 239: Wordfill

    WORDFILL 2: Referencia de Lenguaje Spin – WORDFILL instrucción: Llena words de memoria principal con un valor. ((PUB PRI)) WORDFILL (StartAddress, Value, Count )  StartAddress es una expresión indicando la localidad del primer word de memoria a llenar con Value. ...
  • Página 240: Wordmove

    WORDMOVE – Referencia de Lenguaje Spin WORDMOVE instrucción: Copia words de una región a otra en memoria principal. ((PUB PRI)) WORDMOVE (DestAddress, SrcAddress, Count )  DestAddress es una expresión que indica la localidad de memoria principal del primer Word destino. ...
  • Página 241: Xinfreq

    _XINFREQ 2: Referencia de Lenguaje Spin – _XINFREQ Constante: Constante pre-definida, una vez activable que especifica la frecuencia del cristal externo. _XINFREQ = expresión  expresión es una expresión entera que indica la frecuencia del cristal externo, la frecuencia en el pin XI. Este valor se usa para la aplicación de arranque. Explicación _XINFREQ especifica la frecuencia del cristal externo, el cual se usa junto con el modo clock...
  • Página 242: Xinfreq - Referencia De Lenguaje Spin

    _XINFREQ – Referencia de Lenguaje Spin _CLKMODE = XTAL2 _XINFREQ = 10_000_000 Estas dos declaraciones activan el modo clock para un cristal externo de velocidad media sin _CLKFREQ multiplicador PLL y un cristal de frecuencia 10 MHz. El valor y por lo tanto la frecuencia del reloj del sistema se activan automáticamente a 10 MHz también, debido a estas declaraciones.
  • Página 243: Referencia Del Lenguaje Ensamblador

    3: Referencia del Lenguaje Ensamblador Capítulo 3: Referencia Lenguaje Ensamblador Este capitulo describe todos los elementos del Lenguaje Ensamblador del chip Propeller y se usa como una referencia a elementos individuales del lenguaje ensamblador. Muchas instrucciones tienen su correspondiente instrucción Spin así que una referencia al lenguaje spin se recomienda igualmente.
  • Página 244 Referencia del Lenguaje Ensamblador Main Aquí hay un ejemplo de un Objeto Propeller. Su código spin en el bloque , inicia Toggle otro cog para correr la rutina del Ensamblador Propeller del bloque {{ AssemblyToggle.spin }} _clkmode = xtal1 + pll16x _xinfreq = 5_000_000 PUB Main {Inicia cog para cambiar P16 sin fin}...
  • Página 245: Memoria De Cog

    3: Referencia del Lenguaje Ensamblador LONG datos simbólicos (Ej.: ), 3) memoria reservada simbólica ( Ej. ). Esto hace que el cog cargue el lenguaje ensamblador primero, seguido inmediatamente de datos inicializados y datos de aplicación después, aun si no es requerido por el código. Ver las secciones que hablan de (Pág.
  • Página 246: No Olvide El Indicador Literal

    Referencia del Lenguaje Ensamblador add X, #25 'Suma 25 a X add X, Y 'Suma Y a X X long 50 Y long 10 La primera instrucción suma el valor literal 25 al valor almacenado en el registro . La segunda instrucción suma el valor almacenado en el registro al valor almacenado en el registro...
  • Página 247: Etiquetas Globales Y Locales

    3: Referencia del Lenguaje Ensamblador Etiquetas Globales y Locales Para dar nombre a rutinas especiales, el código Ensamblador Propeller puede hacer uso de dos tipos de etiquetas: Global y local. Las etiquetas globales se ven como otros símbolos y siguen las mismas reglas que los símbolos;...
  • Página 248: Ista Categórica De Lenguaje Ensamblador Propeller

    Referencia del Lenguaje Ensamblador Lista Categórica de Lenguaje Ensamblador Propeller Instrucciones Ajusta en tiempo de compilación la dirección del apuntador; p 338. Valida que la instrucción o datos previos se ajustan al cog; p 299. Reserva los siguientes longs para símbolos; p 351. Configuración CLKSET Activa el modo clock a tiempo d ejecución;...
  • Página 249 3: Referencia del Lenguaje Ensamblador IF_A Si por encima (!C & !Z = 1); p 303. IF_B Si por debajo (C = 1); p 303. IF_AE Si por encima o igual (C = 0); p 303. IF_BE Si por debajo o igual (C | Z = 1); p 303. IF_C Si C Activa;...
  • Página 250: Control De Flujo

    Referencia del Lenguaje Ensamblador Control de Flujo CALL Va a dirección con intención de regresar a la siguiente instrucción; p 274. DJNZ Decrementa valor y va a dirección si no es cero; p 297. Va a dirección incondicionalmente; p 306. JMPRET Va a dirección con intención a “regresar”...
  • Página 251 3: Referencia del Lenguaje Ensamblador NEGNZ Obtiene un valor o su inverso aditivo, basado en !Z; p 332. Limite mínimo de valor no signado a otro valor no signado; p 319. MINS Limite mínimo de valor signado a otro valor signado; p 320. Limite máximo de valor no signado a otro valor no signado;...
  • Página 252: Constantes

    Referencia del Lenguaje Ensamblador Reversa LSB del valor y cero extendido; p 357. Rota valor a la izquierda por un numero especifico de bits; p 358. Rota valor a la derecha por un numero especifico de bits; p 359. Mueve valor a la izquierda por un numero especifico de bits; p 361. Mueve valor a la derecha por un numero especifico de bits;...
  • Página 253: Registros

    3: Referencia del Lenguaje Ensamblador NEGX Máximo entero negativo: -2,147,483,648 ($80000000); p 97. Valor Flotante de PI: ~3.141593 ($40490FDB); p 97. Registros DIRA Registro Dirección puerto A 32 bits; p 351. DIRB Registro Dirección puerto A 32 bits (uso futuro); p 351. Registro Entrada puerto A 32 bits (solo lectura);...
  • Página 254: Operadores Binarios

    Referencia del Lenguaje Ensamblador Operadores Binarios NOTA: Todos los operadores mostrados son operadores de expresiones constantes. Suma; p 336. Resta; p 336. Multiplica y regresa los 32 bits mas bajos (signado); p 336. Multiplica y regresa los 32 bits mas altos (signado); p 336. Divide y regresa el cociente (signado);...
  • Página 255: Elementos De Lenguaje Ensamblador

    3: Referencia del Lenguaje Ensamblador Elementos de Lenguaje Ensamblador Definiciones de Sintaxis Además de las descripciones detalladas, las siguientes paginas contienen definiciones de sintaxis para muchos elementos que describe, en términos cortos, todas las opciones de ese elemento. Las definiciones de sintaxis usan símbolos especiales para indicar cuando y como se usaran ciertas características de elementos.
  • Página 256: Códigos Operacionales Y Sus Tablas

    Referencia del Lenguaje Ensamblador  Instruction Operands — Una instrucción de ensamblador Propeller ( COGINIT , etc.) y su cero, uno o dos operandos requeridos por Instruction.  Effects — una lista opcional de una a tres efectos de ejecución ( ) para aplicar a la instrucción, si s ejecuto.
  • Página 257: Tablas De Verdad Concisas

    3: Referencia del Lenguaje Ensamblador  (bits 21:18) - Indica la condición en la cual ejecuta la instrucción.  DEST (bits 17:9) - Contiene la dirección del registro destino.  (bits 8:0) - Contiene la fuente de la dirección del registro o el valor literal de 9 bits.
  • Página 258 Referencia del Lenguaje Ensamblador $FFFF_FFFE; -2 Valores de números en hexadecimal (izquierda de ‘;’) y decimal (derecha de ‘;’). %0_00000011; 3 Valores de números en binario (izquierda de ‘;’) y decimal (derecha de ‘;’). 0 –o– 1 Cero individual (0) o uno (1) significan binario 0 o 1. wr, wz, wc Efectos ensamblador indican estado de ejecución;...
  • Página 259: Tabla Maestra De Instrucciones De Ensamblador Propeller

    3: Referencia del Lenguaje Ensamblador  El cuarto par de renglones muestran el mismo concepto pero alcanzando y cruzando la frontera de los enteros signados por el lado negativo, resultando también en un sobre flujo de signo (bandera C activa). Observe que un campo destino de instrucción contiene actualmente la dirección del registro que tiene el valor del operando, y el campo fuente es comúnmente codificado de forma similar, pero las tablas de verdad siempre simplifican este detalle mostrando solo el valor del...
  • Página 260 Referencia del Lenguaje Ensamblador instrucción -INSTR- ZCRI -CON- -DEST- -SRC- Resultado Z Resultado C Resultado Ciclos Resultado = 0 S[31] Escrito D, S 101010 001i 1111 ddddddddd sssssssss Result = 0 S[31] Escrito ABSNEG D, S 101011 001i 1111 ddddddddd sssssssss D + S = 0 Acarreo sin signo Escrito...
  • Página 261 3: Referencia del Lenguaje Ensamblador instrucción -INSTR- ZCRI -CON- -DEST- -SRC- Resultado Z Resultado C Resultado Ciclos Resultado = 0 S[31] Escrito D, S 101001 001i 1111 ddddddddd sssssssss Resultado = 0 S[31] Escrito NEGC D, S 101100 001i 1111 ddddddddd sssssssss Resultado = 0 S[31] Escrito...
  • Página 262 Referencia del Lenguaje Ensamblador Notas para Tabla Maestra Nota 1: Ciclos de Reloj para Instrucciones de Hub Las instrucciones d Hub requieres de 7 a 22 ciclos de reloj para ejecutarse dependiendo de la relación entre la ventana de acceso al cog y el momento de la ejecución. El hub proporciona una ventana de acceso al cog cada 16 ciclos.
  • Página 263: Abs

    3: Referencia del Lenguaje Ensamblador – instrucción: Obtiene el valor absoluto de un numero.   AValue, SValue Resultado: Absoluto SValue se almacena en AValue.  AValue (campo-d) es el registro en el cual se escribe el valor absoluto de SValue. ...
  • Página 264: Absneg

    ABSNEG – Referencia del Lenguaje Ensamblador ABSNEG instrucción: Obtiene el negativo de un numero de valor absoluto.   ABSNEG NValue, SValue Resultado: Negativo absoluto de SValue se almacena en NValue.  NValue (campo-d) es el registro en el cual se escribe el negativo del valor absoluto SValue.
  • Página 265: Add

    3: Referencia del Lenguaje Ensamblador – instrucción: Suma dos valores no signados.   Value1, Value2 Resultado: Suma de no signado Value1 y no signado Value2 y se almacena en Value1.  Value1 (campo-d) es el registro que contiene el valor a sumar al Value2 y es el destino en el cual se escribe el resultado.
  • Página 266: Addabs

    ADDABS – Referencia del Lenguaje Ensamblador ADDABS instrucción: Suma un valor absoluto a otro valor.   ADDABS Value, SValue Resultado: La suma de Value y valor absoluto no signado de SValue se almacena en Value.  Value (campo-d) es el registro que contiene el valor a sumar con el valor absoluto de SValue y es el destino dond se escribe el resultado.
  • Página 267: Adds

    ADDS 3: Referencia del Lenguaje Ensamblador – ADDS instrucción: Suma dos valores signados.   ADDS SValue1, SValue2 Resultado: Suma de sigandoSValue1 y signado SValue2 se almacena en SValue1.  SValue1 (campo-d) es el registro que contiene el valor a sumar con SValue2 y es el destino en el cual se escribe el resultado.
  • Página 268: Addsx

    ADDSX – Referencia del Lenguaje Ensamblador ADDSX instrucción: Suma dos valores signados mas C.   ADDSX SValue1, SValue2 Result: Suma de SValue1 y SValue2 signados mas la bandera C se almacenan en SValue1.  SValue1 (campo-d) es el registro que contiene el valor a sumar con SValue2 mas C, y es el destino donde se escribe el resultado.
  • Página 269: Suma Longs Bajos; Guarda C Y Z 'Suma Longs Altos

    ADDSX 3: Referencia del Lenguaje Ensamblador – En una operación signada multi-long, la primer instrucción es no signada (Ej.: ), cualquier ADDX instrucción intermedia son no signadas, extendidas (Ej.: ), y la ultima instrucción es ADDSX signada, extendida (Ej.: ). Asegúrese de usar los efectos , y opcionalmente , en las ADDX...
  • Página 270: Addx

    ADDX – Referencia del Lenguaje Ensamblador ADDX instrucción: Suma dos valore no signados mas C.   ADDX Value1, Value2 Resultado: La suma de un valor Value1 y Value2 no signado mas C se almacena en Value1.  Value1 (campo-d) es el registro que contiene el valor a sumar con Value2 mas C, y es el destino en el cual se escribe el resultado.
  • Página 271 ADDX 3: Referencia del Lenguaje Ensamblador – Después de ejecutar el código, el resultado del doble long (64-bit) esta en los registros long XHigh:XLow. Si XHigh:XLow inicio como $0000_0000:FFFF_FFFF (4,294,967,295) y YHigh:YLow como $0000_0000:0000_0001 (1) del resultado en XHigh:XLow será $0000_0001:0000_0000 (4,294,967,296).
  • Página 272: And

    – Referencia del Lenguaje Ensamblador instrucción: Bitwise, AND de dos valores.   Value1, Value2 Resultado: Value1 AND Value2 se almacena en Value1.  Value1 (campo-d) es el registro que contiene el valor que se hace AND con Value2 y es el destino en el cual se escribe el resultado.
  • Página 273: Andn

    ANDN 3: Referencia del Lenguaje Ensamblador – ANDN instrucción: Bitwise, AND de un valor con el NOT de otro.   ANDN Value1, Value2 Resultado: Value1 AND !Value2 se almacena en Value1.  Value1 (campo-d) es el registro que contiene el valor a hacer AND con el !Value2 y es el destino donde se escribe el resultado.
  • Página 274: Call

    CALL – Referencia del Lenguaje Ensamblador CALL instrucción: Salta a una dirección con la intención de regresar a la siguiente instrucción. CALL #Symbol Resultado: PC + 1 se escribe en el campo-s del registro indicado por el campo-d.  Symbol (campo-s) es una literal de 9-bit cuyo valor es la dirección a saltar. Este campo debe contener un símbolo especificado como literal (#symbol) y el correspondiente código deberá...
  • Página 275 CALL 3: Referencia del Lenguaje Ensamblador – CALL En tiempo de ejecución la que hace la instrucion es almacenar la instrucción de regreso (PC+1) en la localidad de donde regresara; el lugar de la instrucción “Symbol_ret ”. La instrucción es solo una instrucción sin una dirección destino codificada, y esta acción de tiempo de ejecución proporciona la dirección de regreso a la cual se moverá.
  • Página 276 CALL – Referencia del Lenguaje Ensamblador CALL Esta naturaleza de la instrucción dicta lo siguiente:  La rutina referenciada debe tener solo una instrucción asociada. Si la rutina necesita mas de un punto de salida, hacer uno de esos puntos de salida con la instrucción y hacer los otros puntos de salida con subdivisiones (Ej.:, ) a esa...
  • Página 277: Clkset

    CLKSET 3: Referencia del Lenguaje Ensamblador – CLKSET instrucción: Activa el modo clock en tiempo de ejecución. CLKSET Mode  Mode (campo-d) registro que contiene el patrón de 8-bit a escribir en el registro CLK. Tabla Opcode: –INSTR– ZCRI –CON– –DEST–...
  • Página 278: Cmp

    – Referencia del Lenguaje Ensamblador instrucción: Compara dos valores no signados.   Value1, Value2 Resultado: opcionalmente, estado de igualdad y mayor que/menor que se escriben en Z y C.  Value1 (campo-d) es el registro que contiene el valor a comparar con Value2. ...
  • Página 279 3: Referencia del Lenguaje Ensamblador – Si el efecto se especifica, la bandera Z se activa (1) si Value1 es igual a Value2. Si se especifica el efecto , la bandera C se activa (1) I Value1 es menor que Value2. El resultado no se escribe a menos que se especifique el efecto .
  • Página 280: Cmps

    CMPS – Referencia del Lenguaje Ensamblador CMPS instrucción: Compara dos valores signados.   CMPS SValue1, SValue2 Resultado: Opcionalmente, igualdad y estado mayor/menor que se escribe en Z y C.  SValue1 (campo-d) es el registro que contiene el valor a comparar con SValue2. ...
  • Página 281 CMPS 3: Referencia del Lenguaje Ensamblador – Explicación CMPS (Compare signado) compara los valores signados de SValue1 y SValue2. Las banderas Z y C, si se escriben, indican la relación relativa de igual, mayor o menor que entre los dos. Si se especifica el efecto la bandera Z se activa (1) si SValue1 es igual a SValue2.
  • Página 282: Cmpsub

    CMPSUB – Referencia del Lenguaje Ensamblador CMPSUB instrucción: Compara dos valores no signados y resta el segundo si es menor o igual.   CMPSUB Value1, Value2 Resultado: Opcionalmente, Value1 = Value1–Value2, y Z y C = resultado comparación.  Value1 (campo-d) es el registro que contiene el valor a comparar con Value2 y es el destino en el cual se escribe el resultado si se desarrolla una resta.
  • Página 283: Cmpsx

    CMPSX 3: Referencia del Lenguaje Ensamblador – CMPSX instrucción: Compara dos valores signados mas C.   CMPSX SValue1, SValue2 Resultado: Opcionalmente, estado de igualdad, mayor/menor se escribe en Z y C.  SValue1 (campo-d) es el registro que contiene el valor a comparar con SValue2. ...
  • Página 284 CMPSX – Referencia del Lenguaje Ensamblador El resultado de la bandera C de CMPS (Compare signado) puede diferir de CMP (Compare no signado) donde el signo interpretado de la fuente y destino son opuestos. El primer ejemplo en el segundo grupo, muestra que CMPS activa C porque el signado $8000_0000 (-2,147,483,648) es menor que el signado $7FFF_FFFF (2,147,483,647).
  • Página 285 CMPSX 3: Referencia del Lenguaje Ensamblador – Una comparación de un triple-long signado (96-bit) deberá verse similar pero con la CMPX CMPSX instrucción insertada entre las instrucciones XLow, YLow wc wz 'Compare low longs; save C y Z cmpx XMid, YMid wc wz 'Compare middle longs;...
  • Página 286: Cmpx

    CMPX – Referencia del Lenguaje Ensamblador CMPX instrucción: Compara dos valores no signados mas C.   CMPX Value1, Value2 Resultado: Opcionalmente, el estado de igualdad, menor/mayor se escribe en Z y C.  Value1 (campo-d) es el registro que contiene el valor a comparar con Value2. ...
  • Página 287: Compara Longs Bajos; Guarda C Y Z 'Compara Longs Altos

    CMPX 3: Referencia del Lenguaje Ensamblador – El resultado de la bandera C CMPX (Compare no signado, Extended) puede diferir de CMPSX (Compare signado, Extended) donde el "signo interpretado” de la fuente y destino son opuestos. El primer ejemplo en el segundo grupo, arriba, muestra que CMPX limpia C porque el no signado $8000_0000 (2,147,483,648) no es menor que el no signado $7FFF_FFFF (2,147,483,647).
  • Página 288: Cnt

    – Referencia del Lenguaje Ensamblador Registro: Registro contador del sistema.     , CNT   Label Condition Instruction DestOperand Effects  Label es una etiqueta opcional. Ver Elementos Comunes de Sintaxis, Pág. 255.  Condition una condición de ejecución opcional. Ver Elementos Comunes de Sintaxis, Pág.
  • Página 289: Cogid

    COGID 3: Referencia del Lenguaje Ensamblador – COGID instrucción: Obtiene el numero de Cog. COGID Destination Result: El numero de cog actual "ID" (0-7) se escribe en Destination.  Destination (campo-d) es el registro en donde escribir el ID del cog. Tabla Opcode: –INSTR–...
  • Página 290: Coginit

    COGINIT – Referencia del Lenguaje Ensamblador COGINIT instrucción: Inicia o reinicia un cog, opcionalmente por ID, para correr ensamblador propeller o spin. COGINIT Destination Result: Opcionalmente, el ID del cog iniciado/reiniciado se escribe en Destination.  Destination (campo-d) es el registro que contiene información de inicio para el cog objetivo y opcionalmente se convierte en el destino del ID del cog iniciado si un cog se inicia.
  • Página 291 COGINIT 3: Referencia del Lenguaje Ensamblador – Tabla 3-1: Campos de Registro Destino 31:18 17:4 14-bit Dirección long registro PAR 14-bit dirección long código a cargar nuevo Cog ID El primer campo, serán escritos para el registro del cog bits 15:2. Esto es 14 bits totales que intentan ser los bits altos de una dirección long 16-bit.
  • Página 292: Cogstop

    COGSTOP – Referencia del Lenguaje Ensamblador COGSTOP instrucción: Detiene un cog por su ID. COGSTOP CogID  CogID (campo-d) es el registro conteniendo el ID (0 – 7) del cog a detener. Tabla Opcode: –INSTR– ZCRI –CON– –DEST– –SRC– Resultado Z Resultado C Resultado Ciclos...
  • Página 293: Referencia Del Lenguaje Ensamblador - Condiciones

    IF_x 3: Referencia del Lenguaje Ensamblador – Condiciones ( Condiciones IF_x Cada instrucción ensamblador propeller tiene un campo "condición" opcional que se usa para determinar dinámicamente si se ejecuta o no cuando se alcanza en tiempo de ejecución. La sintaxis básica para ensamblador propeller es: ...
  • Página 294: Ctra, Ctrb

    CTRA, CTRB – Referencia del Lenguaje Ensamblador CTRA, CTRB Registro: Control de registros Contador A y Contador B.       CTRA, Label Condition Instruction SrcOperand Effects     , CTRA   Label Condition Instruction DestOperand Effects ...
  • Página 295: Dira, Dirb

    32 pins de E/S en el Puerto A y el Puerto B respectivamente. DIRB El Propeller P8X32A no incluye el Puerto B. esta reservado para uso futuro por lo que DIRA solo se discutirá...
  • Página 296 CTRA, CTRB – Referencia del Lenguaje Ensamblador DIRA, DIRB Ver Registros, Pág. 351, y la sección de lenguaje spin , Pág. 107, para mas información. Tenga en cuenta que en Ensamblador Propeller, a diferencia de Spin, los 32 bits DIRA se accesan al mismo tiempo a menos que se usen instrucciones Pagina 296 ·...
  • Página 297: Djnz

    DJNZ 3: Assembly Language Reference – DJNZ instrucción: Decrementa un valor y salta a la dirección si no es cero.   DJNZ Value, Address Resultado: Value-1 se escribe en Value.  Value (campo-d) es el registro a decrementar y probar. ...
  • Página 298: Effects - Referencia Del Lenguaje Ensamblador

    Effects – Referencia del Lenguaje Ensamblador Efectos Cada instrucción de ensamblador Propeller tiene un campo especial de efecto que puede modificar una bandera o registro cuando se ejecuta. La sintaxis básica es:       Label Condition Instruction Operands Effects El campo opcional Effects puede contener uno o mas de los cuatro puntos mostrados abajo.
  • Página 299: Fit

    3: Referencia del Lenguaje Ensamblador – instrucción: Valida que las instrucciones/datos previos se ajusten a una dirección especifica. FIT   Address Result: Error en tiempo de compilación si la instrucción/dato previo excede Address-1.  Address es una dirección opcional RAM de cog (0-$1F0) para lo cual el código ensamblador no debe alcanzar.
  • Página 300: Frqa, Frqb

    – Referencia del Lenguaje Ensamblador FRQA, FRQB Registro: Registros de Frecuencia del Contador A y Contador B.       FRQA, Label Condition Instruction SrcOperand Effects     , FRQA   Label Condition Instruction DestOperand Effects ...
  • Página 301: Hubop

    HUBOP 3: Referencia del Lenguaje Ensamblador – HUBOP instrucción: Desarrolla una operación de hub.   HUBOP Destination, Operation Resultado: Varia dependiendo de la operación desarrollada.  Destination (campo-d) es el registro conteniendo un valor a usar en Operation.  Operation (campo-s) es un registro o literal 3-bit que indica la operación a realizar.
  • Página 302: (Condiciones) - Referencia Del Lenguaje Ensamblador

    IF_x (Condiciones) – Referencia del Lenguaje Ensamblador IF_x (Condiciones) Cada instrucción Ensamblador propeller tiene una condición especial que se usa para determinar dinámicamente si se ejecuta o no durante el tiempo de ejecución. La sintaxis básica para la instrucción ensamblador Propeller es: ...
  • Página 303 IF_x 3: Referencia del Lenguaje Ensamblador – (Condiciones) Tabla 3-3: Condiciones condición Ejecuta instrucción Valor Sinónimo 1111 IF_ALWAYS Siempre 0000 IF_NEVER Nunca 1010 IF_E IF_Z Si igual (Z = 1) 0101 IF_NE IF_NZ Si no igual (Z = 0) 0001 IF_A IF_NC_AND_NZ –and–...
  • Página 304: Ina, Inb

    32 pins E/S en el puerto A y B respectivamente. esta reservado par uso futuro; el Propeller P8X32A no incluye el Puerto B así que solo se discutirá en esta sección.
  • Página 305 INA, INB 3: Referencia del Lenguaje Ensamblador –...
  • Página 306: Jmp

    – Referencia del Lenguaje Ensamblador instrucción: Salta a una dirección. JMP   Address  Address (campo-s) es el registro o literal 9-bit cuyo valor es la dirección a saltar. Tabla Opcode: –INSTR– ZCRI –CON– –DEST– –SRC– Resultado Z Resultado C Resultado Ciclos 010111 000i 1111 --------- sssssssss...
  • Página 307 3: Referencia del Lenguaje Ensamblador – Toggle dira, Pin 'Activa pin E/S a salida outa, Pin 'Cambia estado de pin E/S #$-1 'Cicla sin fin JMP #$-1 La ultima instrucción , hace que la ejecución salte de la segunda a la ultima instrucción (Ej.: “here”...
  • Página 308: Jmpret

    JMPRET – Referencia del Lenguaje Ensamblador JMPRET instrucción: Salta a la dirección con la intención de “regresar” a otra dirección.   JMPRET RetInstAddr, DestAddress Resultado: PC + 1 se escribe el campo-s del registro indicado por el campo-d.  RetInstAddr (campo-d) es el registro en el cual se almacena la dirección de regreso (PC+1) frecuentemente es la dirección de un apropiado...
  • Página 309 JMPRET 3: Referencia del Lenguaje Ensamblador – regreso se almacena, la rutina DestAddress se ejecuta y finalmente el control regresa a la JMPRET CALL instrucción que seguía a . Ver en Pág. 274 para mayor información. JMPRET Cuando se usa diferente, la instrucción puede ayudar en procesos sencillos de multi tareas.
  • Página 310 JMPRET – Referencia del Lenguaje Ensamblador mov Task2,#SecondTask SecondTask La primer instrucción , almacena la dirección de en el Task2 registro . Esto lleva al registro de tareas a realizar el primer cambio. FirstTask Una vez que inicio, desarrolla algunas operaciones indicadas por “…” y alcanza la JMPRET jmpret Task1,Task2 JMPRET...
  • Página 311 JMPRET 3: Referencia del Lenguaje Ensamblador – La dirección de regreso (PC+1) se escribe a la fuente (campo-s) del registro RetInstAddr a menos que se especifique el efecto . Por supuesto al especificar no se recomienda para la JMPRET instrucción ya que la convierte en una instrucción...
  • Página 312: Lockclr

    LOCKCLR – Referencia del Lenguaje Ensamblador LOCKCLR instrucción: Limpia Lock a falso y obtiene el estado previo. LOCKCLR Resultado: Opcionalmente, el estado previo de Lock se escribe a la bandera C  (campo-d) es el registro que contiene el ID (0 – 7) del seguro a limpiar. Tabla Opcode: –INSTR–...
  • Página 313: Locknew

    LOCKNEW 3: Referencia del Lenguaje Ensamblador – LOCKNEW instrucción: Genera un Nuevo seguro y obtiene su ID LOCKNEW NewID Resultado: El ID del Nuevo seguro (0-7) se escribe en NewID.  NewID (campo-d) es el registro donde el ID del nuevo seguro se escribe. Tabla Opcode: –INSTR–...
  • Página 314: Lockret

    LOCKRET – Assembly Language Reference LOCKRET instrucción: Libera un seguro para futuros requerimientos de LOCKNEW LOCKRET  (campo-d) es el registro que contiene el ID (0 – 7) del seguro a regresar a la bandeja. Tabla Opcode: –INSTR– ZCRI –CON– –DEST–...
  • Página 315 LOCKRET 3: Referencia del Lenguaje Ensamblador –...
  • Página 316: Lockset

    LOCKSET – Referencia del Lenguaje Ensamblador LOCKSET instrucción: Activa un seguro como verdadero y obtiene su estado previo. LOCKSET Resultado: Opcionalmente, el estado previo del seguro se escribe a la bandera C.  (campo-d) es el registro que contiene el ID (0 – 7) del seguro a activar. Tabla Opcode: –INSTR–...
  • Página 317: Max

    3: Referencia del Lenguaje Ensamblador – instrucción: Limite máximo de un valor no signado a otro valor no signado.   Value1, Value2 Resultado: El menor de un valor no signado Value1 y Value2 se almacena en Value1.  Value1 (campo-d) es el registro que contiene el valor a comparar contra Value2 y es el destino en el cual se escribe el menor valor de los dos.
  • Página 318: Maxs

    MAXS – Referencia del Lenguaje Ensamblador MAXS instrucción: Limite máximo de un valor signado a otro valor signado.   MAXS SValue1, SValue2 Resultado: El menor de los valores signados en SValue1 y SValue2 se almacena en SValue1.  SValue1 (campo-d) es el registro que contiene el valor a comparar contra SValue2 y es el destino en el cual se escribe el menor de los dos.
  • Página 319: Min

    3: Referencia del Lenguaje Ensamblador – instrucción: Limite mínimo de un valor no signado a otro valor no signado.   Value1, Value2 Resultado: El mayor de los valores no signados de Value1 y Value2 se almacena en Value1.  Value1 (campo-d) es el registro que contiene el valor a comparar contra Value2 y es el destino en el cual se escribe el mayor de los dos.
  • Página 320: Mins

    MINS – Referencia del Lenguaje Ensamblador MINS instrucción: Limite mínimo de un valor signado a otro valor signado.   MINS SValue1, SValue2 Resultado: El mayor de los valores signados SValue1 y SValue2 se almacena en SValue1.  SValue1 (campo-d) es el registro que contiene el valor a comparar contra SValue2 y es el destino en el cual se escribe el mayor de los dos.
  • Página 321: Mov

    3: Referencia del Lenguaje Ensamblador – instrucción: Activa un registro a un valor.   Destination, Value Resultado: Value se almacena en Destination.  Destination (campo-d) es el registro en el cual se almacena Value.  Value (campo-s) es un registro o literal 9-bit cuyo valor se almacena en Destination. Tabla Opcode: –INSTR–...
  • Página 322: Movd

    MOVD – Referencia del Lenguaje Ensamblador MOVD instrucción: Activa un campo de registro destino a un valor.   MOVD Destination, Value Resultado: Value se almacena en el campo-d de Destination (bits 17..9).  Destination (campo-d) es el registro cuyo campo destino (bits 17..9) se activa al valor de Value.
  • Página 323: Movi

    MOVI 3: Referencia del Lenguaje Ensamblador – MOVI instrucción: Activa una instrucción de registro y campos de efectos a un valor.   MOVI Destination, Value Resultado: Value se almacena en el campo-i de Destination y campo-efectos (bits 31..23).  Destination (campo-d) es el registro cuya instrucción y campos efecto (bits 31..23) se activan al valor de Value.
  • Página 324: Movs

    MOVS – Referencia del Lenguaje Ensamblador MOVS instrucción: Activa una campo fuente de registro a un valor.   MOVS Destination, Value Resultado: Value se almacena en el campo-s de Destination (bits 8..0).  Destination (campo-d) es el registro cuya campo fuente (bits 8..0) se activa al valor de Value.
  • Página 325: Muxc

    MUXC 3: Referencia del Lenguaje Ensamblador – MUXC instrucción: Activa bits discretos de un valor al estado de C.   MUXC Destination, Mask Resultado: Los bits Destination, indicados por Mask, se activan al estado de C.  Destination (campo-d) es el registro cuyos bits descries por Mask se afectan por C. ...
  • Página 326: Muxnc

    MUXNC – Referencia del Lenguaje Ensamblador MUXNC instrucción: Activa bits discretos de un valor al estado de !C.   MUXNC Destination, Mask Resultado: Los bits Destination, indicados por Mask, se activan al estado de !C.  Destination (campo-d) es el registro cuyos bits descries por Mask se afectan por !C. ...
  • Página 327: Muxnz

    MUXNZ 3: Assembly Language Reference – MUXNZ instrucción: Activa bits discretos de un valor al estado de !Z.   MUXNZ Destination, Mask Resultado: Los bits Destination, indicados por Mask, se activan al estado de !Z.  Destination (campo-d) es el registro cuyos bits descries por Mask se afectan por !Z. ...
  • Página 328: Muxz

    MUXZ – Assembly Language Reference MUXZ instrucción: Activa bits discretos de un valor al estado de Z.   MUXZ Destination, Mask Resultado: Los bits Destination, indicados por Mask, se activan al estado de Z.  Destination (campo-d) es el registro cuyos bits descries por Mask se afectan por Z. ...
  • Página 329: Neg

    3: Assembly Language Reference – instrucción: Obtiene el negativo de un numero.   NValue, SValue Resultado: –SValue se almacena en NValue.  NValue (campo-d-) es el registro en el cual se escribe el negativo de SValue.  SValue (campo-s) es un registro o literal 9-bit cuyo valor negativo se escribirá en NValue.
  • Página 330: Negc

    NEGC – Assembly Language Reference NEGC instrucción: Obtiene un valor, o su opuesto, basado en C.   NEGC RValue, Value Resultado: Value o –Value se almacena en RValue.  RValue (campo-d) es el registro en el cual se escribe Value o –Value. ...
  • Página 331: Negnc

    NEGNC 3: Assembly Language Reference – NEGNC instrucción: Obtiene un valor, o su opuesto, basado en !C.   NEGNC RValue, Value Resultado: –Value o Value se almacena en RValue.  RValue (campo-d) es el registro en el cual se escribe –Value o Value. ...
  • Página 332: Negnz

    NEGNZ – Assembly Language Reference NEGNZ instrucción: Obtiene un valor, o su opuesto, basado en !Z.   NEGNZ RValue, Value Resultado: –Value o Value se almacena en RValue.  RValue (campo-d) es el registro en el cual se escribe –Value o Value. ...
  • Página 333: Negz

    NEGZ 3: Assembly Language Reference – NEGZ instrucción: Obtiene un valor, o su opuesto, basado en Z. NEGZ RValue, # Value Resultado: Value o –Value se almacena en RValue.  RValue (campo-d) es el registro en el cual se escribe Value o –Value. ...
  • Página 334: Nop

    – Assembly Language Reference Instrucción: No operación, solo deja pasar cuatro ciclos de reloj. Tabla Opcode: –INSTR– ZCRI –CON– –DEST– –SRC– Resultado Z Resultado C Resultado Ciclos ------ ---- 0000 --------- --------- Tabla de verdad: (No especificada ya que no desarrolla ninguna acción) Explicación –CON–...
  • Página 335: Coloca Valor Msb En C

    3: Assembly Language Reference – Efecto: Previene que una instrucción ensamblador escriba un resultado.     Label Condition Instruction Operands Resultado: El registro destino de Instruction no se afecta.  Label es una etiqueta opcional. Ver Elementos Comunes de Sintaxis en Pág. 255. ...
  • Página 336 Operators – Assembly Language Reference Operadores El código Ensamblador Propeller puede contener expresiones usando cualquier operador que este permitido en expresiones constantes. La Tabla 3-4 sumariza todos los operadores permitidos en el Ensamblador Propeller. Revise la referencia del lenguaje Spin en la sección Operadores en Pág.
  • Página 337: Peradores Or

    3: Assembly Language Reference – instrucción: Bitwise hace OR dos valores.   Value1, Value2 Resultado: El resultado de Value1 OR Value2 se almacena en Value1.  Value1 (campo-d) es el registro que contiene el valor a hacer OR con Value2 y es el destino en el cual se escribe el resultado.
  • Página 338: Org - Referencia Del Lenguaje Ensamblador

    – Referencia del Lenguaje Ensamblador instrucción: Ajusta el apuntador ensamblador en tiempo de compilación. ORG   Address  Address es una dirección opcional RAM del Cog (0-495) para ensamblar el siguiente código ensamblador. Si Address no se da se usa el valor 0. Explicación La instrucción (origin) activa el apuntador ensamblador de la herramienta Propeller a un...
  • Página 339: Referencia Del Lenguaje Ensamblador

    3: Referencia del Lenguaje Ensamblador – ensamblador reemplazara cada referencia de estos símbolos con sus respectivas direcciones de código. Toggle COGNEW(@Toggle, 0) Cuando el código se inicia con , por ejemplo, el código ejecutara apropiadamente iniciando en la dirección 0 de la RAM ya que todas las direcciones de ORG 1 Toggle símbolos se calcularon desde ese punto.
  • Página 340: Outa, Outb

    OUTA, OUTB – Referencia del Lenguaje Ensamblador OUTA, OUTB Registros: Salida de registros para puertos A y B de 32-bit.       OUTA, Label Condition Instruction SrcOperand Effects     , OUTA   Label Condition Instruction DestOperand...
  • Página 341 OUTA, OUTB 3: Referencia del Lenguaje Ensamblador – OUTA, OUTB Ver Registros, Pág. 351, y la sección del lenguaje Spin , Pág. 179, para mayor información. Tenga en cuenta que en el Ensamblador Propeller a diferencia del spin todos OUTA los 32 bits de se accesan al mismo tiempo a menos que se usen instrucciones Propeller Manual v1.1 ·...
  • Página 342: Par

    OUTA, OUTB – Referencia del Lenguaje Ensamblador Registro: Registro de parámetros del Cog de inicio.     , PAR   Label Condition Instruction DestOperand Effects  Label es una etiqueta opcional. Ver Elementos Comunes de Sintaxis, Pág. 255. ...
  • Página 343 3: Referencia del Lenguaje Ensamblador – '<more code here> 'Desarrolla operaciones Addr Propeller Manual v1.1 · Page 343...
  • Página 344: Phsa, Phsb

    PHSA, PHSB – Referencia del Lenguaje Ensamblador PHSA, PHSB Registro: Registro de Fase de Contador A y B.       PHSA, Label Condition Instruction SrcOperand Effects     , PHSA   Label Condition Instruction DestOperand Effects ...
  • Página 345 PHSA, PHSB 3: Referencia del Lenguaje Ensamblador – Result, phsa 'Obtiene el valor actual de phase Propeller Manual v1.1 · Page 345...
  • Página 346: Rcl

    – Assembly Language Reference instrucción: Rota C a la izquierda en un valor especificado por bits.   Value, Bits Resultado: Value tiene Bits copias de C rotado a la izquierda.  Value (campo-d) es el registro en el cual se rota C a la izquierda. ...
  • Página 347: Rcr

    3: Assembly Language Reference – instrucción: Rota C a la derecha en un valor especificado por bits.   Value, Bits Resultado: Value tiene Bits copias de C rotado ala derecha  Value (campo-d) es el registro en el cual se rota C a la derecha. ...
  • Página 348: Rdbyte

    RDBYTE – Assembly Language Reference RDBYTE instrucción: Lee un byte de memoria principal.   RDBYTE Value, Address Result: Byte cero extendido se almacena en Value.  Value (campo-d) es el registro para almacenar el valor del byte cero extendido. ...
  • Página 349: Rdlong

    RDLONG 3: Assembly Language Reference – RDLONG Instruction: Lee un long de memoria principal.   RDLONG Value, Address Resultado: Long se almacena en Value.  Value (campo-d) es el registro para almacenar el valor del byte cero extendido.  Address (campo-s) es un registro o literal de 9-bit cuyo valor es la dirección de memoria principal a leer.
  • Página 350: Rdword

    RDWORD – Assembly Language Reference RDWORD instrucción: Lee un word de memoria principal.   RDWORD Value, Address Resultado: Un word cero extendido se almacena en Value.  Value (campo-d) es el registro para almacenar el valor del byte cero extendido. ...
  • Página 351: Referencia Del Lenguaje Ensamblador - Registers

    3: Referencia del Lenguaje Ensamblador – Registers Registros Cada cog contiene 16 registros de propósito especial para accesar los pins E/S, los contadores el generador de video y los parámetros pasados al momento de iniciar el cog. Todos estos registros se explican en la Referencia de Lenguaje Spin y la mayoría de la información aplica a ambos, Spin y Ensamblador Propeller.
  • Página 352: Res

    – Referencia del Lenguaje Ensamblador instrucción : Reserva el siguiente long para símbolo   RES   Symbol Count  Symbol es un nombre opcional para el long reservado en la RAM del cog  Count es el numero opcional de logs a reservar para Symbol. Si no se especifica, reserva un long.
  • Página 353 3: Referencia del Lenguaje Ensamblador – Símbolo Dirección Instrucción / Datos AsmCode Time, cnt Time, Delay :Loop waitcnt Time, Delay #:Loop Delay 6_000_000 Time simplemente incrementa el tiempo de compilación del apuntador ensamblador que afecta referencias de símbolo posteriores (RAM del cog); no consume espacio en el objeto (RAM principal).
  • Página 354: Hace Algo Útil 'Ciclo Sin Fin

    – Referencia del Lenguaje Ensamblador :Loop waitcnt Time, Delay 'espera por ventana de tiempo 'Hace algo útil #:Loop 'Ciclo sin fin Time 'Tiempo de espacio de trabajo de ventana Delay long 6_000_000 'Tiempo de tamaño de ventana Este ejemplo iniciara en el cog como sigue: Símbolo Dirección Instrucción / Datos...
  • Página 355 3: Referencia del Lenguaje Ensamblador – Por esta razón es mejor colocar las instrucciones despues de la ultima instrucción y antes del ultimo dato definido en el que se soporta el código ensamblador, como se muestra en el primer ejemplo. Propeller Manual v1.1 ·...
  • Página 356: Ret

    – Referencia del Lenguaje Ensamblador instrucción: Regresa a la dirección anterior grabada. Tabla Opcode: –INSTR– ZCRI –CON– –DEST– –SRC– Resultado Z Resultado C Resultado Ciclos Result = 0 Not Written 010111 0001 1111 --------- --------- Tabla de verdad: Entrada Salida Destino Fuente Z C Efectos...
  • Página 357: Rev

    3: Referencia del Lenguaje Ensamblador – instrucción: Invierte el valor de LSB y lo hace cero extendido.   Value, Bits Resultado: Value tiene los 32-bit bajos de su LSB invertidos y los bits altos limpios.  Value (campo-d) es el registro que contiene el valor cuyos bits son invertidos. ...
  • Página 358: Rol

    – Referencia del Lenguaje Ensamblador instrucción: Rota el valor a la izquierda por el numero especificado de bits   Value, Bits Resultado: Value se rota a la izquierda por Bits.  Value (campo-d) es el registro a rotar a la izquierda ...
  • Página 359: Ror

    3: Referencia del Lenguaje Ensamblador – instrucción: Rota el valor a la derecha por un numero especifico de bits.   Value, Bits Resultado: Value se rota a la derecha por Bits.  Value (campo-d) es el registro a rotar a la derecha. ...
  • Página 360: Sar

    – Referencia del Lenguaje Ensamblador Instruction: Shift value arithmetically right by specified number of bits.   Value, Bits Result: Value is shifted arithmetically right by Bits.  Value (d-field) is the register to shift arithmetically right.  Bits (s-field) is a register or a 5-bit literal whose value is the number of bits to shift arithmetically right.
  • Página 361: Shl

    3: Referencia del Lenguaje Ensamblador – instrucción: Mueve el valor a la izquierda por un especifico numero de bits.   Value, Bits Resultado: Value se mueve a la izquierda por Bits.  Value (campo-d) es el registro a mover a la izquierda. ...
  • Página 362: Shr

    – Referencia del Lenguaje Ensamblador instrucción: Mueve el valor a la derecha por un especifico numero de bits. Value, # Bits Resultado: Value se mueve a la derecha por Bits.  Value (campo-d) es el registro a mover a la derecha. ...
  • Página 363: Sub

    3: Referencia del Lenguaje Ensamblador – instrucción: Resta dos valores no signados   Value1, Value2 Resultado: La diferencia del no signado Value1 y Value2 se almacena en Value1.  Value1 (campo-d) es el registro que contiene el valor a restar de Value2, y es el destino en el cual se escribe el resultado.
  • Página 364: Subabs

    SUBABS – Referencia del Lenguaje Ensamblador SUBABS instrucción: Resta un valor absoluto de otro valor.   SUBABS Value, SValue Resultado: La diferencia de Value y el absolute del signado SValue se almacenan en Value.  Value (campo-d) es el registro que contiene el valor a restar del absoluto SValue, y es el destino en el cual se escribe el resultado.
  • Página 365: Subs

    SUBS 3: Referencia del Lenguaje Ensamblador – SUBS instrucción: Resta dos valores signados.   SUBS SValue1, SValue2 Resultado: La diferencia del signado SValue1 y el signado SValue2 se almacena en Value1.  SValue1 (campo-d) es el registro que contiene el valor a restar de SValue2, y es el destino en el cual se escribe el resultado.
  • Página 366: Subsx

    SUBSX – Referencia del Lenguaje Ensamblador SUBSX instrucción: Resta el valor signado mas C de otro valor signado.   SUBSX SValue1, SValue2 Resultado: La diferencia de signado SValue1, y signado SValue2 mas la bandera C, se almacena en SValue1. ...
  • Página 367: Resta Longs Bajos; Guarda C Y Z 'Resta Longs Altos

    SUBSX 3: Referencia del Lenguaje Ensamblador – SUBSX es signada, extendida (Ej.: ). asegúrese de usar , opcionalmente , en las SUBX instrucciones Por ejemplo, una resta signada doble long (64-bit) se podría ver como sigue: XLow, YLow wc wz 'Resta longs bajos;...
  • Página 368: Subx

    SUBX – Referencia del Lenguaje Ensamblador SUBX instrucción: Resta el valor no signado mas C de otro valor no signado SUBX Value1, # Value2 Resultado: La diferencia de un no signado Value1, y un no signado Value2 mas la bandera C, se almacena en Value1.
  • Página 369 SUBX 3: Referencia del Lenguaje Ensamblador – Por ejemplo, una resta doble-long no signado (64-bit) podría verse como sigue:: XLow, YLow wc wz 'Resta longs bajos; guarda C y Z subx XHigh, YHigh 'Resta longs altos Despues de ejecutar lo anterior, el resultado doble long (64-bit) se encuentra en los registros XHigh:XLow.
  • Página 370: Sumc

    SUMC – Assembly Language Reference SUMC instrucción: Suma un valor signado con otro cuyo signo se invierte dependiendo de C.   SUMC SValue1, SValue2 Resultado: La suma de un signado SValue1 y ±SValue2 se almacena en SValue1.  SValue1 (campo-d) es el registro que contiene el valor de la suma con –SValue2 o SValue2, y es el destino donde se almacena el resultado.
  • Página 371: Sumnc

    SUMNC 3: Referencia del Lenguaje Ensamblador – SUMNC instrucción: Suma un valor signado con otro cuyo signo se invierte dependiendo de !C.   SUMNC SValue1, SValue2 Resultado: La suma de un signado SValue1 y ±SValue2 se almacena en SValue1. ...
  • Página 372 SUMNC – Referencia del Lenguaje Ensamblador Page 372 · Propeller Manual v1.1...
  • Página 373: Sumnz

    SUMZ 3: Referencia del Lenguaje Ensamblador – SUMNZ instrucción: Suma un valor signado con otro cuyo signo se invierte dependiendo de !Z.   SUMNZ SValue1, SValue2 Resultado: La suma de un signado SValue1 y ±SValue2 se almacena en SValue1. ...
  • Página 374: Sumz

    SUMZ – Referencia del Lenguaje Ensamblador SUMZ instrucción: Suma un valor signado con otro cuyo signo se invierte dependiendo de Z.   SUMZ SValue1, SValue2 Resultado: La suma de un signado SValue1 y ±SValue2 se almacena en SValue1.  SValue1 (campo-d) es el registro que contiene el valor de la suma con –SValue2 o SValue2, y es el destino donde se almacena el resultado.
  • Página 375: Referencia Del Lenguaje Ensamblador - Symbols

    3: Referencia del Lenguaje Ensamblador – Symbols Símbolos Los símbolos de la Tabla 3-6 sirven a uno o mas propósitos especiales en el código Ensamblador Propeller. Para símbolos Spin Ver, Símbolos en Pág. 211. Cada propósito de símbolo se describe brevemente con referencia a otras secciones que lo describen directamente o se usa en ejemplos Tabla 3-6: Símbolos Símbolo propósito(s)
  • Página 376: Symbols - Referencia Del Lenguaje Ensamblador

    Symbols – Referencia del Lenguaje Ensamblador Tabla 3-6: (continuación) Símbolo propósito(s) Indicador de etiqueta local: aparece inmediatamente antes de una etiqueta local. Ver Etiquetas Globales y Locales en Pág. 247. Delimitador de Lista: se usa para separar piezas en una lista. Ver la sección Declaración de Data(Sintaxis 1) en Pág.
  • Página 377: Test

    TEST 3: Referencia del Lenguaje Ensamblador – TEST instrucción: Hace la operación AND de dos valores para afectar las banderas únicamente.   TEST Value1, Value2 Resultado: Opcionalmente el resultado cero y de paridad se escribe a las banderas Z y C ...
  • Página 378: Tjnz - Referencia Del Lenguaje Ensamblador

    TJNZ – Referencia del Lenguaje Ensamblador TESTN instrucción: Hace la operación AND de un valor con el NOT de otro para afectar banderas.   TESTN Value1, Value2 Resultado: Opcionalmente se escribe el resultado cero y paridad en las banderas Z y C. ...
  • Página 379: Tjnz

    TJNZ 3: Referencia del Lenguaje Ensamblador – TJNZ Instrucción: Prueba un valor y salta a una dirección si no es cero.   TJNZ Value, Address  Value (campo-d) es el registro a probar.  Address (campo-s) es el registro o literal 9-bit cuyo valor es la dirección a la cual saltar si Value contiene un valor diferente de cero.
  • Página 380: Tjz

    – Referencia del Lenguaje Ensamblador instrucción: Prueba un valor y salta a una dirección si es cero.   Value, Address  Value (campo-d) es el registro a probar  Address (campo-s) es el registro o literal 9-bit cuyo valor es la dirección a saltar ciando Value contiene cero.
  • Página 381: Vcfg

    VCFG 3: Referencia del Lenguaje Ensamblador – VCFG Registro: Registro de configuración de video       VCFG, Label Condition Instruction SrcOperand Effects     , VCFG   Label Condition Instruction DestOperand Effects  Label es una etiqueta opcional.
  • Página 382: Vscl

    VSCL – Referencia del Lenguaje Ensamblador VSCL Registro: Registro de escala de video       VSCL, Label Condition Instruction SrcOperand Effects     , VSCL   Label Condition Instruction DestOperand Effects  Label es una etiqueta opcional, Ver Elementos Comunes de Sintaxis, Pág.
  • Página 383: Waitcnt

    WAITCNT 3: Referencia del Lenguaje Ensamblador – WAITCNT instrucción: Detiene la ejecución del cog temporalmente.   WAITCNT Target, Delta Result: Target + Delta se almacena en Target.  Target (campo-d) es el registro con el valor objetivo a comparar contra el contador del sistema ( ).
  • Página 384: Waitpeq

    WAITPEQ – Referencia del Lenguaje Ensamblador WAITPEQ instrucción: Detiene la ejecución de un cog hasta que un pin E/S coincida con el estado indicado   WAITPEQ State, Mask  State (campo-d) es el registro con el estado objetivo a comparar contra x hecho AND con Mask.
  • Página 385: Waitpne

    WAITPNE 3: Referencia del Lenguaje Ensamblador – WAITPNE instrucción: Detiene la ejecución de un cog hasta que los pins E/S no coinciden con el estado indicado.   WAITPNE State, Mask  State (campo-d) es el registro con el estado objetivo a comparar contra x hecho AND con Mask.
  • Página 386: Waitvid

    WAITVID – Referencia del Lenguaje Ensamblador WAITVID instrucción: Detiene la ejecución de un cog hasta que el generador de video esta disponible para tomar datos de pixeles.   WAITVID Colors, Pixels  Colors (campo-d) es el registro cuatro valores de color tamaño byte cada uno describe cuatro posibles colores del patrón de pixeles en Pixels.
  • Página 387 3: Referencia del Lenguaje Ensamblador – Efecto: Hace que la instrucción ensamblador modifique la bandera C.     Label Condition Instruction Operands Resultado: El estado de la bandera C se actualiza con la ejecución de Instruction.  Label es una etiqueta opcional.
  • Página 388: Wr - Referencia Del Lenguaje Ensamblador

    – Referencia del Lenguaje Ensamblador Efecto: Hace que la instrucción ensamblador escriba un resultado     Label Condition Instruction Operands Resultado: El registro destino de Instruction se cambia al valor del resultado.  Label es una etiqueta opcional. Ver Elementos Comunes de Sintaxis en Pág. 255. ...
  • Página 389: Wrbyte

    WRBYTE 3: Referencia del Lenguaje Ensamblador – WRBYTE instrucción: Escribe un byte a memoria principal.   WRBYTE Value, Address  Value (campo-d) es el registro que contiene el valor 8-bit a escribir en memoria.  Address (campo-s) es un registro o literal de 9-bit cuyo valor es la dirección de memoria principal en la cual escribir.
  • Página 390: Wrlong

    WRLONG – Referencia del Lenguaje Ensamblador WRLONG instrucción: Escribe un long a memoria principal.   WRLONG Value, Address  Value (campo-d) es el registro que contiene el valor 32-bit a escribir en memoria.  Address (campo-s) es un registro o literal de 9-bit cuyo valor es la dirección de memoria principal en la cual escribir.
  • Página 391: Wrword

    WRWORD 3: Referencia del Lenguaje Ensamblador – WRWORD instrucción: Escribe un word a memoria principal.   WRWORD Value, Address  Value (campo-d) es el registro que contiene el valor 16-bit a escribir en memoria.  Address (campo-s) es un registro o literal de 9-bit cuyo valor es la dirección de memoria principal en la cual escribir.
  • Página 392: Wz - Referencia Del Lenguaje Ensamblador

    – Referencia del Lenguaje Ensamblador Efecto: Hace que la instruction ensamblador modifique la bandera Z.     Label Condition Instruction Operands Resultado: La bandera Z se actualice con el estado de la ejecución de Instruction.  Label es una etiqueta opcional. Ver Elementos Comunes de Sintaxis en Pág. 255. ...
  • Página 393: Xor

    3: Referencia del Lenguaje Ensamblador – instrucción: Hace la operación XOR de dos valores   Value1, Value2 Resultado: Value1 XOR Value2 se almacena en Value1.  Value1 (campo-d) es el registro que contiene el valor a hacer XOR con Value2 y es el destino en el cual se escribirá...
  • Página 395: Apéndice A: Lista De Palabras Reservadas

    Appendix A: Reserved Word List Apéndice A: Lista de Palabras Reservadas Estas palabras estas siempre reservadas ya sean para programación en Spin o Propeller. Tabla A-0-1: Lista de Palabras Reservadas Propeller _CLKFREQ CONSTANT IF_NC_AND_NZ PLL4X SUBSX _CLKMODE CTRA IF_NC_AND_Z MINS PLL8X SUBX _FREE...
  • Página 396 – Referencia del Lenguaje Ensamblador a = Elementos Ensamblador s = Elemento Spin; d = Dual (disponible en ambos lenguajes); # = Reservados para uso futuro Page 396 · Propeller Manual v1.1...
  • Página 397: Apéndice B: Ejemplos Matemáticos Y Tablas

    Appendix B: Math Samples and Function Tables Apéndice B: Ejemplos Matemáticos y Tablas Multiplicación, División, y Raíz Cuadrada Multiplicación, división, y raíz cuadrada pueden realizarse usando instrucciones de suma, resta y movimiento. Aquí se muestra una rutina multiplicador no signado que multiplica dos valores 16-bit para alcanzar un producto 32-bit: '' Multiply x[15..0] by y[15..0] (y[31..16] must be 0) ' on exit, product in y[31..0]...
  • Página 398 Appendix B: Math Samples and Function Tables x,#1 'rota c en cociente, mueve dividendo djnz t,#:loop 'cicla hasta terminar divide_ret 'cociente en x[15..0], 'sobrante en x[31..16] Al igual que la rutina multiplicador la rutina divisora podría recodificarse con una secuencia CMPSUB DJNZ de 16 bits...
  • Página 399 Appendix B: Math Samples and Function Tables Para aplicaciones donde se desarrollan muchas multiplicaciones y divisiones en ausencia de sumas y restas, la codificación exponencial puede acelerar las cosas. La codificación exponencial es también útil para comprimir números en pocos bits- sacrificando resolución en mayores magnitudes.
  • Página 400 Appendix B: Math Samples and Function Tables numexp exp,#0 'limpia exponente test num,num4 'obtiene la porcion entera del exponente muxnz exp,exp4 'mientras justifica el numero if_z num,#16 test num,num3 muxnz exp,exp3 if_z num,#8 test num,num2 muxnz exp,exp2 if_z num,#4 test num,num1 muxnz exp,exp1...
  • Página 401 Appendix B: Math Samples and Function Tables Tabla Anti-Log ($D000-$DFFF) La tabla Anti-Log contiene datos usados para convertir exponentes base-2 en números no signados. La tabla Anti-Log consiste de 2,048 words no signadas que son los mas bajos 16-bits de una mantisa de 17-bit (el bit 17 esta implicado y debe activarse separadamente).
  • Página 402 Appendix B: Math Samples and Function Tables Tabla de Seno ($E000-$F001) La tabla de seno proporciona 2,049 muestras de 16-bit no signados en un rango de 0° a 90°, (resolución 0.0439°). Un pequeño monto de código ensamblador puede hacer espejo y cambiar la tabla de seno para crear una tabla completa de seno/coseno que tiene 13-bit de resolución angular y 17-bit de resolución de muestreo: ' Obtiene seno/coseno...
  • Página 403: Indice Alfabético En Inglés

    ĺndice Indice Alfabético en Inglés ADDS, 282 ADDSX, 283–85 ADDX, 286–87 _CLKFREQ (spin), 70–71 AND, 288 _CLKMODE (spin), 73–76 ANDN, 289 _FREE (spin), 118 Binary operators, 268 _STACK (spin), 216 Branching, 263, 290, 315, 327, 380, 404 _XINFREQ (spin), 253–54 CALL, 290–92 CLKSET, 293 CMP, 294–95...
  • Página 404 ĺndice Instruction field, 270 Process control, 261, 332, 334, 336, 338, 408, JMP, 327–28 409, 410, 411 JMPRET, 329–31 RAM, cog, 257 Label field, 269 RCL, 369 Launching into a cog, 83, 88, 110 RCR, 370 Literal indicator, #, 257, 259, 400 RDBYTE, 371 Local label, 260 RDLONG, 372...
  • Página 405 ĺndice Constant ‘=’, 159 Of larger symbols, 58 Intermediate, 158 Range of, 55 Variable ‘:=’, 160 Reading/writing, 56, 371, 414, 415, 416 Assignment / normal operators, 156 Variable declaration, 55 BYTE (spin), 54–59 BYTEFILL (spin), 60 BYTEMOVE (spin), 61 Bases, numerical, 47 Binary / Unary operators, 156 Binary indicator, %, 221, 400 Binary operators (asm), 268...
  • Página 406 ĺndice RAM, 257 Current draw (spec), 16 RAM (spec), 16 Current source/sink (spec), 15, 16 RAM Map (figure), 23 Registers (table), 374 Start, 82–83, 85–89, 308 Stop, 90, 310 DAC, 102 Structure, 20–21, 20–21, 20–21 DAT (spin), 106–10 Cog-Hub interaction, 21 Data Cog-Hub Interaction (figure), 25 Declaring bytes, 55...
  • Página 407 ĺndice Enumerations, 94 HUBOP (asm), 321 Errata, 3 Example Data in Memory (table), 107 Exiting a method, 198 Expression workspace, 154 I/O pins, 26 External clock speed (spec), 16 Rules, 112 I/O pins (spec), 15, 16 I/O Sharing Examples (table), 27 ID of cog, 81, 307 FALSE, 100 IEEE-754, 117...
  • Página 408 ĺndice Limit Minimum ‘#>’, ‘#>=’, 166 Main RAM, 31 Main RAM/ROM (spec), 16 Linear Feedback Shift Register (LFSR), 170 List delimiter (,), 222 Main ROM, 32 Literal indicator (asm), #, 257, 259, 400 Math function tables, 421 Local label (asm), 260 Math/Logic Operators (table), 155 Local label indicator (asm), :, 260, 401 MAX (asm), 339...
  • Página 409 ĺndice Mutually exclusive resource, 22, 24 ? (Random), 170 MUXC (asm), 347 @ (Symbol Address), 184 MUXNC (asm), 348 @@ (Object Address Plus Symbol), 185 MUXNZ (asm), 350 ^, ^= (Bitwise XOR), 177 MUXZ (asm), 351 ^^ (Square Root), 167 |, |= (Bitwise OR), 176 || (Absolute Value), 167 |<...
  • Página 410 ĺndice Package types, 14–15 Pin descriptions, 15 Package types, 14–15 Pinout, 14–15 PAR (asm), 23, 365–66, 365–66, 374 Power up, 18 PAR (spin), 23, 190–91, 190–91, 214 Run-time procedure, 18 Parameter list designators, ( ), 222 Shared resources, 22 Pause execution, 233 Specifications, 16 Version, 67 Phase registers, 367...
  • Página 411 ĺndice Bytes of main memory, 56, 371, 414, 415, 416 Return value, 195 Return value separator, :, 222 Longs of main memory, 140, 372 Words of main memory, 373 REV (asm), 381 Read-only registers, 23, 305–6 Reverse, Bitwise ‘><’, ‘><=’, 174 REBOOT (spin), 200 ROL (asm), 382 Registers, 266, 305...
  • Página 412 ĺndice _FREE, 118 LONGMOVE, 145 _STACK, 216 LOOKDOWN, LOOKDOWNZ, 146–47 _XINFREQ, 253–54 LOOKUP, LOOKUPZ, 148–49 ABORT, 49–52 Memory, 54, 60, 61, 138, 144, 145, 146, 148, AND, 122 217, 220, 243, 252 Block designators, 40, 91, 151 NEGX, 100, 101 BYTE, 54–59 NEXT, 150 BYTEFILL, 60...
  • Página 413 ĺndice WORD, 243–50 \ (abort trap), 222 WORDFILL, 251 **, **= (Multiply, Return High), 164 WORDMOVE, 252 *, *= (Multiply, Return Low), 164 XINPUT, 100, 101 , (list delimiter), 222 XTAL1, 100, 101 -, -= (Subtract), 161 XTAL2, 100, 101 .
  • Página 414 ĺndice OR, OR= (Boolean OR), 179 Bitwise XOR, 177 Symbols (table), 221–22, 221–22, 221–22 Tutorial Synchronized delay, 234 Programming, 11 Synchronized Delay Timing (figure), 236 Syntax definitions (asm), 269 System Clock speed (spec), 16 System counter, 305 Unary / binary operators, 156 System Counter, 23 Unary operators (asm), 266 Underscore, _, 221, 400...
  • Página 415 ĺndice Word XI capacitance, 29 Data declaration, 245 XINPUT, 29, 30, 73, 100, 101 Memory type, 16, 243 XO (pin), 15 Of larger symbols, 249 XOR (asm), 26 Range of, 244 XOR, Bitwise ‘^’, ‘^=’, 177 Reading/writing, 373 XOUT resistance, 29 Variable declaration, 244 XTAL1, 29, 73, 100, 101 WORD (spin), 243–50...

Este manual también es adecuado para:

Propeller p8x32a-d40Propeller p8x32a-q44Propeller p8x32a-m44

Tabla de contenido