Kanske FORTH med Opto22 PAC och Linux (3 / 4 steg)
Steg 3:
ALLMÄN STRUKTUR FÖR ETT PROGRAM
Nu har ett mycket grundläggande PAC verktyg, kontroll strategi filerna har studerats i detalj, och den information som samlats in är följande:
- Alla filer med tillägget .crn1, .crn2, .crn3, bör ha samma namn som programmet "main"
- .crn1 filen innehåller raden: FILENAME. " PNAME "; där är PNAME "main" programnamnet. Resten av raderna i filen aldrig ändras när olika program har skapats
- .crn2 filer innehålla uppgifter eller "diagram" än komponerar ett program, variabler som ska användas och i/o pin övergår
- .crn3 filer innehåller initieringar för: uppgifter, variabler och I/O hårdvara
- Det bör finnas en .ccd fil för varje uppgift som komponerar ett program, namnet bör sammanfalla med den information som finns i filen .crn2
En strategi för provet "BLINK" skapades. Den består av två uppgifter: en växlar en digital utsignal och ökar en räknare för varje sekund. För det andra se om räknaren är exakt delbar 5 (modulo 5) och vänder på en digital utgång om tillståndet är giltigt, om inte stänger av
BLINK.crn1
I den här filen finns det en linje där ligger namnet på programmet "BLINK". Resten av raderna ser ut som någon form av minne utrymme övergår för variabler och i/o. Inga ändringar märktes i dessa linjer med olika nedladdade och analyserat program.
_END NYA $$$. KÖRA
: FILENAME. " BLINK ";
1 0 $VAR * _HSV_SEMA
1024 0 $VAR * _HSV_TEMP
200 0 $VAR * _HSV_INIT_IO
0 IVAR ^ _HNV_INIT_IO
BLINK.crn2
I den här filen hittades tre saker:
Aktiviteter som komponera programmet: Powerup, slowblink, _INI_IO. PowerUp kan inte är standard uppgift, bytt namn eller tagits bort. slowblink skapades i programmet tillverkare, och _INIT_IO är förmodligen är en intern uppgift som initierar maskinvara automatiskt.
- Variabler som används i programmet: countervar och modvar
I/O hårdvara pin alias: I detta fall digitala stift 0 och 3 tilldelades alias: DIGITAL_OUT_1 och DIGITAL_OUT_4
_INIT_IO & 0 aktivitet
0 uppgift & Powerup
Slowblink & 0 aktivitet
0 IVAR ^ countervar
0 IVAR ^ modvar
$0000000000000000... 32769 1.000000 0.010000 0.000000 2001 $7F000001 0 MBOARD % SELF_RACK SPOINT 0,0 UTGÅNG 0% SELF_RACK
0 POÄNG ~ DIGITAL_OUT_1
SPOINT 0,0 UTGÅNG 3% SELF_RACK
0 POÄNG ~ DIGITAL_OUT_4
BLINK.crn3
Denna fil är lite längre än tidigare. Verkar som i den första delen, aktiviteter och alla typer av variabler är grupperade i matriser och nära slutet initieringen av countervar och modvar till 0 är synliga. Observera också att digital stiften av standard ingångar "0", och de som kommer att användas som utgångar måste skrivas till "1" ($... 0009 stift 0 och 3)
: W_INIT_IO CONFIG_PORTS $0000000000000009... % SELF_RACK KAN!
"% SELF_RACK (1/1)" * _HSV_INIT_IO $MOVE 0 ^ _HNV_INIT_IO
% SELF_RACK AKTIVERAR
"Initiera variabler" * _HSV_INIT_IO $MOVE
0 ^ countervar
0 ^ modvar
"" * _HSV_INIT_IO $MOVE
Aktivitetsfiler (Powerup.ccd, slowblink.ccd)
I dessa filer ligger programkoden, för varje uppgift programmeras. Det finns två saker här: kodblock och koden blockeringslistan i slutet.
T: T0
DUMMY
0_0
0_1
0_3
0_5
0_7
0_10
T; & Powerup "T0 SETTASK
Varje block är märkt Kristoffer, där en är aktivitetens nummer och b är en "block id" inuti den särskilda uppgiften. Blockera nummer sammanfaller med de block nummer som visas i tillverkarens ansökan och används förmodligen för block för block felsökningsläge.
Följande är ett exempel på ett kodblock:
: 1_1
SANNA
1 RAD. NUM
^ modvar
1 <
MARK
OM-4 ANNARS HOPPA -3 SEDAN;
Varje etikett föregås av ett kolon (:), nästa linje. NUM instruktion föregås av ett radnummer. Denna linje nummer sammanfaller med radnummer visas i tillverkarens utveckling app och används förmodligen för rad-för-rad felsökningsläget
Vissa delar av koden, liknar fram speciellt om-uttrycket där villkoret var före ordet "Om"!
Ett block avslutas med en hoppa instruktion följt av ett semikolon (;). HOPPA instruktioner är relativa, inte absolut.