Stap 3: ESTRUCTURA generaal DE UN PROGRAMA
ESTRUCTURA GENERAAL DE UN PROGRAMA
Ya teniendo una herramienta basica para gestion del PAC, se procedio een indagar un poco mas nl como es la estructura de un programa para PAC de Opto22.La informacion obtenida fue la siguiente:
Los archivos con extensie .crn1, .crn2, .crn3, deben tener todos como
nombre como se "bautizo" el programa. * El archivo .crn1 contains una linea: bestandsnaam. " PNAME ";" donde PNAME es el nombre con que se "bautizo el programa. Las otras lineas de este archivo geen cambiaron nunca con diferentes programas que se crearonEl archivo .crn2 contains los meest de las "and" que conforman un
programa, las variabelen que se utilizan, y la asignacion de dennen I/OEl archvo .crn3 inicializa las tarra, las variabelen y el hardware de ik / 0
Debera existir VN archivo con extensie .ccd para cada una de las tarra
que conforman el programa, cuyo nombre es el que aparece nl el archivo .crn2
Se desarrollo un programa ejemplo "PARPADEO", que cuenta con dos and: una enciende y apaga una salida digitale e incrementa una variabele contador, la otra tarea revisa si la variabele es deelbaar exactamente entre 5 (modulo 5) y enciende el leidde cuando esta condicion es valida, de lo contrario, lo apagara.
PARPADEO.crn1
Nl este archivo puede notarse la linea de codigo donde esta el nombre del programa, "PARPADEO". Las demas lineas parecen algun tipo de asignacion de espacios de memoria para el hardware, variabelen e I/O. Geen se notaron cambios nl estas lineas para diferentes programas hechos y analizados.
_END NIEUWE $$$. RUN
: BESTANDSNAAM. " PARPADEO ";"
1 0 $VAR * _HSV_SEMA
1024 0 $VAR * _HSV_TEMP
200 0 $VAR * _HSV_INIT_IO
0 IVAR ^ _HNV_INIT_IO
PARPADEO.crn2
Nl este archivo se encontraron tres cosas:
-Tarra que conforman el programa: LaptopBat, parpadeolento, _INI_IO. PowerUp es una tarea que viene por defecto, neen puede ser renombrada, ni borrada. parpadeolento fue una tarea creada nl el programa e _INIT_IO probablemente es una tarea interna encargada de inicializar el hardware automaticamente al iniciar un programa
-Variabelen que se utilizaron en el programa: variablecontador y variablemodulo
-Alias de los pines del hardware a meest mas amigables nl el programa, nl este caso los pines digitales 0 y 7 fueron asignados een los alias: SALIDA_DIGITAL_1 y SALIDA_DIGITAL_4
0 taak & _INIT_IO
0 taak & Powerup
0 taak & parpadeolento
0 IVAR ^ variablecontador
0 IVAR ^ variablemodulo
$0000000000000000... 32769 1.000000 0.010000 0.000000 2001 $7F000001 0 MBOARD % RACK_PROPIO SPOINT 0.0 UITGANG 0% RACK_PROPIO
0 PUNT ~ SALIDA_DIGITAL_1
SPOINT 0.0 OUTPUT 7% RACK_PROPIO
0 PUNT ~ SALIDA_DIGITAL_4
PARPADEO.crn3
Este archivo es un poco mas largo. Al parecer nl la parte inicial se crean se agrupan las tarra, los diferentes tipos de variabelen, nl pakket y is el laatste se puede ver la inicializacion de las variabelen variablecontador y variablemodulo een 0. Tambien puede notarse que por defecto los pines digitales estan configurados como entrada '0', y los que seran usados como salida debera escribirse un '1' ($... 0081 dennen 0 y 7)
: W_INIT_IO
CONFIG_PORTS
$0000000000000081... % RACK_PROPIO MAAKT HET MOGELIJK!
"% RACK_PROPIO (1/1)" * $MOVE 0 _HSV_INIT_IO ^ _HNV_INIT_IO
% RACK_PROPIO INSCHAKELEN
"Initialiseren van de variabelen" * _HSV_INIT_IO $MOVE
0 ^ variablecontador
0 ^ variablemodulo
"" * _HSV_INIT_IO $MOVE
Archivos de tarra (powerup.ccd, parpadeo.ccd)
Nl estos archivos se encuentra el codigo del programa, para cada una de las and programadas. Nl cada archivo se encuentra dos tipos de cosas, is el definitieve pueden vers el listado de cada uno de los "Block" de codigo:
T: T0
DUMMY
0_0
0_1
0_3
0_5
0_7
0_10
T;
& Powerup ' T0 SETTASK
Cada uno de estos "Block" de codigo se encuentra numerado a_b donde a, es el numero de la tarea y b el "id" de dicho bloque de codigo dentro de esta tarea. Estos numeros de Block cumple con los numeros de los Block mostrados nl la permite nativa y probablemente zoon usados para realizar and de depuracion paso een paso por Block. Un ejemplo de un bloque de codigo es el siguiente
: 1_1
WAAR
1 LIJN. NUM
↑ variablemodulo
1 <
LAND
ALS-4 ANDERS SPRINGEN -3 KLIK;
Puede notarse al comienzo la numeracion del bloque antecedida por: (dos puntos). Luego se ve la Instrucción lijn. NUM antecedida por un numero de linea. Estos numeros de linea corresponde con los numeros de linea de la permite nativa y probablemente zoon usados para realizar and de depuracion paso een paso por lineas.
Puede notarse que parte del codigo se asemeja een FORTH nl donde primero se nombran los operandos y finalmente se opera con ellos.
El bloque finaliza siempre con una Instrucción sprong precedida de; (punto y coma). Estos JUMP geen zoon saltos absolutos, sino relativos.