Paso 3:
ESTRUCTURA GENERAL DE UN PROGRAMA DE
Ahora, tener una herramienta de gestión muy básica de PAC, los ficheros de estrategia de control fueron estudiados en detalle, y la información recogida es la siguiente:
- Todos los archivos con extensión .crn1, .crn2, .crn3, deben tener el mismo nombre que el programa "principal"
- el archivo .crn1 contiene la línea: nombre de archivo. " PNAME "; donde PNAME es el nombre de "principal" del programa. El resto de las líneas de este archivo nunca cambiada cuando se crearon diferentes programas
- los archivos .crn2 contienen los nombres de tareas o "cartas" que compone un programa, las variables a utilizar y la entrada-salida del perno asignación
- .crn3 archivos contiene código de inicialización para: tareas, variables y hardware entrada-salida
- Debe haber un archivo *.CCD para cada tarea que compone un programa, el nombre debe coincidir con la información contenida en el archivo .crn2
Se creó una estrategia de control de la muestra "Parpadear". Se compone de dos tareas: una alterna una salida digital e incrementa un contador cada segundo. El segundo se mira si el contador es exactamente divisible por 5 (modulo 5) y se convierte en una salida digital si la condición es válida, si no lo apaga
BLINK.crn1
En este archivo hay una línea donde se encuentra el nombre del programa "Parpadear". El resto de las líneas parecen algún tipo de asignación de espacio de memoria para variables y de la entrada-salida. No hay cambios se observaron en esas líneas con diferentes programas descargados y analizados.
_END NUEVA $$$. EJECUTAR
: NOMBRE DE ARCHIVO. " PARPADEAR ";
1 $VAR 0 * _HSV_SEMA
1024 $VAR 0 * _HSV_TEMP
200 0 $VAR * _HSV_INIT_IO
IVAR 0 ^ _HNV_INIT_IO
BLINK.crn2
En este archivo se encontraron tres cosas:
Tareas que componen el programa: Powerup, slowblink, _INI_IO. Encendido es la tarea predeterminada, no puede ser retitulado ni eliminado. slowblink fue creado en el programa del fabricante, y _INIT_IO es probablemente es una tarea interna que inicializa el hardware automáticamente.
- Variables utilizadas en el programa: countervar y modvar
Alias de pin I/O hardware: en este caso los pines digitales 0 y 3 fueron asignados alias: DIGITAL_OUT_1 y DIGITAL_OUT_4
TAREA 0 & _INIT_IO
TAREA 0 & encendido
TAREA 0 & slowblink
IVAR 0 ^ countervar
IVAR 0 ^ modvar
$0000000000000000... 32769 1.000000 0.000000 0,010000 2001 $7F000001 MBOARD 0% SELF_RACK SPOINT 0.0 0% SELF_RACK DE SALIDA
PUNTO 0 ~ DIGITAL_OUT_1
SPOINT 0.0 SALIDA 3% SELF_RACK
PUNTO 0 ~ DIGITAL_OUT_4
BLINK.crn3
Este archivo es un poco más largo que el anterior. Parece que en la parte inicial, tareas y todo tipo de variables se agrupa en matrices y cerca de la inicialización de fin de countervar y modvar a 0 es visibles. También observe que los pines digitales son por entradas por defecto "0", y los que se utilizará como salidas se deben escribir "1" ($... 0009 pins 0 y 3)
: CONFIG_PORTS W_INIT_IO $0000000000000009... % SELF_RACK PERMITE!
«% SELF_RACK (1/1) "* _HSV_INIT_IO $MOVE 0 ^ _HNV_INIT_IO
% SELF_RACK PERMITEN
«Inicialización de variables» * _HSV_INIT_IO $MOVE
0 ^ countervar
0 ^ modvar
««* _HSV_INIT_IO $MOVE
Archivos de la tarea (Powerup.ccd, slowblink.ccd)
En estos archivos se encuentra el código del programa, para cada tarea programada. Hay dos cosas aquí: bloques de código y lista del bloque de código casi al final.
T: T0
DUMMY
0_0
0_1
0_3
0_5
0_7
0_10
T; y encendido ' T0 SETTASK
Cada bloque es marcado a-b, donde una es tarea número y b es un "identificador de bloque" dentro de esa particular tarea. Bloque números coinciden con los números de bloque se muestra en la aplicación del fabricante y probablemente se utilizan para el modo depuración de bloque por bloque.
El siguiente es un ejemplo de un bloque de código:
: 1_1
VERDADERA
1 LÍNEA. OUl
^ modvar
1 <
TIERRA
SI-4 OTRO -3 DESPUÉS DEL SALTO;
Cada etiqueta está precedido por dos puntos (:), a continuación de línea. Instrucción número precedida por un número de línea. Este número de línea coincide con los números de línea se muestra en la aplicación de desarrollo de los fabricantes y se utilizan probablemente para el modo depuración de línea por línea
Algunas porciones del código, se asemejan a especialmente a la instrucción IF donde la condición estaba antes de la palabra "IF".
Un bloque termina con una instrucción de salto, seguida de un punto y coma (;). Instrucciones de salto son relativos, no absolutos.