Stap 3:
ALGEMENE STRUCTUUR VAN EEN PROGRAMMA
Nu, met een zeer fundamentele PAC managementtool, de strategie-beheerbestanden werden in detail bestudeerd, en de info verzameld is de volgende:
- Alle bestanden met de extensie .crn1, .crn2, .crn3, moeten dezelfde naam als de "belangrijkste" programma
- .crn1 bestand de regel bevat: bestandsnaam. " PNAME ";" waar PNAME heet de "belangrijkste" programma. De rest van de regels van dit bestand nooit veranderde toen verschillende programma's zijn gemaakt
- .crn2-bestanden bevatten de namen van taken of "charts" dan componeert een programma, de variabelen worden gebruikt en de I/O pin toekennen
- .crn3 bestanden bevat initialisaties voor: taken, variabelen en I/O hardware
- Er moet een .ccd-bestand voor elke taak die een programma componeert, de naam moet overeenkomen met de gegevens in het bestand .crn2
Een strategie voor toegangsbeheer voor monster "BLINK" werd gemaakt. Het is samengesteld uit twee taken: een wordt er een digitale uitgang geschakeld en verhoogt een teller elke seconde. In het tweede voorbeeld kijken als de teller is precies deelbaar door 5 (modulo 5) en een digitale uitgang ingeschakeld als de voorwaarde geldig is, zo niet uitgeschakeld
BLINK.crn1
In dit bestand is er een lijn waar ligt de naam van het programma "BLINK". De rest van de lijnen lijken een soort geheugen ruimte toekennen voor variabelen en I/O. Geen veranderingen werden opgemerkt in die lijnen met verschillende programma's voor gedownloade en geanalyseerd.
_END NIEUWE $$$. RUN
: BESTANDSNAAM. " KNIPPEREN ";"
1 0 $VAR * _HSV_SEMA
1024 0 $VAR * _HSV_TEMP
200 0 $VAR * _HSV_INIT_IO
0 IVAR ^ _HNV_INIT_IO
BLINK.crn2
In dit bestand bleken drie dingen:
Taken die deel uitmaken van het programma: LaptopBat, slowblink, _INI_IO. PowerUp kan niet is de standaard taak, worden hernoemd of verwijderd. slowblink is gemaakt in het programma van de fabrikant, en _INIT_IO is waarschijnlijk een interne taak die hardware automatisch geïnitialiseerd is.
- Variabelen die worden gebruikt in het programma: countervar en modvar
I/O hardware pin alias: In dit specifieke geval digitale pinnen 0 en 3 waren toegewezen alias: DIGITAL_OUT_1 en DIGITAL_OUT_4
0 taak & _INIT_IO
0 taak & Powerup
0 taak & slowblink
0 IVAR ^ countervar
0 IVAR ^ modvar
$0000000000000000... 32769 1.000000 0.010000 0.000000 2001 $7F000001 0 MBOARD % SELF_RACK SPOINT 0.0 UITGANG 0% SELF_RACK
0 PUNT ~ DIGITAL_OUT_1
SPOINT 0.0 UITVOER 3% SELF_RACK
0 PUNT ~ DIGITAL_OUT_4
BLINK.crn3
Dit bestand is een klein beetje langer dan de vorige. Het lijkt erop dat in het eerste deel, taken en alle soorten variabelen zijn gegroepeerd in matrices en in de buurt van de eind-initialisatie van countervar en modvar op 0 zichtbaar zijn. Let ook op dat de digitale pinnen door standaard ingangen "0", en degenen die zal worden gebruikt als uitgang moeten worden geschreven op "1" ($... 0009 pinnen 0 en 3)
: W_INIT_IO CONFIG_PORTS $0000000000000009... % SELF_RACK MAAKT HET MOGELIJK!
"% SELF_RACK (1/1)" * $MOVE 0 _HSV_INIT_IO ^ _HNV_INIT_IO
% SELF_RACK INSCHAKELEN
"Initialiseren van de variabelen" * _HSV_INIT_IO $MOVE
0 ^ countervar
0 ^ modvar
"" * _HSV_INIT_IO $MOVE
Taakbestanden (Powerup.ccd, slowblink.ccd)
In deze bestanden bevindt zich de programma-code, voor elke taak die geprogrammeerd. Er zijn twee dingen hier: codeblokken, en blok codelijst in de buurt van het einde.
T: T0
DUMMY
0_0
0_1
0_3
0_5
0_7
0_10
T; & Powerup ' T0 SETTASK
Elk blok heet a_b, waar een nummer van de taak is en b is een "blok id" in die bepaalde taak. Blok nummers samenvallen met de nummers van de blok weergegeven in de toepassing van de fabrikant en waarschijnlijk worden gebruikt voor de foutopsporingsmodus-bloksgewijs.
Hieronder volgt een voorbeeld van een blok van de code:
: 1_1
WAAR
1 LIJN. NUM
↑ modvar
1 <
LAND
ALS-4 ANDERS SPRINGEN -3 KLIK;
Elk etiket wordt voorafgegaan door een dubbele punt (:), de volgende regel. NUM instructie voorafgegaan door een regelnummer. Dit regelnummer samenvalt met regelnummers weergegeven in van de fabrikant ontwikkeling app en waarschijnlijk worden gebruikt voor lijn door lijn foutopsporingsmodus
Sommige delen van de code, lijken weer speciaal de IF-statement waar de voorwaarde was voor het woord 'Als'!
Een blok is voltooid met een JUMP-instructie gevolgd door een puntkomma (;). JUMP instructies zijn relatieve, niet absoluut.